pmw-5.22/0000755000222100022210000000000014541067540010341 5ustar ph10ph10pmw-5.22/LICENCE0000644000222100022210000004312614541067540011334 0ustar ph10ph10 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "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 QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. pmw-5.22/PSheader0000644000222100022210000003356214541067540011770 0ustar ph10ph10%%Header file for PMW PostScript output % Last modified for Acorn version: 23 February 1997 % Last modified for original Linux version: 28 August 2003 % Re-jigged for Unicode and more than 256 chars per font support: August 2005 % Added extra functions for right-to-left printing: January 2009 % Added function for drawing staves: January 2012 % Made top comment above a %% comment: January 2012 % Updated for remaining Latin Extended-A characters: December 2013 % Removed redundant FontDirectory check which was causing problems for one % user and is clearly not useful: June 2022 % Updated for custom font encoding: July 2022 % Modified custom font encoding to modify rather than replace: May 2023 % Allow custom encoding to apply to fonts that use Standard Encoding: May 2023 % Add abbreviation for setrgbcolor: October 2023 % We are going to bind each text font twice, to give us 512 characters to play % with. This is sufficient to encode all existing characters in the standard % fonts. For fonts that use Adobe's standard encoding, we modify the encoding % using the following two vectors before applying any custom encoding. The % first 256 characters are encoded with the Unicode encoding. /LowerEncoding 256 array def LowerEncoding 0 [ % 00 - 0F /currency/currency/currency/currency /currency/currency/currency/currency /currency/currency/currency/currency /currency/currency/currency/currency % 10 - 1F /currency/currency/currency/currency /currency/currency/currency/currency /currency/currency/currency/currency /currency/currency/currency/currency % 20 - 2F /space/exclam/quotedbl/numbersign /dollar/percent/ampersand/quotesingle /parenleft/parenright/asterisk/plus /comma/hyphen/period/slash % 30 - 3F /zero/one/two/three /four/five/six/seven /eight/nine/colon/semicolon /less/equal/greater/question % 40 - 4F /at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O % 50 - 5F /P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft /backslash/bracketright/asciicircum/underscore % 60 - 6F /grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o % 70 - 7F /p/q/r/s/t/u/v/w/x/y/z/braceleft /bar/braceright/asciitilde/currency % 80 - 8F /currency/currency/currency/currency /currency/currency/currency/currency /currency/currency/currency/currency /currency/currency/currency/currency % 90 - 9F /currency/currency/currency/currency /currency/currency/currency/currency /currency/currency/currency/currency /currency/currency/currency/currency % A0 - AF /space/exclamdown/cent/sterling /currency/yen/brokenbar/section /dieresis/copyright/ordfeminine/guillemotleft /logicalnot/hyphen/registered/macron % B0 - BF /degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/bullet /cedilla/onesuperior/ordmasculine/guillemotright /onequarter/onehalf/threequarters/questiondown % C0 - CF /Agrave/Aacute/Acircumflex/Atilde /Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis /Igrave/Iacute/Icircumflex/Idieresis % D0 - DF /Eth/Ntilde/Ograve/Oacute /Ocircumflex/Otilde/Odieresis/multiply /Oslash/Ugrave/Uacute/Ucircumflex /Udieresis/Yacute/Thorn/germandbls % E0 - EF /agrave/aacute/acircumflex/atilde /adieresis/aring/ae/ccedilla /egrave/eacute/ecircumflex/edieresis /igrave/iacute/icircumflex/idieresis % F0 - FF /eth/ntilde/ograve/oacute /ocircumflex/otilde/odieresis/divide /oslash/ugrave/uacute/ucircumflex /udieresis/yacute/thorn/ydieresis ]putinterval % The next encoding vector uses Unicode for the first 128 characters (Latin % Extended-A). Not all of these characters are in older Adobe-encoded fonts. % The remaining code points in the vector are used arbitrarily for the % remaining Adobe standardly encoded characters. This latter part of the % encoding must be kept in step with the appropriate table in the code. /UpperEncoding 256 array def UpperEncoding 0 [ % 100 - 10F /Amacron/amacron/Abreve/abreve /Aogonek/aogonek/Cacute/cacute /Ccircumflex/ccircumflex/Cdotaccent/cdotaccent /Ccaron/ccaron/Dcaron/dcaron % 110 - 11F /Dcroat/dcroat/Emacron/emacron /Ebreve/ebreve/Edotaccent/edotaccent /Eogonek/eogonek/Ecaron/ecaron /Gcircumflex/gcircumflex/Gbreve/gbreve % 120 - 12F /Gdotaccent/gdotaccent/Gcommaaccent/gcommaaccent /Hcircumflex/hcircumflex/Hbar/hbar /Itilde/itilde/Imacron/imacron /Ibreve/ibreve/Iogonek/iogonek % 130 - 13f /Idotaccent/dotlessi/IJ/ij /Jcircumflex/jcircumflex/Kcommaaccent/kcommaaccent /kgreenlandic/Lacute/lacute/Lcommaaccent /lcommaaccent/Lcaron/lcaron/Ldot % 140 - 14F /ldot/Lslash/lslash/Nacute /nacute/Ncommaaccent/ncommaaccent/Ncaron /ncaron/napostrophe/Eng/eng /Omacron/omacron/Obreve/obreve % 150 - 15F /Ohungarumlaut/ohungarumlaut/OE/oe /Racute/racute/Rcommaaccent/rcommaaccent /Rcaron/rcaron/Sacute/sacute /Scircumflex/scircumflex/Scedilla/scedilla % 160 - 16F /Scaron/scaron/Tcedilla/tcedilla /Tcaron/tcaron/Tbar/tbar /Utilde/utilde/Umacron/umacron /Ubreve/ubreve/Uring/uring % 170 - 17F /Uhungarumlaut/uhungarumlaut/Uogonek/uogonek /Wcircumflex/wcircumflex/Ycircumflex/ycircumflex /Ydieresis/Zacute/zacute/Zdotaccent /zdotaccent/Zcaron/zcaron/longs % -------------------------------------------------------------------- % These are the remaining characters in the Adobe standard encoding, % in alphabetic order (seems as good as any other). % -------------------------------------------------------------------- % 180 - 18F /Delta/Euro/Scommaaccent/Tcommaaccent /breve/caron/circumflex/commaaccent /dagger/daggerdbl/dotaccent/ellipsis /emdash/endash/fi/fl % 190 - 19F /florin/fraction/greaterequal/guilsinglleft /guilsinglright/hungarumlaut/lessequal/lozenge /minus/notequal/ogonek/partialdiff /periodcentered/perthousand/quotedblbase/quotedblleft % 1A0 - 1AF /quotedblright/quoteleft/quoteright/quotesinglbase /radical/ring/scommaaccent/summation /tcommaaccent/tilde/trademark/infinity ]putinterval % 1B0 - 1FF 177 1 255 {UpperEncoding exch /.notdef put} for % Straightforward abbreviations /F/fill load def /GS/gsave load def /GR/grestore load def /Mt/moveto load def/Lt/lineto load def /R/rotate load def /Rl/rlineto load def/Rm/rmoveto load def /Ct/curveto load def/Rc/rcurveto load def /S/stroke load def /Slw/setlinewidth load def /Slc/setlinecap load def /Slj/setlinejoin load def /Sc/setrgbcolor load def /Sg/setgray load def /Sd/setdash load def /T/translate load def % Additional control values for slurs: normally zero /clx 0 def/cly 0 def/crx 0 def/cry 0 def % For EPS files we must define *all* variables before defining the % procedures (PRM p. 715) in case they are previously defined in the enclosing % PostScript program. %EPS /a 0 def /b 0 def /basefont 0 def /blen 0 def /c 0 def %EPS /encname 0 def /g 0 def /gg 0 def /hascustom 0 def /hasstandard 0 def %EPS /n 0 def /newenc 0 def /newfont0 0 def /newfont1 0 def /savename 0 def %EPS /t 0 def /t1 0 def /t2 0 def /u 0 def /v 0 def /w 0 def %EPS /x 0 def /x0 0 def /x1 0 def /x2 0 def %EPS /y 0 def/y0 0 def /y1 0 def /y2 0 def /z 0 def % ----------------------------------------------------------------------------- % Function to find a font and re-encode it if it has the standard and/or a % custom encoding. On the stack we should have two names, for the two % differently encoded versions of the font, followed by the font name. When the % font is not re-encoded, the two fonts will end up the same. % Save the font name, find the font, save it, check for standard encoding. /inf{dup /savename exch def findfont dup /basefont exch def /Encoding get StandardEncoding eq /hasstandard exch def % Look for a custom encoding. We get the length of the name, make a string of % that length + 4, put the name at the start of that string and add "EncU". % Then test for the existence of that encoding. savename length /blen exch def /encname blen 4 add string def savename encname cvs pop encname blen (EncU) putinterval userdict encname cvn known /hascustom exch def % If the font does not use standard encoding, nor is there a custom encoding % for it, just bind the two names to the base font. hasstandard hascustom or not { basefont def basefont def } % The font has Standard Encoding and/or there is a custom encoding. In both % cases we start by making two new font dictionaries of the same length as the % original, into which we copy the original, omitting only the FIDs. { basefont dup dup maxlength dup dict/newfont0 exch def dict/newfont1 exch def {1 index/FID eq{pop pop}{newfont0 3 1 roll put}ifelse}forall {1 index/FID eq{pop pop}{newfont1 3 1 roll put}ifelse}forall % If the font has Standard Encoding, replace it with PMW's default encoding. hasstandard { newfont1 /Encoding UpperEncoding put newfont0 /Encoding LowerEncoding put }if % If there is a custom encoding, set it for each font, then copy from the % old encoding any values for which the custom encoding is unset. The variable % encname already contains the font name with EncU appended. hascustom { newfont1/Encoding get /oldenc exch def userdict encname cvn get /newenc exch def 0 1 255 {dup newenc exch get /.notdef eq {dup oldenc exch get newenc 3 1 roll put}{pop}ifelse }for newfont1 /Encoding newenc put % Repeat for the lower encoding encname blen 3 add (L) putinterval newfont0/Encoding get /oldenc exch def userdict encname cvn get /newenc exch def 0 1 255 {dup newenc exch get /.notdef eq {dup oldenc exch get newenc 3 1 roll put}{pop}ifelse }for newfont0 /Encoding newenc put }if % Associate each new font with the relevant name. newfont1 dup definefont def newfont0 dup definefont def } ifelse }bind def % ----------------------------------------------------------------------------- % Font selection /ss{scalefont setfont}bind def % Transformed font selection /sm{makefont setfont}bind def % Reversed font selections /ssr{scalefont [-1 0 0 1 0 0] makefont setfont}bind def /smr{makefont [-1 0 0 1 0 0] makefont setfont}bind def % Print deep bar line: char-height, ybot, char, x, ytop /b{/y exch def/x exch def/w exch def/z exch def/v exch def {x y Mt w show y z gt{/y y v sub def y z lt{/y z def}if} {exit}ifelse}loop}bind def % Print brace: scale, x, ymid /br{gsave translate dup 0.11 gt {0.11}{dup 2.0 div 0.055 add}ifelse exch scale 2{0.0 0.0 Mt 100.0 20.0 -50.0 245.0 60.0 260.0 curveto -50.0 245.0 60.0 20.0 0.0 0.0 curveto fill 1.0 -1.0 scale}repeat grestore}bind def % Print alternate brace: scale, x, ymid /br2{gsave translate dup 0.11 gt {0.11}{dup 2.0 div 0.055 add}ifelse exch scale 2{0.0 0.0 Mt 95.0 40.0 -43.0 218.0 37.0 256.0 curveto -59.0 219.0 66.0 34.0 0.0 0.0 curveto fill 1.0 -1.0 scale}repeat grestore}bind def % Coordinate setup for slurs: x0 y0 x1 y1 "depth" /cc{/u exch def/y1 exch def/x1 exch def/y0 exch def/x0 exch def /w y1 y0 sub dup mul x1 x0 sub dup mul add sqrt 2 div def /v w 2 mul 3 div dup 10 gt {pop 10} if def x0 x1 add 2.0 div y0 y1 add 2.0 div translate y1 y0 sub x1 x0 sub atan rotate}bind def % Set up additional control for slurs: clx cly crx cry /cA{/cry exch def/crx exch def/cly exch def/clx exch def}bind def % Draw ordinary slur or tie in preset coordinate system /cd{w neg 0.05 moveto v w sub clx add u cly add w v sub crx add u cry add w 0.05 curveto w -0.05 lineto w v sub crx add u cry add 1 sub v w sub clx add u cly add 1 sub w neg -0.05 curveto closepath fill}bind def % Print tie or ordinary slur /cv{gsave cc cd grestore}bind def % Draw wiggly ordinary slur in preset coordinate system /cwd{w neg 0.05 moveto v w sub clx add u cly add w v sub crx add cry u sub w 0.05 curveto w -0.05 lineto w v sub crx add cry u sub 1 sub v w sub clx add u cly add 1 sub w neg -0.05 curveto closepath fill}bind def % Print wiggly ordinary slur /cvw{gsave cc cwd grestore}bind def % Print editorial marking on slur; trivial when the y control point movements % are equal; very messy otherwise. On stack: length-adjust, wiggle value (1, -1) /cem{dup 1 eq cly cry eq and{pop 0 u cly add 0.75 mul /t2 0 def} {/x1 v w sub clx add def /x2 w v sub crx add def /y1 u cly add def u mul cry add /y2 exch def /t 0.5 def % Put x value on stack; dx value in /t1 /a 2 w mul x1 x2 sub 3 mul add def /b x2 2 x1 mul sub w sub 3 mul def /c x1 w add 3 mul def a t mul b add t mul c add t mul w sub /t1 a 3 mul t mul b 2 mul add t mul c add def % Put y value on stack; dy value in /t2 /a y1 y2 sub 3 mul def /b 3 y2 mul 6 y1 mul sub def /c 3 y1 mul def a t mul b add t mul c add t mul /t2 a 3 mul t mul b 2 mul add t mul c add def }ifelse translate t2 0 ne {t2 t1 atan rotate} if 0 2 moveto 4 add neg 0 exch rlineto 0.4 Slw stroke}bind def % Print editorial slur /cve{gsave cc cd 0.8 1 cem grestore}bind def % Print wiggly editorial slur /cvwe{gsave cc cwd 0.8 -1 cem grestore}bind def % Print straight dashed line: x1 y1 x0 y0 width [dash1 dash2] % Do some device-specific stuff on the width, as this is used % for dotted bar lines, which must all look the same width. /dl{gsave 0 Sd 0 dtransform exch floor exch idtransform pop Slw Mt Lt stroke grestore}bind def % Print system bracket: x, ytop, ybot /k{/y1 exch def/y2 exch def/x exch def currentfont mf y2 y1 sub dup 16 gt {pop 16}if dup 1 sub /y exch def dup y2 exch sub /y2 exch def 16 div 10 mul ss x y2 Mt (\260) show {/y2 y2 y sub def y2 y1 le {exit}if x y2 Mt (B)show}loop x y1 Mt (\261)show setfont}bind def % Print straight line: x1 y1 x0 y0 width /l{Slw Mt Lt stroke}bind def % Print sequence of straight lines: xn yn ... count x0 y0 width /ll{Slw Mt 1 1 3 -1 roll{pop Lt}for stroke}bind def % Print beam: z x1 y1 x0 y0 /m{/y0 exch def/x0 exch def/y1 exch def/x1 exch def/z exch def x0 y0 Mt x1 y1 Lt x1 y1 z add Lt x0 y0 z add Lt fill}bind def % Print string relative to current point: string x y /rs{rmoveto show}bind def % Print string: string x y /s{moveto show}bind def % Print string at current point: string /sh{show}bind def % Print string relative to current point, widening spaces: string w x y /wrs{rmoveto 0 32 4 -1 roll widthshow}bind def % Print string, widening spaces: string w x y /ws{moveto 0 32 4 -1 roll widthshow}bind def % Print string at current point, widening spaces: string w /wsh{0 32 4 -1 roll widthshow}bind def % Print a stave: x y w t g n /ST{/n exch def/g exch def/t exch def/w exch def/y exch def/x exch def 1 1 n {pop x y transform round exch round exch itransform Mt w 0 Rl y g add /y exch def}for t Slw S}bind def % End of PostScript header for PMW pmw-5.22/MIDIperc0000644000222100022210000000317114541067540011662 0ustar ph10ph10# This file contains translations between names and MIDI "pitches" # for untuned percussion voices. Lines that begin with #, and blank # lines, are ignored. # The default file supplied with PMS contains associations that # correspond to the General MIDI specification. # Lines must begin with three digits, followed by a space, and then # the instrument name, without any trailing spaces. # The following appear on the Yamaha TG100: 029 scratch push 030 scratch pull 031 stick 032 click noise 033 metronome click 034 metronome bell # General MIDI: 035 acoustic bass drum 036 bass drum 1 037 side stick 038 acoustic snare 039 hand clap 040 electric snare 041 low floor tom 042 closed hi hat 043 high floor tom 044 pedal hi hat 045 low tom 046 open hi hat 047 low mid tom 048 hi mid tom 049 crash cymbal 1 050 high tom 051 ride cymbal 1 052 chinese cymbal 053 ride bell 054 tambourine 055 splash cymbal 056 cowbell 057 crash cymbal 2 058 vibraslap 059 ride cymbal 2 060 hi bongo 061 low bongo 062 mute hi conga 063 open hi conga 064 low conga 065 high timbale 066 low timable 067 high agogo 068 low agogo 069 cabasa 070 maracas 071 short whistle 072 long whistle 073 short guiro 074 long guiro 075 claves 076 hi wood block 077 low wood block 078 mute cuica 079 open cuica 080 mute triangle 081 open triangle # The following are not listed as General Midi but are on the # Casio CTK-650 keyboard (names invented): 082 shake 083 morris bells 084 drumsticks 085 short disc wipe 086 double disc wipe 087 long disc wipe # The following are on the Yamaha TG100: 082 shaker 085 castanets 086 taiko-drum high 087 taiko-drum low # End of MIDI names file. pmw-5.22/NOTICE0000644000222100022210000000140014541067540011240 0ustar ph10ph10PHILIP'S MUSIC WRITER --------------------- Copyright (c) 2003 - 2022 Philip Hazel This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -- pmw-5.22/Makefile.in0000644000222100022210000000532114541067540012407 0ustar ph10ph10# Top-level Makefile.in for PMW2. The building work is done by a separate # Makefile in the src directory, which gets passed settings from here. mkinstalldirs = $(SHELL) mkinstalldirs # These variables get set up by the configure script. CC=@CC@ CFLAGS=@CFLAGS@ LFLAGS=@LFLAGS@ SUPPORT_XML=@SUPPORT_XML@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ # The "$(DESTDIR) variable is normally expected to be empty, but can be # set to a "staging" directory in which the files will be installed. # This process is used by Linux distributions to prepare packages (rpm, # deb, ...). Do not remove! BINDIR=$(DESTDIR)/@prefix@/bin DATADIR=$(DESTDIR)/@prefix@/share/pmw MANDIR=$(DESTDIR)/@prefix@/man # BINDIR is the directory in which the pmw command is installed. # DATADIR is the directory in which the fontmetrics, the PostScript fonts, # and the PostScript header file are installed. # MANDIR is the directory in which the man pages are installed. # The compile commands can be very long. To make the output look better, # they are not normally echoed in full. To get full echoing, the caller # must set FULLECHO='' on the command line and call make with -e. We default # FULLECHO to '@' to suppress the full echo. Then define an abbreviation. FULLECHO = @ FE = $(FULLECHO) build:; @cd src; \ $(MAKE) all \ BINDIR=$(BINDIR) \ DATADIR=$(DATADIR) \ MANDIR=$(MANDIR) \ CC="$(CC)" \ CFLAGS="$(CFLAGS)" \ LFLAGS="$(LFLAGS)" \ SUPPORT_XML="$(SUPPORT_XML)" \ FE="$(FE)" \ $(MFLAGS) clean:; cd src; $(MAKE) clean distclean:; rm -f Makefile config.cache config.log config.status; \ cd src; $(MAKE) distclean test: build cd testdist; ./RunTests vtest: build cd testdist; ./RunTests valgrind # "Standard" name for testing is "check" check: test ; vcheck: vtest ; install: build $(mkinstalldirs) $(BINDIR) $(mkinstalldirs) $(DATADIR) $(mkinstalldirs) $(DATADIR)/fontmetrics $(mkinstalldirs) $(DATADIR)/macros $(mkinstalldirs) $(DATADIR)/psfonts $(mkinstalldirs) $(MANDIR) $(mkinstalldirs) $(MANDIR)/man1 $(INSTALL) src/pmw $(BINDIR)/pmw $(INSTALL_DATA) PSheader $(DATADIR) $(INSTALL_DATA) MIDIvoices $(DATADIR) $(INSTALL_DATA) MIDIperc $(DATADIR) $(INSTALL_DATA) macros/* $(DATADIR)/macros $(INSTALL_DATA) psfonts/PMW-Music.pfa $(DATADIR)/psfonts $(INSTALL_DATA) psfonts/PMW-Music.otf $(DATADIR)/psfonts $(INSTALL_DATA) psfonts/PMW-Alpha $(DATADIR)/psfonts $(INSTALL_DATA) fontmetrics/* $(DATADIR)/fontmetrics $(INSTALL_DATA) doc/pmw.1 $(MANDIR)/man1 ./post-install "$(BINDIR)" "$(DATADIR)" "$(MANDIR)" uninstall:; rm -rf \ $(BINDIR)/pmw \ $(DATADIR) \ $(MANDIR)/man1/pmw.1 # End pmw-5.22/README0000644000222100022210000000504514541067540011225 0ustar ph10ph10PHILIP'S MUSIC WRITER --------------------- Copyright (c) 2022 Philip Hazel DISCUSSION GROUP ---------------- There is a Google group mailing list for discussion of PMW issues. You can access the archives and also subscribe or manage your subscription here: https://groups.google.com/g/pmw_music UNIX AND UNIX-LIKE SYSTEMS -------------------------- I hope that this version of the program will run without problems on all Unix and Unix-like systems. To install PMW should just be a matter of typing: ./configure make make install You will probably need root privileges in order to run the install command, unless your system gives you write access to the relevant directories. There is a man page that lists the PMW command arguments. However, the main documentation is provided only as a PDF file in the doc directory. The reason for this is that characters from the music font appear in the text, and I don't know of any other way of providing text of this kind. OTHER SYSTEMS ------------- PMW consists almost entirely of Standard C code, and so it should be possible to compile it on any system with a Standard C compiler and library. There is just one small code section that is Unix-dependent; this is the code that looks for default options in the user's .pmwrc file. This code can be disabled by defining -DNO_PMWRC when compiling the init.c module. If you are in an environment where ./configure can be used, running it as ./configure --disable-pmwrc will have the desired effect. Neil Killeen has kindly provided instructions for building PMW under Windows, using the Cygwin environment. His notes are in the file Cygwin.txt in the doc directory of the PMW distribution. Another PMW user has provided notes for building in Apple Macintosh environments, available in the file MacOS.txt in the doc directory. Philip Hazel May 2022 LICENCE ------- This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -- pmw-5.22/configure0000755000222100022210000042453514541067540012265 0ustar ph10ph10#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='' PACKAGE_TARNAME='' PACKAGE_VERSION='' PACKAGE_STRING='' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="src/pmw.h" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_subst_vars='LTLIBOBJS LIBOBJS SUPPORT_XML SUPPORT_B2PF NO_PMWRC LFLAGS INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_pmwrc enable_b2pf enable_musicxml ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-pmwrc disable support for .pmwrc file --enable-b2pf enable support for B2PF processing --enable-musicxml enable support for MusicXML input Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" # Auxiliary files required by this configure script. ac_aux_files="install-sh" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 printf %s "checking for an ANSI C-conforming const... " >&6; } if test ${ac_cv_c_const+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* IBM XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_const=yes else $as_nop ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 printf "%s\n" "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then printf "%s\n" "#define const /**/" >>confdefs.h fi ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes then : else $as_nop printf "%s\n" "#define size_t unsigned int" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove" if test "x$ac_cv_func_memmove" = xyes then : printf "%s\n" "#define HAVE_MEMMOVE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" if test "x$ac_cv_func_strerror" = xyes then : printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h fi NO_PMWRC=0 # Check whether --enable-pmwrc was given. if test ${enable_pmwrc+y} then : enableval=$enable_pmwrc; else $as_nop enable_pmwrc=unset fi if test "x$enable_pmwrc" = "xunset"; then enable_pmwrc=yes; fi if test "x$enable_pmwrc" != "xyes"; then NO_PMWRC=1; fi SUPPORT_B2PF=0 # Check whether --enable-b2pf was given. if test ${enable_b2pf+y} then : enableval=$enable_b2pf; else $as_nop enable_b2pf=unset fi if test "x$enable_b2pf" = "xunset"; then enable_b2pf=no; fi if test "x$enable_b2pf" = "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for b2pf_context_create in -lb2pf" >&5 printf %s "checking for b2pf_context_create in -lb2pf... " >&6; } if test ${ac_cv_lib_b2pf_b2pf_context_create+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lb2pf $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char b2pf_context_create (); int main (void) { return b2pf_context_create (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_b2pf_b2pf_context_create=yes else $as_nop ac_cv_lib_b2pf_b2pf_context_create=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_b2pf_b2pf_context_create" >&5 printf "%s\n" "$ac_cv_lib_b2pf_b2pf_context_create" >&6; } if test "x$ac_cv_lib_b2pf_b2pf_context_create" = xyes then : printf "%s\n" "#define HAVE_LIBB2PF 1" >>confdefs.h LIBS="-lb2pf $LIBS" else $as_nop as_fn_error $? "B2PF library not found" "$LINENO" 5 fi SUPPORT_B2PF=1 LFLAGS=-lb2pf fi SUPPORT_XML=0 # Check whether --enable-musicxml was given. if test ${enable_musicxml+y} then : enableval=$enable_musicxml; else $as_nop enable_musicxml=unset fi if test "x$enable_musicxml" = "xunset"; then enable_musicxml=no; fi if test "x$enable_musicxml" = "xyes"; then SUPPORT_XML=1; fi ac_config_files="$ac_config_files Makefile src/config.h" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/config.h") CONFIG_FILES="$CONFIG_FILES src/config.h" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi cat <&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # Note that $RANDOM variable is not portable (e.g. dash); Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writeable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p' feature. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && { test -z "$stripcmd" || { # Create $dsttmp read-write so that cp doesn't create it read-only, # which would cause strip to fail. if test -z "$doit"; then : >"$dsttmp" # No need to fork-exec 'touch'. else $doit touch "$dsttmp" fi } } && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: pmw-5.22/mkinstalldirs0000755000222100022210000000132614541067540013151 0ustar ph10ph10#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain # $Id: mkinstalldirs,v 1.12.2.1 1998/12/26 17:32:14 bje Exp $ errstatus=0 for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr fi fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here pmw-5.22/psfonts/0000755000222100022210000000000014541067540012035 5ustar ph10ph10pmw-5.22/psfonts/PMW-Music.otf0000644000222100022210000003136014541067540014273 0ustar ph10ph10OTTO € CFF œ+ÄDSIG2èOS/2ov\`cmapÇèF0jheadGL{¬6hhea)x Uä$hmtx§ú).0`†maxp£Pname„†?âp postÿ¾6| ÙB¥_<õèá¢=á¢#ëýáûP'«ßÿ÷È'ýáóD'èÿÝ‚ P£3ŠXKŠXÿô^6¤UKWN@ úßÿ÷È«°¼ ¢ , JS X ^ (l X X” ìPMWRegular1.000;UKWN;PMW-MusicVersion 1.000;hotconv 1.1.0;makeotfexe 2.6.0PMW-MusicMusicPMWRegular1.000;UKWN;PMW-MusicVersion 1.000;hotconv 1.1.0;makeotfexe 2.6.0PMW-MusicdHuz}¸Éúÿÿ z}€½÷ÿÿÿáÿÝÿÛÿÙÿÕÿ¨  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX™šœž¢¡‰{|€‡‚›Š~Žƒ ”z…„y•˜Ÿ—–ˆ‘ÿ¹6 PMW-Music6ø½ø¾ø¿ø¿ø ) Á ü³ûP'«|€š&pŽ¥ !,3;IPZemv~†Ž™¤¬¸ÁÊÖâìö  )07COZcmv€‹”¡©±·½ÅÏÚåñøÿ '1;GR\`fnw€†Œ”œ¢¨°¸¿ÆÍÓÜåî÷ý $+2=FNV^it{‚‰– ©°·ÁÉÑÖÝâéôþ )28BLS\eoyƒ•£±ºÃÌÓÛãìõÿ %1:DNV_hqxŠ• «°×àPMWspacePMWtrebleclefPMWbassclefPMWaltoclefPMWstarPMWsharpPMWdoublesharpPMWflatPMWnaturalPMWtfermataPMWbrestPMWsbrestPMWmrestPMWcrestPMWqrestPMWbfermataPMWlongrestPMWbrevePMWsemibrevePMWuminimPMWdminimPMWucrotchetPMWdcrotchetPMWuquaverPMWdquaverPMWusquaverPMWdsquaverPMWusqtailPMWdsqtailPMWledgerPMWvdotPMWhdotPMWbarsinglePMWbardoublePMWbarthickPMWstave1PMWpstave1PMWuqtailPMWstave10PMWpstave10PMWdqtailPMWrepeatdotsPMWustemPMWdstemPMWcnhPMWmnhPMWcommaPMWmordentPMWdmordentPMWimordentPMWdimordentPMWturnPMWhbarPMWaccent1PMWcaesuraPMWaccent2PMWaccent3PMWaccent4PMWaccent5PMWbardottedPMWcaesura1PMWlittle8PMWCPMWcutPMWtildePMWthumbaPMWthumbbPMWds1PMWds2PMWdownaPMWdownbPMWupaPMWupbPMWiturnPMWsevenPMWfourPMWhcnhPMWhmnhPMWxnhPMWxustemPMWxdstemPMWfustemPMWfdstemPMWsixPMWgdotPMWgringPMWr1PMWfsPMWtickPMWuaccPMWdaccPMWgridPMWbarshortPMWbreathPMWvringPMWcrossPMWtrillPMWscaesuraPMWlcaesuraPMWsbraPMWsketPMWrbraPMWrketPMWrepPMWrepdotsPMWvtildePMWtremPMWcircPMWcutcircPMWslur1PMWslur2PMWupPMWdownPMWiCPMWicutPMWunibrevePMWaccent6PMWsrbraPMWsrketPMWangle1PMWangle2PMWangle3PMWangle4PMWpedPMWuvtildePMWdvtildePMWnailPMWangle5PMWangle6PMWstave21PMWstave31PMWstave41PMWstave61PMWhclefPMWoldbassclefPMWoldaltoclefPMWbratopPMWbrabotPMWdirectPMWfivePMWmajorPMWdimshPMWhdimshPMWgcrossPMWledger2PMWhalfsharp1PMWhalfsharp2PMWhalfflat1PMWhalfflat2PMWicommaPMWaccent7PMWaccent8PMWrturnPMWirturnPMWthcircPMWbhcircPMWrcnhPMWrmnhPMWstave210PMWstave310PMWstave410PMWstave61060.01Copyright (c) October 2023 Philip HazelPMW-Music‡¡ Uz}€8½ ÷£GJž ÚzŸû9y„”é`ˆÚ+]dj¯õFp˜§®·¼Ñâèó   ) J f { Ž « Ò  G M c r ™ ­ Æ à î ý ! $ w ¬ R | ¥ l?Vl…žÀû8Lpž¨²ÂÏIQbeg‚“£/<fu–=Si—´Ðßì1E5Up‹¾ÁÔõ$4CSx²í!2DN]cp‘€î (n°Íq£²ÚþT€¡ÊÙû%ORhsƒŠ˜ ‹½øì½‹øˆùPüˆ÷ŽûÅû>÷“÷èû ûÀ÷>÷“ü’ü^÷>÷“÷>û“üø¿÷>û“û>û“÷#ú÷ ù fû‚ûµûÜû‹÷`û0÷™¶Œµµ“¥û¬ûH¬ûžûHjI‚H”N¬óž÷÷û÷û÷û'"ûxûH÷:R÷'¿¶šº÷RÒV÷j÷[q÷!÷©óϽ÷Ä÷#‚÷,,÷ 5ôû¾ûtЂЂ‡O÷Ъ©°°·¸ÍҶͧê«÷‹÷ׇÎ÷\îjÍj¶Rº‹‡‡‹:6M?aû6ûnºûı,û*'ûpûÀfûøGø¿x÷?†÷:×÷ž­¿™±”¬†¬xžt±`˜R~Wfû./û,!ÞüÄûe11€û}û"×û÷W(»V÷,Äó®ÅĪ˔óü·8w09¡û6º(÷x÷?êÒ§å÷+÷|m÷L÷J÷ü^¥¥‰†¥÷,iÒû[Wû'r@^\=kúnn' ü$Â^¸TT^^TT¸^¸¸ÂûZ÷>'ã3ïïããïï3ã'Ywtc³÷ï÷÷÷p÷HûŽû„;Ûü$ýü(ùP÷üŸøP•Û÷f³ûøûÔüû ûRû„ú÷\÷<ؽ÷\÷<@û<÷»þÑ'½'šû Ÿ†Ÿ†®÷½÷>ïï÷*'ý8û;YÑ'½•«©ÇÂ^¸TT^^T"÷Hû ÷%÷p÷>÷H÷p÷4E÷fûp''wûHûmïOÛc¾³¾ÇÛ©ïûH÷ïwï÷pÑ÷f÷4÷pû>÷Hûpû%ûHû "g Çk©Y•Ñï½Û÷ïý8û*'û>ï÷Y®ŸŸ'Ÿ|û Y'E'ùdYùÀ½øø(÷ürxxrrxž¤¤žž¤¤žxrÈ_Œ”˜›™å–˜{ƒ’ƒ’Ÿ|£b sw|ƒ„ƒ„~{€1}~›“…’‰ “–ËË““ ‰–ЖФœœ¤¤‹´r¤r¤b‹rrzz‡rŒ€Œ€vƒƒKK€ƒv„‚Œ{˜‰™å–›˜“’“’šŸ£k sšw“„“„›~Œ€1‰}{~‚Š„…v‰€“K˃“ Œ–Œ–‡¤zœr¤b‹rrrr‹b¤rœz¤‡–Œ–Œ “„ËK“€‰v†„Š‚~{}‰1€~›“„“„wšsj £Ÿš“’“’˜›–噉˜{ƒ‘„vƒ€KKƒƒv€Œ€Œr‡zzrr‹b¤r¤r´‹¤¤œœ¤Š–Š–‰ ““ËË–“ ‰’…”Š›~}1€{~ƒ„ƒ„|wsa £|Ÿƒ’ƒ’{˜–å™›˜”Œ’‘ –ƒËK“ƒ‰vЀЀrœz¤r´‹¤¤¤¤‹´r¤zœr€Š€Šv‰ƒ“K˃– ’f üB³÷ç÷4³ûÓ³÷Ý0 ÷¡- û4cC ÷4³ûŸ„÷¢÷\ìì…•‡žb hnnh{…Œ‰(((›X ž‘•ì***‘‡xj , ›‡‘Šîîî(Љ‡…{a ®n¨hx‡‡…*ì ‹½½÷È: û1‹³÷„³‹û ÷¬÷ üB³úYû¬û øGcýÒ³÷“÷„÷ ûû„û û*'÷òï÷*÷÷Ž÷Ž÷*ûûòïøûŽ÷fûŽûŽûŽûfüø8÷ ^®h¸¸®®¸¸h®^^hh^À‹ø$ø$ü$À÷\d ÷\_ À‹d ‹_ À÷`û û‡÷ž÷¡÷%÷Gûg™{”œ{žû4÷Rû+÷J׺÷[÷´ûÀ÷ÎyÄO÷û#3û#û1ûk÷û¸ûb÷bû¥ûŽø.ûè’…œŒ‚–zøìMžj¤wôA÷çºÑûyüµ¶÷¤ù`s=8chlqUž»Û÷û‚¹ûpû*øìü÷Žûf÷Ž÷Ž÷Ž÷føûò'û*ûûŽûŽû*÷÷ò'ø8û ^®h¸¸®®¸¸h®^^hh^ M½÷À‹³ h³øìý´³÷Ž hû޳ù´cûŽô˜÷ŽùqŸøŸ‹³ï³ù´³ï³<³ûQ úO ýÜ÷ÏÀ,ïû÷\÷\ï÷êê'÷û\û\'û,÷ôààôôà6""66""6àô÷}ŸøŸ½÷\,ïû÷\÷\ï÷êê'÷û\û\'û,÷ôààôôà6""66""6àô÷}ߨøl³g¦ B @ø‰ù@ ÷}Ö³B €‚dÀU÷ v÷*á÷=ì¯( û* &QWDwM„r‡y„úß³÷}øÝ; ÷}Ö= øåøÝ³÷±Ñ< úc΀ÛHßûý:åøO÷}Ö³÷í= ÷œù6÷uüBù!Z Aû)û5(|øåøÝ³÷Ù; ùk¦ì^H½èûUûc%’Y÷Šø¤üod÷¶®÷(F2Òäûˆ!?û‡Y÷Üø2ü¬òW÷ä÷}Ö³ø> ̘÷cùE÷¯üø‰X÷ û$dûû8û8??4cC’÷O÷Þíy÷ìõ„VÅs‘‚’ƒšpÃ'oû4û û dd9XYúJ³úùÈ÷¥÷âü+¾û ÷ñvû¦¤÷h9êÓLÞ0û û8øxûùbäûjû21H:ûû‰`ûÝ™Òøø«xûvøX÷M©E÷MùÜ©ýÜø2øì. ûc÷÷\. „‹^ ÷-‹©÷ ^ ÷>ù¢©^m÷-‹÷\|÷\^û\ø|6 øù¥©ù¥! ù´ø8køŽù>ýe÷*Ÿø$ûùÒäMûOéi û‡$±|3 $±ù¥©ù¥ ø—ŸäûRÏ÷ øú÷sü0ù"Z û:8û-3-„÷÷\. ø$®n¨hhnnhh¨n®®¨¨®øÝ³øù÷Ž—½cúºÖ³â÷*Yúì³F÷}î³F÷1 ÷=ì«( û* û=*k2 ÷}ߨøp¦î³F÷1 ÷=ì«( û* û=*k2 ¤›D „÷À÷*ÝGÏ99GG99ÏGÝ”“‹Œ“wT[ûû Jd÷6©÷*÷˜÷-÷òG Ô÷"ûóø™§& 5û@÷Ûcü'ùG ÷÷Ž÷*ûŽÔ÷"ûóø™§& 5û@÷Ûcü'û*÷ŽF & F ÷(ûŽ÷÷Ž& ûûŽû(÷Ž5 ûT÷v8 ÷TûvøÎÇïøÎøˆÇüˆøQù2÷/ý2÷/mø«ûü«ûK ÷ÔŸ÷Àù´cûÀý´÷4Ö÷9÷Þ÷\ûíì÷Vûuøû§üºøÄøÓû9ûÞû\÷í*ûV÷uü÷§øº÷òåø$1'‹‹1ï÷ò" 1ü$åï‹‹å'„‹©‹©÷$ ÷*$ ÷*$ ÷*$ ÷*$ ÷*$ ÷mK ÷9÷¼û÷50û,5Cû÷Fë÷\ƒöÅgÁëËÞ­û^}ûFhGû^±û€÷&÷'÷ ÷L÷ û)Ã÷Aa÷Xûû0û0û÷øøÄù2OYYOO½YÇǽ½Ç÷>ûÑûûaW ÷aM ûû÷÷R÷R÷÷÷Y øø&¥øÄù2OYYOO½YÇǽ½Ç÷>ûÑû÷\qû\ûCW ÷Cû\¥÷\M ‚‚‹ŒƒùŒ••‹•Y û5¼ýû¦8÷÷;÷9Þ÷÷¨ûcø÷P½`‹‹½¶½½¤¤¸Ïp•v“sjrrrrt‹r¤û÷ Y¶‹‹Y`YYrr^G¦ ƒ£¬¤¤¤¤¢‹¤rïûøo[ ÷ÙJ ©ï;Û'';;'5ÆDÜyhûv÷*h÷vÜÆÒá"[ ÖJ ûÞ'Û;ïïÛÛïáPÒ:®÷vû*®ûv:yPD5ú‹Ñø$Çø.Ñ÷*÷4÷pÇ÷p÷4ú\ø¦÷û8÷\û^ž÷,›}™{{}}{û,û^xû8û\ûû,{}}{{™}›÷,—û÷8û\÷^xû,{™}››™™›÷,÷^ž÷8÷\—÷÷,›™™››}™{û,û2ûpø"÷~äûA’ûhû¬ûp’÷hä÷A÷˜ü^ü"û˜2÷A„÷h÷¬÷p„ûh2ûAû~úøÊø÷ûÓF¬^ÓC÷÷H÷÷ û s’OyYRÉdʪÈ©gÞa±2Ûû€:v*rI:+Œû!÷:û éLüü Åkøø ÝQ÷77û;ûûûA÷¶~¼§ÂÃ0¸SSll’S¶dó6¿‚÷™÷ çÏ÷@÷'ûÝû Þ÷ý÷òS®ûüûñ÷ÇplŠj¦g¨q²ˆ¬¨¥¬Œ¬o­j©k†irýÙûpp‰c¨j£o¿Ž¡¤¦¯«n«q§b‰lq÷òl ÷%¤÷Ù÷üûÙ³ø=üLü=Yl ôø ü=øLø=cûÙûü÷Ù÷Iøè÷<ý÷<ùg”ûüûø÷oûb÷ø÷ü¯”û<ùû<ýø ½5 û÷÷|YûCi³8 ÷ûû|½÷CRøñÒ÷—ò÷Ì÷4‡³û"xï÷ÕûùPû ™½«¾¨£÷m8ûŽûÞbc÷̳(ûÂ÷-÷EÃ÷ÂÓðËø ÷Eðû0Ë÷0÷Ãû÷0Kû0&øScûÍüSS÷­ûE÷}ûˆ÷ˆ÷ò÷}÷ò" û˜û\÷˜û\÷˜÷\÷}÷òø=ûûu÷ûu÷÷uOûaûCûa÷C÷a÷C÷}×ø÷€ûJû€ûJ©g÷ˆ÷R÷ˆûR©¯û€÷J÷€÷Jm¯ûˆûRûˆ÷RøÝ³ùø\ Ö³÷ûP\ øÝ³ù÷\÷\cû\Ö³÷÷\cû\ ÷÷ÓŸÝ÷|½dÈVŠû;Y?[WC¤g¨UÄvæ¥÷ø6÷çr±%…f‚'÷;mwæû1$zFROIû ûD‘ûm÷*ñ9æ‹àÝ÷÷\÷5L¹O½û‰M[•ˤº¬´¿ÀÁ®½—ìû2¨¤/÷&©“ØŠ¥€Røìø$' R÷§+ ø + ùø$A üR„©÷è­­àû`÷øðm•ûaü¨A÷CJJøùjù"øoe»ý"üo/ü¯ø‚ü…¸¸ü‚ø…÷RŸøŸøŸøŸøŸôŸø~Ÿø¦Ÿø¦Ÿø¦Ÿø¦Ÿø¦Ÿø’÷Rø¦ûRŸ÷Rø¦ûRŸ÷Rø¦ûRŸ÷Rø¦ûRŸ÷Rø¦ûRŸõ.øqŸ÷f% Ÿ# õV" % Ÿ# õV" % Ÿ# õV" % Ÿ# õV" ô ª"„‹ÛÛø¦;ü¦1ŸøÉŸ÷ Ÿ÷ã1÷Ž wû ûzùûzöwúö÷Žà+ ÷u+ øo÷fA ÷WÆ÷Ù½ï÷W÷uûu½÷u÷u½ûu÷uYûuûu÷Uø¥ø‰G³3g'‡»÷@w˜O€w…WûD]ˆ^^5u’û¾a«uŸŠÃ†cû s'ËWóŸÐ¡«Ë†é|åx‹Q©³÷÷§·“µ˜R/ü@ëãø(“¹™»—«“Œ‹’{°D̘ոv˜j™QŸ2_jkü,ûDavŸz›s®—²·•ÛÃûH·€‡ha‰_ŽahtImŠ´žÁ„û\©÷è©©®û\ø$mü$„‹©t©©®°mûPc ‹Ûûò÷޳û>ú÷>³ûŽc åÛ÷>ûòúàûŽc÷>þû>cû•÷Žù‚ûÀüº‹‹÷Àüºû\øº‹‹÷\øºû•;ù‚÷\üº‹‹û\üº÷Àøº‹‹ûÀøº ‹÷Žøºù´ûŽ÷*ù' ùPüˆ' ûR÷¬¶½‹‹`½Y½r¤G¸pƒv¬s¤r¤r‹trrû û`Y‹‹¶Y½Y¤rÏ^•¦“ j£r¤r¤‹¢¤¤÷ïïŸø`ŸïûCøˆ÷C÷Cøw½ùx½÷\½ùx½ú¤" ÷zûR÷RûzûzûRûRûzûz÷RûR÷z÷z÷R÷R÷zYûaû9û9ûaûaû9÷9÷a÷a÷9÷9÷a÷a÷9û9ûaø÷\½÷ù¥÷ù½ú¤" ÷uûJ÷Nûu“÷IqûIûuƒûJûNûuûu÷JûN÷uƒûI¥÷I÷u“÷J÷N÷uYû\û2û6û[…ùv÷[…÷2û6û\ýx÷\÷2÷6÷[‘ývû[‘û2÷6÷\÷Àû“÷¬üƒ÷¬‹÷¬øƒ•û¬ü)û¬‹û¬ø)÷Àû“ø8üƒø$‹ø8øƒ•ü8ü)ü$‹ü8ø)š~øø`÷ûr÷®û®r÷ûüü`|~øü`ûû÷®r¤÷®ûûüø`ø÷4P ÷÷ûûRûRûûûû JÖ÷^ûCÂÛ;÷ ÷aV ûaûL ø÷Â¥÷;P ••‹Š•ýŠƒ‚‹‚û JÖ÷^ûCÂÛ;÷ û\¥÷\÷CV ûC÷\qû\ûL ÷3¼÷nÞûû9û;8ûûpùúa‹³ï³ú¤³ï³³ûù cý ÷Hù cý úôO üÏ÷ ÷?Ý÷\ûJÔ÷0–ØûQû7Obû,«÷ý÷@÷7ûmåû[ûi»û:ûAûD÷C÷[¹÷W^÷’Ð÷Gü0û(Y«û÷Dââºe÷ûD::ûs÷ß¯Žº„—…ûI1°ûd÷9T\-„÷G=÷,ÉÖ÷“‹Ÿ÷üŸ÷èŸ÷èŸø$wû•÷ùû„ûvƒû.÷Œûš“û÷Ò‰¹÷$÷ªû•+ù÷$ûª‰]ûûÒ“÷Œ÷šƒ÷.û„÷vU µ÷lûŠK÷Xû,` éµ÷,÷XËûŠûlU ÷V÷lYû,ûXK` ·÷V÷ŠËûX÷,Yù­÷²ù|,€ûd4œûe®ûöªªæÅ‹³~€ûPû_©ø÷¹±nnVûn÷ûH¨]‹)nX2nR4al»‰ŸÌÉÔ³±µ‚Ç\ÅV÷ÒÇ,÷'‰äá°V³~àά±¨¬µÇ£öG÷÷%Cû-óûrn‹|¨÷A÷û#ûǹ6¯ûjZrlnsX”O–û/÷A÷/÷¡sœuuDHAû¸'¡]ûeH³%É÷Yy÷9ß[³ABûûûQ÷Mh_¥F¼H”³Å³÷+Tæ6÷"‚÷¾÷H÷.û¬û‰ë’`ŸXº~÷"jn÷8SÉ.ô7-‚øüº¤·XLI{pDa]Ûpõбù ûÀVIºÃÍS!÷»ÑûŽ÷ÀûŽûÀÑ÷1÷R‚˜p•oÓû.üMûIø1A û†ö÷îÔ*÷d}¨¦Š“üm÷SE÷ŽûÀ÷Ž÷ÀEû1ûR”~¦§C÷.øN÷Iü1Õv÷… ûîBìûd™n—pŒƒø¿³øS³”³—§ø—˜o“cc³ø-ý‹ü-øµ÷(ümò÷0÷Ÿ‹òû0T µË÷lûŠK÷Jüe T ÷–ûJK÷Š÷lKøTe øø) øN ø|©ù–) |! ù–N ø|? ø|©ø6 ø! úøˆ÷\÷\÷\ùP" ù´û\ý´øìù´û\ý´úõú¬j®U‹jheeU¯g¬hÁ‹¬®¬®‹Äj¯ˆø4j®U‹jhjh‹Q¬h¬hÁ‹¬®¬®‹Åj®ýdû¶®®‹šh®5áû"!!û3û3ØûI÷F÷U÷‡÷Å÷‹÷ê÷«û}÷}û:÷9û¿©ûyûxûû…ûý÷û÷û÷¦‹÷÷÷x÷x•÷~÷*cûÔûFû"%GûWûûJûu÷*ûH÷ û%÷é÷š÷™÷X÷X÷¤÷/û/÷OûOcû†ûšû=dû‹>²ûÏ\÷-÷1Ù÷¶€ûQ÷&÷&úù½÷\½÷]÷<×½ø@û<ùÀøæøü‹‹÷¸m û†‹‹÷ ÷Ê‹‹û9ûM÷\÷M÷9‹‹÷Ë÷‹‹÷†m û¸‹‹üû™‹‹ûûMùYùÀ½ù÷M÷‹‹û˜‹÷\‹÷\@½÷*÷*÷Žû*ûŽûŽû*‹÷\‹÷*÷ŽûŽû*÷Žû*÷*Y@û\øúrøø3÷@ûS#ûhû8ûÜû&÷lûû‚û)÷‚>û÷8ûª÷÷’÷(û’÷—øžÙ÷1÷Ìâû"“—œƒšRøÚÛø%½ø%øÚ2½ããÛ3ãY3ûu*ûl÷ß›†ü-ûDqc‡S¹^¡e˜JBåj÷åû÷`ø«ükÔ³à÷#‹³‹ùPûòù÷¢üöü°÷¢øœÏù÷À÷9û÷û9û9ûûû9û9÷û÷9÷9÷÷÷9] û%ûh h ûû%Ïù÷ÀÖpÏ\Áïïn¨''ºUG¦@û9ûûû9@¦GºU''¨nïï\ÁÏpÖ÷9÷÷÷9] JP¢±^÷ý÷ý¸e¢PJüœ÷%÷÷÷%ÌÆte¸ûýûý^±tÆÌR÷§Ÿ÷fŸøàø¡?û?÷sãû3û£×÷×û£3÷ã÷÷C½E÷CùܽýÜûK÷1³÷1ü2³÷çbŒûÓ³÷Ý0 ÷¡- ´ŠC bŒûŸf ÷Àýn³ùx÷4³ýd³ùq- û4cR ÷°÷4³ •³ûøàûøf÷]÷ûªüu: ÷ij÷Ä÷Ƚ"ÓJ>û1÷Rû Ñøø¢³þ5x‚|l’û¨û±÷®÷÷%Õä÷tÇ/„÷*9ÏGÝÝÏÏÝÝGÏ9‚ƒ‹ŠƒŸÂ»÷÷ ̲û6mû*û˜û-øì±÷i½ºb£jhbs\Y±ûi*’y¡‹”ù8w‹à÷è" *±ûiY\bsjhb£º½±÷iì’¡‹”y4 ûTûv7 ÷T÷vø ½4 ûûû|Y÷Cic7 ÷÷÷|½ûCS ùÜ÷zûR÷RûzûzûRûRûz½÷a÷9÷9÷a÷a÷9û9ûaS ø$ûz÷RûR÷z÷z÷R÷R÷zYûaû9û9ûaûaû9÷9÷aE E c1EE11EÑååÑÑååÑE1$±ø) øI $±|©ù–) | ù–I $±|9 $±|©ø3 ø © ³ © ³ øóšN %4GT[afkpy€‹˜¢¬è#-d›®áåîò/W}ƒœ¿àçì 1DW^br‚ž«¸ÅÒÙæòþ'19AKU]foxŠ“œ¥'©Øð ú|©þ| ø$ øø¦ü mï© # Ÿ# Ÿ# Ÿ# ÷*ûŒ÷qøNs³ûûŽû*÷Ž Â^¸TT^^Tg  ÷cÐcÐ ©ù–© ²û=* •÷z• ®¨¨® 0 ÷Ýcûé X ,  ©ø©ø©ø© ÷¦÷ûp d÷=ì û³F ©ø9 ø ø`ø÷ ÷÷–ûûH1d17j1c‡›b–YŸu³ŸÇ³Çµ‹¼r®z½†µšvÓo£7Çmy[S ø`Ÿ÷ û÷–÷÷Hådå7¬1³‡{b€YwucŸO³Oµ‹¼¤®œ½a|vCos7Om[à ©ø? ø! û ûû–÷÷Hå²å߬å³{´€½w¡cwOcOa‹Z¤hœYa| C§sßO©»Ã û ÷û–ûûH1²1ßjåc›´–½Ÿ¡³wÇcÇa‹ZrhzY†µš Ó§£ßÇ©y»S / | ø ø ø ½ôÓÌ>ûåûRû Eøø¢cþ5x”|ª’÷¨÷±÷®û÷%AäûtO/³< ù@@ >  ³÷«ÀU÷ v÷*á÷=ì¯( û* &QWDwM„r‡y„úß³ / |! ø! ø! ø! cû0VÁû  û*5û=*g2 ³F÷1 ðſҟÉ’¤’ ÏRÄGGRRGGÄRÏÏÄÄÏwQ\\QQ\ºÅźºÅź\Q÷ÒD R í¦û )pûí¦³÷&÷Ÿ iÆÕ÷÷Ñ÷Ñ÷•­P­PAûûEûEûiÆ ÷}øì÷\÷1åûû11ûûå1÷÷åå÷ H ÷÷Ž ³H ÷ñ÷Uû*÷ŽûmüF¯y÷÷n÷*ûŒ ù– 8HH88HÎÞÞÎÎÞÞÎH8 ø‹Ÿ÷Àù´cûÀý´ ûEû>O½YÇǽ½ÇÇY½O ÷ ÛÛÓÂ÷û^J@û  ! ù–! Q ù2y‹‰„r·•²Ÿï ù cý ÷Hù cý  ÷ÓcûÞ)pû w½ùx½÷\½ùx½ û¦÷VË÷vË÷v û©÷VË÷„½÷¶ ÷9÷H÷p÷pû9÷H û9ûHûpûp÷9ûH k h¨n® ï²w_•’r‹y Z÷ûnyûRY( ©÷>©÷À©øˆ Äcû<cû%ûûû% ©|©^m øt÷\ütû©÷VË·½ h¨n®, , ®n¨h û•ûò³ú³ ÷\‹ŸøLŸ ûlË÷l„å³÷4³å T¸^¸¸Â ÷÷%÷%÷ Þû;‹ûLû" hnnhh¨n® ®n¨hhnnh ïô³÷ü³ ³¥³ààq³c ôîÜlÜÈÜÈèÿøXÿøXô Âÿj””””ÿèNÿj ¬<H2HQHKHQHK°QHK°QHK]ZÿºXøøèè\''YXIKHSHSXÿóÿîÿîÿîÿîÿÛdèÿìzbXèÿìè<è>vªªÜÿâÜiiµ·ÿÛ&ÿñøHZHUHLIKIKô"&&wd&X Nÿ¤êXOád ÿßXX^^ÿ°^^ÿ°ôÿÎþBdèÈèÈ,,ÿðÿñè$è/,T^E^ÿ J,J,J,J,xÿÿýèýáÿêM,M,èèèèÜôÜÿiÜÉè&ÿÿ&ÿº¨;XÿøôÿvôÿÿXöÿÛÿÛHÈHÈ'pmw-5.22/psfonts/PMW-Music.pfa0000644000222100022210000011503014541067540014246 0ustar ph10ph10%!PS-AdobeFont-1.0: PMW-Music 060.001 %%CreationDate: October 2023 % Copyright (c) 2023 Philip Hazel %%BeginExitServer: 000000 %%serverdict begin 000000 exitserver %%EndExitServer %%BeginSetup %%BeginResource: font PMW-Music 11 dict begin /FontInfo 8 dict dup begin /version (60.01) readonly def /Notice (Copyright (c) October 2023 Philip Hazel) readonly def /FullName (PMW-Music) readonly def /FamilyName (PMW-Music) readonly def /Weight (Medium) readonly def /ItalicAngle 2 def /isFixedPitch false def /UnderlinePosition -98 def /UnderlineThickness 54 def end readonly def /FontName /PMW-Music def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /FontBBox {-150 -1400 50000 2300} readonly def /Encoding 256 array def 0 1 31 {Encoding exch /.notdef put} for Encoding 32 [/sp/trebleclef/bassclef/altoclef/star/sharp/doublesharp /flat/natural/tfermata/brest/sbrest/mrest/crest/qrest/bfermata /longrest/breve/semibreve/uminim/dminim/ucrotchet/dcrotchet/uquaver/dquaver /usquaver/dsquaver/usqtail/dsqtail/ledger/vdot/hdot/barsingle/bardouble /barthick/stave1/pstave1/uqtail/stave10/pstave10/dqtail/repeatdots /ustem/dstem/cnh/mnh/comma/mordent/dmordent/imordent/dimordent/turn /hbar/accent1/caesura/accent2/accent3/accent4/accent5/bardotted /caesura1/little8/C/cut/tilde/thumba/thumbb/ds1/ds2/downa/downb/upa /upb/iturn/seven/four/hcnh/hmnh/xnh/xustem/xdstem/fustem/fdstem/six /gdot/gring/d1/d4/u4/l1/r1/bs/ds/fs/us/.notdef/tick/uacc/dacc/grid /barshort/breath/vring/cross/trill/scaesura/lcaesura/sbra/sket/rbra /rket/rep/repdots/vtilde/trem/circ/cutcirc/slur1/slur2/up/down /iC/icut/unibreve/accent6/srbra/srket/angle1/angle2/angle3/angle4 /ped/uvtilde/dvtilde/nail/angle5/angle6/stave21/stave31/stave41/stave61 /hclef/oldbassclef/oldaltoclef/bratop/brabot/direct/five/major/dimsh /hdimsh/gcross/ledger2/srm1/srm2/u12/d12/halfsharp1/halfsharp2 /halfflat1/halfflat2/icomma/accent7/accent8/rturn/irturn/thcirc/bhcirc /rcnh/rmnh] putinterval 202 1 246 {Encoding exch /.notdef put}for Encoding 247 [/stave210/stave310/stave410/stave610 /.notdef/.notdef/.notdef/.notdef/.notdef]putinterval currentdict end currentfile eexec d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae 6fbf7f9888e039ab60fcaf852eb4ce3afeb979d5ea70fde44a2ae5c8c0166c27 bf9665eea11c7d2329c1a211dd26bb372be5822f5ea70d99eb578c7befd44cdf 045a363056e5e1cc51525ea6fc061dcebb337208eff729802376a2801424f670 0e7e6397b28f15bc10b40012b0a3eaeb2693e8f7f627c4c9c7c6c5bff105c1e4 1b2b9e8f09253b61177e95ea219474796072f4c3189f7cfc7630142215dbc8a8 fd63d147033a0c9c786e17355fa8d996a3a7b5d213ac8011fd31a12930a87f86 374c1921aaa9ed181b43541cdf6e376bb4f2801faa9b01dcc0569ac59cfc4768 afdc549a30d41f5705e4231d3bc540161d390b4980ef9fe489ac4df99f83a8e2 00182cd152eb35a61aa915230f1090fd0bc8d4644f836c3da157c564b2a8fb7e 7d3203ca17088a579aab355eb45038ff45d5eb2357959a2c7c04421c41d3b822 d0471ae18607c80503c0b319348683bc6bc87e075a8eb4bb34729c4145b2b5a0 df1a88b2d7e0940aa3d4bafa502b87d9313153f661019a817ab20e1a772ad0d5 51ae7fdce4e21f426a6726c39c88124f8cbf10bb7394e90e9d28efdffef75078 f7ab1d7fe8387e1e65c4ff67d054ae6a0937e4d59889656ac37afde0362d76ab 05f9c223c52f04b6279e055419d3630d5057b50b4c4492891f7a36d03859e220 2d89747f1d486e9449a3448f81c240adc9e5476c6de456d76c4237055c0c30b6 80738211ddb90bcc73982467076cba36a60ec6a6584d9d9bf0df2b8462ceb1be 79c1276d2865b0f3518664a960036ca2d00c7829a967ac16b5c833f2e143efc0 f93826a8d09414c4ae7cb17623edc8f599b895ed0d3f4bea8bfd9b414cc39c0e 4080180fe8286b05065a10df4d691d38f73bc82d6142bdded07ffff7017f7803 cb03226f4d6501c203f8ee4e08ff5f8eda81278aaa6378b2d95ad6dfc7bc2e11 aa696cf2618a5737f03bce6c46c635caf89d23de81693159167b74cda0a15dcd 491b2ba489f28d410f1835d0fb7a9be1e3e5e7b76996e1d85cb9b62bb0619bf6 6add5bd2753af61ea1f07662ca6756df0ca6203a15a0ab423e9274b4dbc7fb93 fbbd8c6049e2d5fa0c6c2178f5aa623346a3d49faa6222cc8bfa2c88f8e64195 70a77945db2788ae716648ad1722faffd330a8b4c39150503d7913fc61d9e7cb 7e4aef9b78ecad7301721f8115b7357534cd3a85a18383ce0c0316de36aecd82 1916de823e99156abdfa404f293097a867e1648c4f9c310a0bac6b003e14b95d b220d18f5839686cd07c3b83d527cc38d76bce114ae790d80433c70f478ad720 ca5c02950c3654a9fdf157ff0e2e20accbff796722732bf3f25468e01d96a62e fd2860f9a6e5f1a5984eaf9d2f900dce358ba38573b99a02a425c8e3843516d1 09f1d57706deb2deff60738f1e1cd276be4ffa9467c4d1d06ab63e3f4f884767 e3408e0f6160f401c2cc1ec34e0bce0264893a719710817327f7f1b6e118fd1d 421d5ca56b79de786773ea72e2bd29cfb396786a681d67f0e7bc891aacd4eda7 0d1e2b2c56e7c398a5029b7411a40b95e051775350271f4cf60c97dc6313a354 c0251998cd0cfabedae84bdb168dba8e27ebea2d382f827e832b3ab68decb6c4 bfaae522c43fb7ff944b2240186d7abd6c1e38f7e22c13319f8b679f254dd804 655a2534225661d7d7361f8fd12d39adf32f737961660719722abe014416c39f 7924da3e22f814f093ff5fd9014467d37cd39e68fa96a8f60e953f14425cee12 c2fe7a64afa13e41c9bf325dc70a9b60e019e7c8273f61f89c86de2f3ee47915 91c109b1a14ce49bd973b0786cdd7b136de227d63010919dea353b5938b95d53 85181ffac36c80139ca88a5ce6a5b58d90cb47049fdd73c73d7b60e42af4fec0 c50a2b5e886180fa9e5a2d335d947300612e16dc235478a5cc6ee68f39448d59 e52651879603f0fc9a2da14e8c73524daee6ded48a9ea09a8855d70208d82f39 80fa091f702bb84dfeb83a092d39609b3a3d29f80761938c053897aba5bb794e 0a001d0898537b17706c38cb3101cd4b64d3aa01ee69958cf1e6c783cf5bdbda e102b9e5183cd7f1e72e19d2ee3035f35ebbc33e33c2799e367358b1032ae697 b54b4018e514c9a979ee18e9102e4a4485d35652b519e972393dc260b13b925a 118f1f73f5ebf9c1746201c4e5e39b5fc7f7b6357a73ee89a4ad574f293afc54 7489570dae1834510061f0d6789272e07fe6852cd99332e9e9bb70628844a542 76f44508f54a3589ab493d16733b9af0b094fb3420f69649fa2f7a0f1e1602cd 91cab6863cec6493af84357ab2de66c640f89e7a49dbdb02ba0b38465fdfefe8 c581b8c28a4283c79de7da62d44191cb4e0135f04b0b37df57c8c8b7411a0e83 4ced6fa5cabecda99e9ee68c45c32b1f477b3a38c480eb1cde6ef2fe3bd2b6c7 dda705d218bfe0589a5b5b6a564e6787fa0e374104e741748309685905565be7 bda5c6f816e69f0a235fceb6fd749e797f7bdcdba98b62aec031c64c818b00d9 9c9e563520439f29977d80c79e88cf23f3360d34e58211226294a940750b022a 02ca4c0a916fba6363a478fa546643ba90d1dddd60e88c4225bf0a93645d3df6 c7b184b2d62f0c087cbfed9483dc86b5caa8d1c19b105273b4cd78b1cf81e85a f5661b08d8cf49245f41eb8e3317558dbbee603c87ece32e258cbcc88172ce64 97fb3dd3ca209cba1bbad46c8ee81e8539a7578c3621d45d8129b316d4a28449 86233a32e364602f05202d7a7bbcc5da14f4b4bea891b45e8de680f7ca546bb7 75e723ce5ce9f57bad89085c46eb044130e0009ff2ddad59478a1cba88721490 77596c5fcae82a28be60e2f1aa7f172a5399d19fd2235b52d55a6db020ffa727 1df32d5edbbe3b64c514f2eb303d5c12fd962414318e93792f99a1db643bbb0c 49a794c8cb5b2abe26608590eb6b2763aee3e39a203792aca8e04c58165c525e c47aacb63cf2166e81861da52742ba856e0ee7689df101db8aedd2481dbfae3a 93ee477ee8878b9457d6b7db6a8152a3119ff15ef5496e378d6300d9788a2b83 ed3e6361174335a48423f770248a8349a738ea1099683705acd57578d189db54 71fa8bb22dfba9c7480b8f48ab9c3d402843c3fa3d13f211b0d67c309962d1ae 9de9261b3a0a1148edf39b860bdf9023c03fef7e866df89959d51cf04f0d9d98 9b5f754b62b2a6cf2e1d3b8bcc2a6d9d6b6bbf8fb0fd992c93e5b65336b9f50f 3b8d9996fb3a0ef1c94995a0b8263e416940e6585b31d75d56de483ef5b01013 1bbd9138a66229405205c48acc07ddd40f5f9b180063a01cb4cce7e7ba7c7f55 b8ddf79ea5b6fd9a933d93b4c702ddcc386c9abc8f96379f810941d1c9d953f2 1b45f5a59434676733f35bee5ff5fcee8f65a00fc087b10e3010e0557a9c6f79 1763422cb0829a7bf2b0c4c135eee5200047cd96002be864f23f5dbfa9dc5112 75091e810d4a459469a7f119458b1efcaecf9fe9e961198d0444c34a3480df0a 7e524ed18a618fad5cd0d3a00f169f8272405929e4db18f743e7b6b42f0635c2 c96822250cd046261576b49ce7f283c94b95da2ec4ef7c43775812fcd1c0eb9b 1e71b73ef0ad4ba32fd3ff92288444927d86e78c99e7e5c348e49042326a200a bdf485963db86e0eb1be0fb9a7b11c551d1b385bd6e1165b666ac5ddafeab70d dcac79e84bf3d01720a2474b4b8b24bb75500077a47fbf4c7a37e2f2d50e2d4b 164a8a27f23e725ae222eb9bc538502d18eca43870f399b12a7fe8f71315b21e a3528484d370a51de5d281593e07d99880664a10647d7fdd7ef3e231d1bb06c5 ab3abdeea87ab0eb9bb484044a19235bebd9d1b37aad8e79a645f543bfcde543 e5b39f4144fc5f6175b321d99ff8468376f47762ad8489546bb43465dd4bcd07 9e35ae68ff338fec59b467c7e45b9c85f742828dbd3aab4a5b9c261a5e426df0 3520fcc7a28029996e9c4599655787b539e92c2787f90b965ac1517cda2ddc7c 84958e66e9fd3d46ed52b8793f48ca8f49f700a4833a6a4ee0e75ef6c6d5b5c7 8023bc204afba0ebdbcd1fe8b2ef83ee19d506c5a35ebdf812faacdc8b8bf084 a4a13d04f806f45e0aca58a2d321c8239e04eae86af7199cbde7b85b7cf58916 8ca488a7cdfd53c5298d6fdfed2c108df94ccf36b30a200ff33e720a2f968fac 37e8f633a74cf347c9ad495691c6d443f2f10462060970760fa6deb3efabc365 1e72366d7d7116397de3fd57487c34b2f2cdedfce5ab551abce2a7627375eea0 2a031e5fe81466d641904a4fbd54d323997d71ba8fd645ba052cb0a8d78bc317 8f1763c69ad91494dac840d5ae34979bf4d84691674b34b51d49c48dab045f59 c3be7149ef19b861cacffc1f1a7b2c437f8c9804e0c23136f635891d5d0bda6b e34d0e9cd394aba1b3fcccfc06adc676e012a737efa514c896040effbd52c7c4 7a56049e0ed456e26e91de7e7f2a1588b9dbf59aad8548b1e037c910c9b68276 37a80372dd6948f1a3a745549a2c8d1b569a781b2ca56c4e5174bf595aae0a0f f906d2325c2895021284b0f33b38ceb48600fc9ad3d08cdb6999f99aa0a796cc f0de5c6c2f44bf832e4da891cf04e40b707e05bee9699ba96494c2c740b6f5dd 0f438d4d318614d572e8fbcd729e95af5fb994021a7e5a5f139e90ce6ce436cb 8730dd1db1ace1650318c0d20b5a8521b052b6dddf974b6ba19c1098363beee0 08615f57b0eedf837be416bb1b4921338ef319aa50f0569217ec9269cc1fb83b 0dec0fbde90c36c65a160fc90547b77a859d04d54f400fd1d22e548df08603ec 832c1be8c0a74a752e5c0d55ec214583cc4e4ae64c608eeef6a0a91596903238 4d24e0cec0b6ba81de92859e58fa1eb2d904fee1662a7e9958f0e1c3bee5cc29 1842f7ca249d83ba6273cd313164dde154ee14a52e72ad3b95a3c556b15d057e 3a8dc5b501e9c672f63b0271fc48a6741cc9b65387b8c99071c05753ca73000d 243635c6b2b04a02c6e63603c547818250218fb55fbd4eb1aac8178ec4988194 b4a0f82dc438598edaf6b940fed57f52e8df3ba17597f757946895a09655decf 8e101d1baec1e1d63eb057fae80d81913828ddf9b9b2e7cd90b2004a600c3885 d517a545280f4b0e79bae169c91d456e52fa6209bd42d2578863652841047078 d916ecbcd7ad0d8dcf9046c68a89da72bc00040f6d953f1e62b6cc6f3c3d9061 f670e3647ce69bfbcafe12fd17b00d734cbc87754a42387da1395d38eb670bb2 4e56ac6947c14992b77e7c49de0daaf8947cda115915d11495edff3fd7a35674 f9ca45235505353aa0d1c61c34f04d46b293912b31caf97d7d7201daa33178d5 67ac987f11783290a0ea0838c8969029b9f4e3bfc97f1fa3f613bc9b829bedb5 e3dd6075968e396bb16f53996a96dd83eb79cd0132a54d8fd7d1420ebf0e6768 e84055b206dd4894aa29d9511208a566125e537b0d74c5cec7744fd7e9f6c416 a68fdc306e422253e9bf2bcb01902d029a26070f094210c7c1d57c730d39884c 8625cb192c36ec0b925c71f8d9912c7a076590ca0ee1b91fa2bd3d048158e3a6 274ea012c7f91879875a51e9bbed3c9e1ae7c93de40238a2ffa93eec86d2097b 2d1b9b6f9110ad279556d9488257cdc36fa5d87299fce96b24a3b77420eda75e 58e2b54bde600dca934936701233d1ebf3efe677fa95d3514f04ca9a354443ae 0367bfaf5d9863d503d53600fb934390059f45d87e787dc0ecb5c292b8a6abfb 83f6db03c7d9670d1d2a1fb0b88481ab4d76589f8997dee86ffdc8e66edbff87 e1008b6dd1d6a16ca72fe2f3b97181aedc88f158a4faf8df17bce717ce81c065 4ff5bbad53098e5457fd79fc4e2e3eed225aa2f19502d9ea04af2fb4c0b529c3 f50f0a8b95515f3afc18094def50873ac09ab7054dcc35b7c44087f4da280897 83269b354857b1e029bce06c36292d4b60d7a3e379bf80ad0f92aff7b8a920bd 74771977839de3ed09fe139f285f9b0b4c5b34f3d55ff114586ff56f02d56c91 b19e6a9138d111f1dbb3a244b9cffeedad6b2e20c46fd8dce57f41afe3d1b841 ee038904df681ca7f830ebb423bc54c07543b490d61cbad1ee2f6ecc754f3c3d ef98786e52849006fafbf5efeedd22bd269ceb903664d1e03edbea582f8b4013 8139ab4cf0142581a6c67afe79c684c6a6132fc338234bb206831add329eaab1 f0ceddb111a07d9167a8df81e537b689fe09995ac9ba7a0bf7ea63d45209985b 3854cf5204d9ec5c700ff5717c6bc304a199c5e300b6aa96c91378e645dce876 e505cc03fbd196a5c07caf1d9497f2062beb09d4b79377e5eb451650069d944f 2c72c7bf05b1ab999ec232416b0297dcdd8853fcbc487efbc610395717045206 4851198f51316c89ae6b2596692bb7e7045fb93b604c7afb1b868f976fcd6ba1 8bc882aec8c7eef9278d6fdfed2c108df9306ac881c1189f38c2099d0dee20b9 ed7d9e79e5bb63492a8e163966605e2799d1e7ff379f84c24e26efa58fc455c8 646e7de837f5ead825c9b8716621847fb2fc03c62b92d45ccd8aa6a4d9faa1fc 31f7b5c4ca66af86377a8d401b8bd6942c83b74abec1dc53aaf03cb28c4acf3e 664c5e6711b25568a763a4bf19da82f8269eca35473427c2db36b72f28223a96 56aa58ec67889d8d6e203737ff72b6890f3f10723d0bb0dd53e158fcb81e2645 4a333f3003a2f60b87941205acff1cfcb6d68b1276932d5908e3ec66a95680bc efde95e0ebaed05d76160c7b5dee722ed24e986a1efa0c9dab21ef2f1a52959d 5337dbdfc9ff67eff62ea00e94ef89e313ba14d0e26924639172008eb4b2ae46 4becf586dc8808ca970abca24fd154059c44a7c103f7879d112b7c40add33042 509f2d0e145cfc6921c8224d1e6915c2810be79f5e0824afb0908934d41b5be5 93776d8ecd5762cd492a79d0bc117a1e1ce9178987e85c5d141915cc9b785e49 0040cd0db0cfbf25f3825bc54ea5b18471ed4a42895717abeb3a6731228eef2b 120ccb7229f12b79ca8e20e12acd12f9562eebf2c2b1ea585ad41c1f39d39a16 2df3366491d1bb097d8f74ea088d0aa9c932367f886647834c68443451558616 8e7935e745ff2b57498a592580bda66b52594d58a094424be7f00858141e6f9b ddf769a74bfca8d01ce587b35b3a367f039e9208b8633636b7ca2fab28360724 60c084dbd5b10e6e1e5a762d9bc8a64e2f659d719cdb315390511c6b8af920b0 69494912899a8d28c82aeddef7fba2546a4a1d18e45b317e6fb4e6984642f8c3 aa501b0ca0bc410f7916272fdeba6118ff5aaa0a6c75b1b6800b24980509e908 be2d1964df2b38012caa04efe50faeaa8cfb525930743de9ef25968cd226bf15 7b51601b61f9ee03b696f576ababc3aa689643a03205604c755be2f53f967ecd cc0d1c53a305a44a5ff67872045ef4d96e1cb7e837fa454ecc45f776bc4c16a5 d1df123e16599a95ee68be12146819bc3b7c531ff7ad5c6d960a7820ba982f11 9feb6e578fab1bc6d06e15f260d7824d6514732f021b2e3acae4b9470115d06a 7078f2915008c198f9e2dc1c87ad26e61b4d09ceae9c7e464e6efebda52fe73f b7714988d51ee5dc69c63746224efa4b72c05a884b2ffab9d001d4677e08ca9a ece1f00d558ddb0b4c29599a0eff0fdecd55b294427926643a6b0d5bab71b9b1 653a99489c25b9da28fa2d6269c7d1967a9c91df9590ccf8fabe0eaa91a8488d 72a1263ef7c68cdb3107655f53df8fb95638018db9dee45379736c1e5de7bb99 abac1a3f6c573d307b05cfb3ca079de863877a70cd686b75199b39e9a1d4e777 2ee0e88871f75c2cf18c59d9bc7914b4332956f881148280f76aac048fbb3c2b b926b85245e37ed85fd996c7de82f192fd3e74320122fe96ed5a97c60fa502f8 91dd3782849cd9e65530bffd3b95aeea0a95781f2b565a2233115e9f070dab0e 7e64eea245448a515409f47ef265474b3353870984ef3a2c0d17c269e3943c22 ed00e8c96dd89a7d2e32a38c587b57fb6d5722ac176c6ca8751832d91080409b 2bc2df76ca66c7b58999545847359558542a127c1a60b8b117fe88c25ee0bf16 e3ea76abe8398bfd78e7dce2a08d9123aaea7eed1e5547c3134974dfd7f3ae1e 45dcc7e785eb8d8a0e82cf77c72250cf17a93ac2db45262df7380fc17d2edb9d f0f839004d7bd1303f67f7feb3a992e1f3277493d086f81a05a2048535a3660e b9b244d6afad41d8c91238b2db5798ad2e5bb7b3c567f432c02a7005265ba4b7 b7fa3aef96e46e9a3931cd7c76c5eed97732ec412758f81b3e69fe843fee70ba 6957c7d13b5c9e1df58b82edc3a34bd67ae36d9469aef241056c49c165b0c721 6460f281b56c021790a14437587364f573ba0b85f5dc0fb9a2a4fa9d25d958f2 6a96a4665b862a2d42254075cba061fe3934b1a777ff01be719f6dd274e3ef6a 9c6ef75d907e68e31dc954b702d1b8cd85da8e12586fd22fa380a0ed219d0d63 0f1c9f40afdfdfe267624d22a1dcbb21345390ba2bd35a4ed9d8e2d0a0e27a75 a24a26c80444e5891308703a9a65b77a9d87acb7e009200032eb393dae566cb1 9a24a63fed0a157fd4994e68f0c6d740686206965fe64b79142482b2fe78d302 5644cfc136a0bdd03b5347bffef3374c5890c0c571f88af1e2dbc6bc231f05a4 e0a55b182ae50520cdeddb6ec14f12aa7c16bb7241c8403b8ffbcb4e15b59e0d 22643ee77ead530a8b99343da32d3479890e684ccf85fd7c210b0f30a7efbc94 c60902bb1ef652ba8d55da9b20111ac6a89e35ea30439943b28ca165ad13f5bb add8023ab9d17c2079540b1ac6cf1da6c7f45408df96e14def202df7ca72be11 15cf4898ca98a88876269b716d2454307712270541325242dbd5a048172d8efe ca3a944e23a1ba6ba28292638770e8af3ecebe381547b18fb697cb0b716e78f2 18e82fdfb7479922a08d0193b31b1894878a76ce8fe282c576f6fb4a253b5ad5 ada0cd3e39e3765fc233bcf43bd63d084fccacfea257958fa9f0e9f76601c09d 1184c01bd73cd31d4c73573490dad5720672d9f0942e0aebe6bd8ea8da27393f 9b04149e444a97ba8709f8e8929d6ac337ade0266bde77a94bd559f2467d5d7b f0252588b249a2c73a3c063b96443e6ba71c5d42372a46d7639d95d4488e1f9e 73e7e4c5b088808d85940114364c05d62686c77a41799f0abafaa7848d43dc8f dab4443c88d4c1af5c78cb3bed5e7ad9b8ee3b2a3c88e29d3d9af5054d0d9a45 cb97da6b728d30dd49caebf589b9783f146036fe8b47d39af5cc73e29df4a3fc 201b17d77766f342dfd8a0018d840e1ebeb633d93999ff387355fb4e7b9db99a 4cb309afb650d03461df9adfcca6541d362da380b3388696fd9b11770972bfae c77aecfb33d497038a1f42888ff66adcc008878952d9ccb7f77035f941054c76 f8dad03335563a4a234bdc6d69d768f08a5d4037a37278e61a6166a1e9f2f371 4b96a765459e629065c06f84a291cbea38a33c2810a0675eb2b98dfad34d064a 1e749e0b7750f1d2df279ef85514104735cf0f1582d48dce0b33b689df057608 11f3196980163f306ae0c103e6144eb31e96afcf3657ef96d0202bcb43dde356 ee1193eed0bee770adfe5cc5e4f589034c9731b834429fcedf916ea00f3b7c24 52a9d8a0da035a34dfd39315573a980883bd66f2a91910a0f6d96afc2a0e7c26 e786ccb27b9ac10c267bdcc1e839c288f234abf6fd1af348d127c9456e7bd498 2a24cd1bcd2a5dbff7a26fb4c3a6761d48be97c9da1d03d5d2433ff321ddb23c 8474fa91c63427102a2d8532dc514d57d0be6dcb12b9d64bda17e176892b9d1b f48542d2c08bdcc04f9d3834df5357f666391e2562c56cf28f46778b5dae12e6 ba20d01eb388ca163bc610bc81eb3247b59dbdad7b4854ad5fa10fc0e6b5f3ee 057777ab51c64a5bcd23ad7b697c991585d245931e22563699d4278b96cc6623 1f76948592424ad2146cdaee5c4b9afc60608f46c4f74401cf40deaa02ed8e0c e7c5a27ded85fa3a488b535d3fc682f14f89ae3d57ffe4b759fa7b77ea83ae1f 09f3a1b09e79627a2b285b91b35a1aaacdc1df93438545bb6ef15ac154f479e9 66d89d2bb27a4fc2e99e9e1ab1d5b1660851961e7e861663fc504210f566cf16 da4711fe93a3e3b196e26bf461c6511e8b6ac97893145a6ded60711ac4c24cde 9bdd6201b34ef50d2080fdf4cb26d214d0f667aa43911eebe1513cab06dd9502 e3d6bcb87693f522134715c04f03af2d1c5e45e76331fa4d65f7778ec16c3390 3054e15768bfe381756d32747b663547bbca78ec3e4341e9e671d8da530e12a4 3c2c1cc13a59a14123c04529b6283a0beab87cc9e9395177e7a7472953265bf9 029660a6f502c4c13928596d6a50540fc84d0e5a8deeb3ffa36fedcf484b819e c3ad45ea3303437ec35ae8930606ce8355e1eafdb0654e8a4b3fe75098ee00ab 2c74844d9d2de6a35a853537438cec8fd113e9f18afbc4cafd2470c7aa66f30c 62e8e5db701008262d4c24e7c6f00235e961ae7bcf702b5599759b15bfaee919 71a37a04f553fa3073fd7339afd7effc0790bd08f84d60eafc505bc9ea61e0f0 178f4ee20b1f224682b896fcbfba3486f14447c22aab40b2855fa748593601b3 3b3dcea06bf6b929320a70611e9fd3718c08b3c5315794c55d04641802fff2a9 96985dd4a4ff78ec96475314a6aab06faff785bc5cb34231f42d18c069c83439 f5980c5dc1b4e9073aa8af0654d807db7d2d34dd848e5cdcd645c10ec243bae0 61172a6cf76c1b2441cedd19ed13a135d8033e1913d985673ff1a9f4cb7658cd 81f8b4d60145f4fd00f718cef0e2ea469ec6e7df645cbf05ba6fcf83e02add88 fd4ac5f450965a3847cc429fd2d2bfb9bbd01d444cb30edf2a8d9f74482e54e1 83389b5c83666c62ff9101cb1aacd5f5a1ce1fad06751a35d6fea897dfc7ce86 c27343473fe2c00c3f1087cb463307c5cba457003c95031ee6b32ded3ca8497f 0c6fe35dcccb846f958670eba825bf96c533420c74879f01d000afa2213f4933 3057ea4902c1304623dd452386d4f611c0ee9378471a367aa77948ddf8d31539 c5d405913f28408076dcee487ee36b8356a8740697440e27f689a7cf59706b92 63fd0a19d92735258cea7143e120ad245e5fbdd1e280f1078650885ec931143d b3094ec79a310de8a4ff706e2e644156c626b23414aefb6e4b28180a49c2aba2 7849538d8e67817919c2c350dacea7cfc95e68e37f1393f4176a2e1cd17fdd24 04530afd9e59c6b2bbc5c386a1ae88a219edb2c9e49d20a80b44e7b86a5f068d 945f49e6409cbe59b492ba1841c2d01a9f390f9b1e5fc7f5cd2ef24aa8130218 bc6b32b47c95129b8c31b8409ed8c66c7fed09c0eb1c47f31c1bd6c906b212d1 0ff148ed2673e476ee085ed42ec911ad864ed54aab5919a2f1e9780db70f1387 57bdf64d2db83e0b97f92c849ad2ec4c4916f077bcaf0e72c5b2bb0ec1bdec9b 6196a9f13df181a99314e54059dcb14b3d88d5a9ea59b544b5d89a259b52d3b6 1a8f196343b60a22145aaa18df81295967b52102c3481bf09555ea34f6881911 46f70b94dec2494648b086b774a2e6d32ee3ffdd662e344a35be00efef1f62d6 716708940c22c0ba7c8f112a35ca1101ae4868012441e36c4eda8ca03cabfe02 278ad314908dcc9d840aab5efa05f4a4bc4f3a82bef5589d2dfd0e9f204c0713 65bac51ab37ebc1e87abcda6a329fb5d07c549678b739332617f92306deac027 45e18397ed82c8f3125b7104999b47419a3577a8cc3ce46be6de0597ae235be9 72ebf5507024f746c851a41c3fccbe194319241c2c923e0b01dcfe434f398e71 b5805122e81d590a0d6be8c8ce179e05043e5c429834ecd206c336edc94d81f7 9057e2f36ea006e1e60b8d059906eb4e1dc2c2860c834f1ccb2c247c34a2a2e9 6ddb61cf77cbcaf2e093f8480735200e1925b72ce719b9eea5ae0f84fd25e847 0d553aa3ad672231b9bf8e0157a9d93b6b65112bf0f42ac28a467d714b43f318 ba2e2fc5661d6a2beb06125c9d7356cb85f84bd21bdffebd37010658150063d5 f6a40c5ee3120349d2673066afbb8a5e7e06689283bb636681435972c8cf757d 9e5e683b3ea76f466beb9600cd87e774b626250da846c5d1205303cf83a4ca05 dbeb3459e15b436c023e0d2cf9afb48a73f1b1910a76c1ceb06469f20316fa8c 59e3129dde98edf3d30d14a9770e062c621949339500deab05638e802b995df9 9c9a074276997e00b0505583c5caff7a44e1b9f2c7741b2d9ef9add464d87eb9 794d537b18b6c763997d50253a38c64bd66cce873154600eacb917c7135d2708 9623ca2ebde73cfc3e2582ced1decf93df2398335acf2c58c5afd81121b6c714 dc804853baf29bb514966e266ffc3ab4d34824fb5232db8e5b0e2ebbec84c9d8 39cf12159e626f8ed40f299e0d92d54e043890ae799b0187aded58eb83c41ad4 0e4ec469ad0ade0e38d0481035f67468e40d86512c652aa3cedc6a89aa9fc941 0bbcbefe4e413b2ebf2e9ca69d02a30ce961721b526306383ca0f5b6fe953ef8 817a0e6bbda8adebd57b646e20d1d34a3c09bae8b7af55836cf5c312d431e3e9 5ba42caef9ebc21ce8a2d2e57d691ef444a9f8ae2285b00f231f155e3f9516a2 99f2ee532942fe2374b839f64d5ffafd650d796c9390cbdae248e787e5ff0aae 4e6244f8cf6fddc34b06f9224a0d38c9f8edd02de4dc6bea9cc453dd499f8cc9 827330cb1d895b500497697fc7a19b1e283fd4c747e54efc9f8aa57dcee229fc 260e5c147f0a784f0c5a4e998266389ba093b26f6011f9c02ef3497175fbdce1 278fab07fc300de87953977b6287eb43620b33f09f4095f81addf17c4819a835 1fe4cdefb162a6bc8a9d620bd32bdda9c80e9bc7035b64dff0f836f19bd84d29 81f7429f437eab92c0fb6953e7e2541e39f537420847fdecb667d6b41fee403f a6a1f256c35ad1bec1aad7353a902d5e35fb32d336a84fa965d01edd7dbb132f b01880d3ac7d8f1f3e31ca34b0ee3e71845470fd8e02f7babb3f5f229b7c4f8b ce40fbcb052c8126fafb5b494f2efefe0dbc90c35f28b2c4aa428d023b848506 37d91df495754f5e711175d1cf7112f7b33adcd349ea093edf38e195def7ab4e f50e78f5d957fc7a0d2ef49774ae9c146455986325d142e31a7b3f153c8033af da7204b8eddaba68db101892860962fffbe6ee881b140e188fb326b1d9140071 1ccdf502bbfac79bca3afb678d8ea06584be2e6a1dfa49d5eb3560e43accc047 3202e8ab071b966315c1fce0d64462b1cebce890d03845ca67b8f881cbb6e7d6 d5e4cca7f5c57cd8d88dbb2245215af809c4ba932a6c04e01a3b7e1b10db0bbb 1d67c849a952f67b78b1aca09ca4c402a26caca52fe9b7240d4d1901afd37bda 47f35f2175279d5b37f36c6f862f386d7ada91ff5e8028e1d1df16d6654b35b3 70c928fc58ff5e96025dbdfefa8aac03eebd538d281eee72018dd8af3e5eb9bc 7be10f8f68726cbfadbdb8c59cdd271bf71bf310b2e3a30968ab418b161718d7 955d2a93032f31b51f72107db0f415e8f3692b7d0cc37b7b1201b51826941bcc 55805161ab259e6a087ecf8d5fe92388d8550cf8b65491eace7de548821da8b5 b435484d019aca1496f95b36baedfe3b5d1ab887f212ab505cdc98a4fc4635c7 d4fc5e4f42cafe5dbc39bddf6957ac29d305ae861a377330db9c68133cc10d49 9123352371636e4a24d3da563e774969cd69a8df2c6f948271e843c373426be6 5cd95969c190b262e6ea71d48796d4d7838b37b24589628f0fe8c8649efe1f16 1f22a7bb6d4fd03c28675aed5859a2e2fdeffed435c3ad897917f8a27e3c9f24 75c2950decd5ecaa1e1d5d95616cd93b93d4d4677d0b5f47e6e42c30feeab4e0 192d5616b3eff89a24154939cd28af21976bc27c4b23ab389fc7ae972cbcc390 dcfbc0c37702861518f14d5af4cbaf93a623a0eca73ff4110420fb11d6d07c35 8c4e23a3641c601b159da5a0fb2dc7ea33c73fc0feb847eb4f53949c4c61d83c cd07f4f5ada0bce6162a577e75294c14ba660cb1e25680530beffffba0ba72c6 b47a06ecf6e7fae1708dbd64711a4478aabf92a0fe92f7349a7e0226bfedf06b 7edb9973bdc512ef5882d2509a277b445e9cf5ea1250bf25c392d2ac8ab097e5 19444446f0e27284019eb6abd01f947c73a50257c72e0d6f9b9596f415cca0f3 05638d8ed71f61ba65295886f62acc8f50a7181c7f0944360d374e800d60b971 4f6dd534cf511748639d855611fb746d8e6d3f6f9ba8ae8271b73d6fe9d7b6a2 ae31a9bb8bdcf702dc59d14f07f776aac86d9246d67dbadbaddf923d2819068c 9fa87036c92f8bc40ead535f2312ac1b41c257f8e7d76283b47d99060da21289 c91bcc3d0304e8e18bcb39186462460fafe7719ab9113b917cc08757602866ca f1ec6292d79404bc32a0ac5b1df9909f569ad65d70cc972ec7844c55f4723861 12ddfdf0743d9233bc2fad1007e2b7e2e7b9d241ff92fc9868d7b346cc3d0326 67b77096e113b10da8725ab45b4406f98cd8b7daf7f19f24e4024e68ac20e392 20a1fd0427f22a4426615d446713110b72ccfe00662a6be4c0f5e582dc562e89 65c3f554e0f73eb024079b86e3256523686cca9954f37f406ffca8b405a4c2df 7c55bd2f4df6456035393f1e9dab6de9174101af4e6634a9b3030a0e303f2e71 aa2199b2f559c43b48d903740919a610ac87d4d4b020388af2e4c5469aa440c1 a9a07d02c8fd92e3a99f8b760e32563c2ec98b7655da4f05256abe499355c308 e7aefd612bd7ee0c15a30806c1e09d388d92622f2cc1b2c9fc8a388d591d84e3 bd058c651548bba4223fefc6804f799ffd5ec8bc7f706a40f0bcd6c390dde684 1cf87123c1490960289e56b2c7023618dd5af5ea1b4dc0b0df3433a85c04eca6 7f83fa8f1322a6004eb49d18db17716cd3f2a6d6ee3ed139493f4c6501d1f6b9 a5cf6943ea6b0cd4a90c4ed9df729ec7f61bada72f9f257d896309c3f2e26b85 44a19ec7c7cc93012c7c86230d2b76cadc17939bf642e6686930de896220d39d e597fc3ce1471df76254ec0acd2f495a3e54ca71af63b885b10aa7d6d1d713f5 a2ac3c4ff4d0b9ce1f191292b82a3b64b01213ff25cd4625206b0c872ff8f771 c5bb0e10b3eb66e0743618d0c2253de17970b4d4f6042c81d1f2b7750c9f999f e6ca7d4d8bcfffa43997783ac9a354eb6d821517e864c805ca5a698871819b47 76271ffb31ddd79e5ead81b02043cdc49b26503a2222260a4a3a23894197c04b b5b34155f81653997bc9accad225ba2d684ad8a6bc3c305eea3caa0d25dce33a b76f7b30cd43f606e87842886116b7fc16a1806c39ac6af0af605d6636c74d13 c9a80195d4c3a837c06b3c089812162ea3a6e3a10643e5a43201acedcd80673c 263d09152c4f85b953db8dd636d5e5ef55b982907549803a073173b8aa9bcdef eaea7f44617d32d06af61584d58f0564887ec8aec53a834335cf55de6434e0de 89c06b756c83a3613458e3e5cc67178a780bcf288367ef15af1f49431b9b3aa7 c8b92cfd5d3e20a78acc97a1c30465d19449c6f1a526fb5d53164b88dae073ee b63692f814e32b7e55d0a89e3c06de20255f886907db42050b718e62cc82119d 67877fb77a432b21f97c73f10f21cab67c1cf8dd9ceaa39d51b8e9b9b99fed41 aa14d5dd0a05eff66fddb2710b099a746fc152777ce4e9cc88e31f83f89be69f b568dd30765ed236f5ac4abb2ea201e69eb147c9f359cb81b671b748bfd736d5 9ad4f8c7263b0ad7b0de074b99a931fc30089b7cf04d6292400f0332261e7dce e092279dd3f39e9c3a03cb2eed7028add467ed4dcbcb2a7fac582ace143bd337 2a16079f090d39148583a22ef5fbbbe2ac19eda318185bdcd971c71810f8f782 fbae8760fee303310774d0c51943f5fb7e8adf93e45655f1358ff0221f025235 4d4e6f67e9b45cf3f73e0b903b81b3dec506f5320df7ff61c1b6f9da250be4c9 11934031616821e37089ac2f3aff69acc64bae8ec7ada87896d46f3c7d15296c 66af11c0c6a292595c339dbaabed5597e5db5b7b52cb7813671420b03cd9d176 0d26e33989252c23995609bb4eef8209f53622a7c98969de0c03fb176ce29af0 e46eb2d20d398c3eb98dbdbd38d5f7bfcd022cea2415193b782bba85a60a70c7 ef1d19a1ec3406bac4d50313d19a82e875932fb1480352bdaf4a2ebed585afaf 3d95aac8f143b8c2de9093b91ccd061134a31c4735da0aa426b66760f4607752 5fcb894a03903318cd93f9650af41364606cced92ff884b5900e856c71b0783d 98175902e781cc69e36e09e31ac96c6b843e07aacfc2669a3b336bccd20fc223 960f474d44b95bd6b6088278633f876af3ae22c10d4f5275bb96543af2d5bb91 8295ec377e67d199de2112c00564795b716152c67bb77053568ca664b4ea2753 84f045295e7a6b478482df754837a14dc027ccb54f376d72fdf0a9e806d686ee 1a8d55190f7fe7a8ea5e5640510bb466ff74c388d2631f1ebe728b11cf5d824d 9b38f9c6b40dae6d379e26a2fd58a92b7de817c34a18e34b779e3372c4255689 3fb027f968d0ef2119946d6c3e7e3eb3a589953972bcabab06157d3fe1653028 82420ef438366b715fbf2005c2784076177eb3c0ed0e65e36877463ea76ae1ae f561b5dab94daeb95e7ed27257a0f3cff4ed4b25b90453ed23db6623776df27c d161248ac336bbec610688e25fd49474d98efd760d85c6e009b603db73ee9ebf 68ccbf0ba7f334d091ded0816d2ae02f95dfd5cebadcd7fa6af68a47ba81e2f7 fd7ef6dce52bdebf10a7d7e1a0d898daa631ac837ca29c4321db58452ddf90d2 5fb66ac2ec9d24fb73b9c364b03308e8a41759397bc9a1ad87a8936bd33d40d3 c53600598937f2cd354ace5efe2e1c2b7d350a75d5481bf4b0ba570adfa92848 3518493ce0549fac3bff42b6b4f3853cfb7dbc76bc52ca6af2f6f02741140105 dff7f42652fed61ed189b56ebc342a7f83daaa77f5c832be00d85f75bf5f32b3 d0310b45bf58757ecc8445ac1ff480a2ad9a373a779f195ba540a971778e1abd d5690d4c4f9cec730aa72e119f5e9d9d7d0292913d0831645bcebe74ee2497c1 32310bb14e18a59df223d67d752fcb37c1b87276291515826e985d683d604e69 6de4088c1e776b262a3fb211add677fe7efa8eb03a3738e3cee8170e3ed9a76d c060256410922916626fffaf2695e497f566de8c009f45d87e787dc0ecb5c262 3fcaf11ea8b7b60edec4f979da5605a01f5142964ac6e9966ef6ad1ae89fc539 29d8fde4ee7a5abac4b069bc86026dd8b86e2307a285ec92d6ac7ef70732754b c3efd8e7c9846af06beea8362fe97f209ba5f403b99db9c79696c2661418f645 b465c9ffc91427b300343d75aef1ec6a46e79dc54423443a30a53a064bca0afd 378d2efee0c0beed931343293e954552e6ac29f8aeb78e83e5d0595e5adf4f58 a5d2a7aaf234c5c1e6ab8541d233558021b60c38ce2f84f40079f53bd8a32f19 4f5d7ba8a489f83ccc97d7f7493ebb0610d68b4aeaa786a2c26e6a3f784869b8 aca40fdaa896e0afd0d82e2643e25fa3832ba98faf57f310653dc84fa676a978 708b41630fccedfb0a0d5b87de6356a1beb305be7c69d78e2d3bc63d18d2126d 99ac4ce28e01e46934acb0aeb8faf8230602a96eb93bc3c429a89c8a40f78765 3b845bf1ab86e64fb435319b2150b8d3f41893d42f2c398cefe51cbeedadf2b3 1fa0f8e8d959cc296bd8d69ae3646b935e2daa4287065b295e11edaedd735b7c bf62ba02df7c0f0ce3e06d33e4084328407e94a732eda049ee77e9a2f5e8ca3d f5298d712b71f3d92541b43eb1c5ca5ca7a45e1521bdc85490b6a0d889835255 34ffa9bbb421c267359fdbadf7123c50e3c75bc4bb5c012d7f5705a39e9ab728 a3ebd880dc109fa55ccfc9f6aea9db39cef177b1f4ff87df3d947c80b8fded0e 88819f7edc413004ab6454317c0c29a8bf38a8c240d7a2371672da59997ee802 304f021b304cdc9b1edda36af271685f85f63159759bd8f56f6896fef761b668 0b29898fd2a5ed276fb017fbaa84f1170d58833a7f68a317f56f4ee54e6b1713 1c04b6e05206e9352665bbc4145c7ad0222b82c0438650dd808beac5d1bfbaa9 f18959e906b7b19ac38e48737649bcfe18b65b7c7180f066ad14f1088486bc01 7d5253abb3319d615095d6e09790ea93a1497096f3b5956aec657dee74de1ac0 f3d415e6e4a482ab2a24e093d15e36b363399de00ece9c420ec3d16a15997633 3ccf3dfcae005d8eaa7640ec74618e2d00c60df199138af264fe89c10ea495b0 9fc6a35717ca7852008a18e9127a1643b2a392b2bc771ffaa89e2a0fbe1c4fc1 8c8f06528e008bb5105d4fa14bb9175fd2bf11038c2487efd86e6d82addfd44f 624fa41517c32df494c85d86e16831bafbf3501f65cfdac8e8b40787cb952dfe 9b0301b767496872760e3ada05feba8233f0babe97268657a2b63fb8c2151a26 03f8de7dd5b983a5d7050b24a81ab747b97b7d1646e44336d0cfe5e6d3c1bccb 1db6c8b045922b72152692d45e82a035dde4acae20edd726441a24be4a8ecf5d f3ec2716a834cf287df8f36d7e33f28cd131dc9bdf25b3fcba4bf9fe50e0cd35 e93020bca910088769a82c7a8e07ae346d047d08d6f2652896df72154f1c4e7e ba152c5da45b6c921cb173fb0cfd7603d6a07d2cfba402e3ee1c7f62b0343560 edc77a13c07a81da146b0e0445a28bfa5551530b897f45a676a5452f2ff1f628 7420c09683f03c4272a86b45cd27e0068ec5da29fb22edc5e9c21fb02f08f4ec 1e3a537ed4aca665635563c0fdb3c168af07829359d958deb239c90c4881202c fb79b7c3ba764757ce6dd76477d0f5f75d6d134e1964bcce7f8b895bce048d76 1b159c6e704b6d7afc85eb925dfe31a012039f852d3bb8eae00b348c8646fae3 faef8a779a5d5aedb719457dcae71290688123df52e7e15bed8b1dd312765da2 9341d9002599440a7c8517301cfd2935587a9d191383f2a3dcf1ca8fea15d0a8 3a22017e0ae9fbb7a69370cf1239c06df28d3c76ffbbc0c771ca56bd08b0bd1c 82d62f10ad2d10b73c29990fdaf92553af77893746973571595355b18e00d6a2 61db39f8dbc53a5d4bca688543868ba0578e487113907a1af3692c9e9365161d a5ca513e5a553e3cbfd7f066bbc9b702ef634c8bd5a7a63f9947d1702ee4e360 37c326590a1015e3a53799d8174d234cc69a880d34300bed327ea84a10c18b31 1fac78538f6463bf8b28cc148252e98f3e9d1f3943206927722dd9e33337abea 5979e0769effeafe0510b73c0aaf6e72f72b3f9ce9106ec6c224b6622562cc2e 3ee59b6da0e8f4b92f1873a2c3c273dfd61101dc1bccb7acd4050310ebe1db0b de98605f377e5012cd707b40b4abba9164b0c34ae2d7d037c25763668f66b149 c629864741b3b8fafbc40cc5d2f5428c30fe61dfa64299397010755d9ff78790 2e97603795de155c3224a78ff807063343b9ea1278e210d30567fb39af15d3bb 790db4663b202e50b5155e03d15df05f78b193338e68135091a001dfbb5b0353 d98d06ec38c761284b2e61a6abc94f3ff0783856b4787d17949088b1d810029e 6f63fd5c422aae1bbadc0fef8c33c198dcdf494109763aa6d7d2251a2ac637d9 a9c8f19dc0a3862f12ba4a92ee612744a59cca3142fb7116b7da9c6b10011632 e446bea51043c3c492f0a8ca4c73b3d75ed48193850607594aaae4773c9dd51a 07e0c6138da0d6c0e48f1d0658c46f5c3978def2ac2d68bdeb6de13bcbd4cda1 8147369f67c03ee0a033fe3837e2d1925b22d80e0b13bea5247e2158ea6f35fd 81d6d171629d041e4669a0dbb529fd44237a22a9aabbc4cf8b87fb180797a969 b0f18318dd2313f98cbeb4385aa1813a6777725edadec4967864771acf5ac686 6019caf053f61f5abcffcf58608ee2e7c882189d615e687e051d164f20e6c9dc 8d91e6c98dc8423efb3f3aad8be4ceec12b650bc7fc3bee40c409e91916035dd ebd4535f508574dfcd08c3d0194ed3b54941a5f232221c23d96b2353df39f158 f2c7842f8a936406dbaa176e87d0c0f8315c9a6294cb8ad94e8a9dc1de602eca e4ab4e8494f611d5cd5630d4a816d50ec1cd14838b2551707ae7f914c27ab040 18e4abd6fb5690a767c080ba84a84c9bc409beff793ab76a966628717e42f590 caef7fbe85666a9f56a5388a8bedb286d9ab51dd34e51663fab03bd0f6a13bff ff32b80c614e9ee64205528449580f80f32a32a2ac7912372e5f3ce2ad90b0af a85fee9011bc14a1c27dd54922e764b748b807bccbf2c3022469c35aa8632ee8 dff7bfa32ce8b5471ae3034b5c1c09792ec5f657e99d727e7eff125c2d9c40a1 a8de5e939fee67bba4827d8f1b03010c44859e802271bfa50718999868c0c558 868b1d50256f145914b12bf839354e1edd114451225e689c7da953bebe7f0f41 6b91a62bdb98f0272d21ec2569295d41f17c838e10305c15feaa649996a7bb91 fadd5c1b8237be48843876a28fe0cc70c47480eed5b234389791c45f471ef178 1785213d442c842805e8172a81c24f3252f3d48426efb0ad29b7a72b40e6b5da d5da3a7818b1bb3f79b42fac0281a9f292a873106acc07f2f3cde7ffc1c95bdb f9a90f3658a4f756c931dfbb82162f357287c22e4a03ff4f99dc9c0961fbea38 60ab4bbb15ac008eebf1f534c610eb68a6f45aeb7201bb4d5cc5462420844420 faef2ef267ac95a57a91fe08092b88d3419f871924abf64fa293026fefa71b0a ce56a0a3d04c5c9c5622c414229bdf33732ec02ab9a9d016268bab5a2a3015ae 58a16f4fee8f2bbecd905febcd0aac46bf1ff8b9374534549f12dcedee9f8142 89eccaa560a142261653e869659da5e169b6a8cdf1b18d512114b6a6cba56686 298d7d595f96efb60dfc0eb12ee8368b77ff0d7e4ea0c2379d04099fe775744c c0992b5f022cb0b03826dba919e699b28ad93cfbf5535ba2c2e87c88b7182e06 eb455a292939437aa9c19c1d6d9b6e64bae11f7b473b23332c5aa75ee1a08382 a0f8c5fdd5230bce2d2c65e0f2c0f43907778d6f2790c03afd000844df15aa71 ec4b89e2bbab1213574d25127dd153ec12c88c2e0257fa1ad56145fa3993b5fa 5f3e1141c72488c36b76ab4ea9eb90edfb65b7cca042ab2813ce72f1444ce98e 653c07ee52c7431ae30611be1bf7920b297f0031c39263c9dadc57f01b8ddf88 a4df4ea127eb4717b8d959498d664ca73c8853a388fa75a5055cca78daa77136 2ad841723eb042feb4d0bf1ac53a85523a022c6a064347d5b30b04f4148155d6 124f725f912585e3f75de106c7c1253b4edc1d9bd32654deef2148b1425cf96f 53ebc34b38c758630e2454f70c4bf8db93f4c91a12adc70e6cc88ff184e32bed 201197ceaac740163512147185dc70a669f1bd7e93306f72d0538e92d1992f54 d0f791dc4e6728a1ca7b24eedbf4dd932c06f20b9c82b2b0965c170eea6084e2 07c01d7149ab343fe115009c56770a2c08032f437f1cb885d6f93ce9fd32ecb2 59951ad6954e4de756146e99e442caf59be4ea009c7ce568d754a67c04ba5854 b43f76efaf5381161659ac498e4c29009a9e48864972fa5dec8e83b667ca0912 17c379da0477233a7ea38e7e575003b916b764d1599d0f4b91f3d538803b0d7e f234a731a190ef661fe1a5698d6ccc123cfea1f24fb121e14c08391053e8f773 43ab87875d5b53b59e78a3c3b56e0a94dfb18621a7771ba20d17e39799f1eda8 806cfd694e93a700284fd78713444880a80cde5d4e103c518ccefd6fb9e4736b c8265449a9315867973b070e54f97aa21d4602e0e039cab28090e88cb7dbc1e5 7f55a172f2244746c07ad7798e615d46ab1f5a21f9bcfa32ad59200133ea9364 bb06d0627b001c0e97b67c24d4cb7ec7224c1f8a18744aec79d8d11fb10dc168 a784d19d7488ef6e0abd4a714aca21fcdc9a9c3af690a199835ed989a40a74ed 9774ab521a4177aed1d4faadfe14fd47e04d3df7e4b3ffc5a421ee7eea7f4463 08c6871a3ddf61992159974e8de2bf6bfcab44868767a8e6c92c0a81dc4b492e 9284c4b94e230a78a6aa88ff898eb28fd111eb59c119203744a1909dce66f3c2 4a317267c3da04b107d92da3136fa6515914aa686a83a5a35a5d704d7ed88184 9a3b1664a2b40a16161b7027443fc9d047b37a1539b056c1bae0d651e9786d01 29de86dd0a497af79240d7ff808f60c93d129285e4c4f9b9ee05b0a39fb159e4 86602eec500d12a476a9bb06a1c32109d9e8685b64f055794db1b5d09e3705c0 482239657e0d43297e63a07879a9451bffcc1ab9d286b046e85ddc185c601520 bf4b3765fe1d56c5e22e273784d0738fbd5cdaf9063150a976eac28142227b0d 8911796d3e95773b930f713b4fd1ea13ab6ba13fd302944cbf7f8c34888502c6 f860fe90832669676d35073f2a0a2a451780eb5f0bb2a6bbb28013ba5ffc98d5 79ea362594466c7b7d2d50f31c4857a0872bdd9ef3501295572a9a800276e9f9 599fc32c129b3db715a80743e40f864e554218f2e175fd902e01559607b8a4ea 584a5752314488b657dcf88c177716749147e348af0c71c73df2e0a9de182339 b0892b4103aee8f3c58901b666a9cbb72bc07d7c5887ead8fb12b8dcbd035a98 7292343234681ac0158d6d6a551a55e88e320dfed15bbcb562c5b35ea2d04413 c08d89b5f2766854e2d5da630332872eef19539813df686fd4619f9baa72f1e8 3dbee8fe85105221c50f9798b3c131d661fb510d9da2cf6e9b9187e25dac8c87 08374a18c7e3704cdad37e8fc96966e7ba1f934af01786d8a276dce715026893 6eb4cf61d21b9e3777731727fb3d70fb75f0f3271b745cb2496c0f37841c549e e17b06ba4dd04a2d7c43021a2489fe0ce505a116694279295f88198464ec3549 7bface685c25ed53b9cb96e81bbd84daf2037e6764cb0076930b5045845fb688 f9663c9b5c3f7fcf21049f624775e2b3c88c26a48cd6c526169ebc0eee415de9 1f8c3f7b652780e8293f5b7c727f8c8229f5b2a23c12f30dfa20444d7463415c a8051d87307a01dfeb14760c1bc191f41eb8b20ca401037918c9f3eb2c645ea5 30b93b89f2d0d292b809eb1e67f858a1b024b8b828c448d67ae33a660a0f6c93 5afc16d67f4d68e2d135b4429fd3d8ad990df527e769a5d6d3679fda111ac1f7 da48ef897e083d7e04a4704f07e992123fed8e403842e3cb160c052c512c5d3c 587acd382aff556d645dedc12091b5de5341c108e62ef84bb1c7d55a915382e9 ff693683cfa56a2c562485a0529e7e57f4241c237fc487795292a303842d2f74 8160303b150454ee330b4d39b909472691e9c8341785feaf9ec0c5940ea49691 55de9bd08e79abbf6c65e8bf339018abfe4b142eb8a888df0a21dc64bce0cb3b 231079d860f8eb3aca9413d853847b32cdfd7a2a9dbef5044e0fa6b2dd4a0755 dcac723a3e6d1b5079c3edde7ffc16292f96fc2eee75669151f9e2c3bb3974ec 2c75e6e890b4d452cc8d9a8bd0e07f3eff6520ada3de398d25c62a7805d96417 631cccd632bbff2f44f3207a648e127697d35f8c7764b18391bcab4f2471eca4 d635e77569cc188f869d810a9d2706697b47036c7f7f98513927ed78f4cd4132 e43f3d18f3b283db38f8cb844643be92b793ee6043512d9a65f264cf4935be49 8eae16a926851bc38d37bba2f68ca61da81fe32571518e982092702f0b6d6052 6868ca9011c85c9e9414f669bc603cc4f094ad0ccdf4321db41c40b3c87cb9f1 c2ccadd6d28044f1c153f22c13c33b90035f43dc66d52814bede66cdeee3a4ea 5becd37ddc5f6cfa275a8145a4a19bc8e83b61f598df68c4e280330e06f20130 9841caa6444ef420fe89439de820c96f4bc517a1adeb1bf7983bf9c7cdda7602 a6bdab28baa373ab9832a45406b89da0acadbe8a1587a7bc96c843f2d8d27ef5 262bce7c2288dd456c008570afdaba44b94623f6e45d3333c7abda12a8ab8bf7 080531f427e7c196b26a56a327053e0f6d1601becf41982fe77b5f5873c752de 6165c972ec79b521823062bb163a6080f14d9e4b3e13c086814506236565e2aa 59870bdf7c97c9960f2b7e0a250198ee29708f98ed5e45872f18c3760547cb65 9a3f1b511efaf4f376ae0342171311c27256b80b5aa2948ea0fdac87273ad517 ec7b40d745ce087bf16a3bf569fbfac63ef6f7278b2a375479d18f5fc90b50ff b010f17fa58d686c50f7e7ec9f2484cfc844bcf8180fc652b82c81f984a735bf 869ef0297643d0d207b4d18333f5fa5e2c452733494cee2d29380a94212ceeea 55079b6fe5875794e8195e589f42a4d996ec8d812d7b98b45a747942813c8b5a 81cf08a783da823a8e62394d516b077602c55cb520536cf9ea01be64436be117 3ce09e1922756db50eaf4664be4e4206a5963d1b809c97aeb3bf3272eeb4415b d08681cef6a6126230b7b90aacc1c83ca1c29b3d07f7e68d3d48b18fdaeb8caa a03d697db6463f378e3c28f561ab13d3f046ad71ec12cae1ccd4828648a98e7e 4baab9de55c8b639bdd6282989cd3e9fd859f4af92353316b234ee142b903764 2067540cdf4a97956aeefbb15bab9ad709f39aa0745346e371ade86f008c4890 2a13b47c90c4520c70e71ad2271b3af18a34d0d5df37834d08eacfd158139802 aaf40c8040ab1f7b1f8c1ca63e55bcbd5d438a7e02f4327642dba85b9d067470 27df6ef58c174dd59a90030cb4d94167ca8bc6883b88feaf7c03654ca5fe9c3b 0907c4d86f96686444f42ccf06aa57dad9505c60634efa6945bb69d5408b041a 2890ba705e5546bc2cec11d48b4c693de2303050e94eed2150fa751db4c882b1 1a07c4de219244abd29836e90a703b99ec8eeef9f0d6232bd813158d560492cd 91d34c1500addc69f87b62f6055647c14174088120adf6dc3f37f2634f48d5d3 523fe42ac6460a016799cb4279f65d86e07bf312fb4875c4187ca7e0bd013b19 710cdd78ce8eaaf559332f11f4fe1b6c96f83edff78d32e2d7465521db2925bc a2b4e479414ee949c50c93293d9abba5fa2f83cd1c152dcc67dbcb76f34c5950 0e1ee7a9d97a44eaa483bd45c6df8a0ddb0268781a4e42e63cec18bfa227d3b5 049ca408f0c45c71da31703a6052acf7595a15a843d67d264dc70d9736487621 e8b9c26b9ff9c83cb80675f9f7bddaaa8675e945bece54702ff9fc63acf3cfa2 a3c889e2e3495fb5b5d585a29376529679dd92656c6ba32ca28ccb05c8d6d96a 593547 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndResource %%EndSetup %%EOF pmw-5.22/psfonts/PMW-Alpha0000644000222100022210000007477314541067540013470 0ustar ph10ph10%!PS-Adobe-3.0 Resource-Font %%Title: PostScript code for PMW-Alpha font %%Creator: Acorn Printer Manager (PS support, v0.23) + hand edits by PH %%CreationDate: 20:10:20 25-Mar-1993 %%DocumentSuppliedResources: font PMW-Alpha %%EndComments %%BeginExitServer: 000000 %%serverdict begin 000000 exitserver %%EndExitServer %%BeginSetup %%BeginResource: font PMW-Alpha % Renamed the font as PMW-Alpha for the port to Linux: 21-Aug-2002 (PH) % Removed %%BeginFont, which was accidentally left in after %%BeginResource % was added, and changed %%EndFont to %%EndResource: 05-Mar-2005. (PH) % These comments are historical, relating to the conversion from the original % Acorn font: % ------------------------------------------------------------------------- % The name of the font has been edited to remove the DL_ that the % Printer Manager sticks on the front. % % The treble clefs (on characters G and g) have been fixed up by hand. % The Acorn outline font has half the treble clef defined on G and the % other half on g, to get round the 12-bit limitation on bounding box % size. However, each character includes the other, and this causes the % Printer Manager to generate PostScript for each character to include % the other - which causes an infinite loop when either of the characters % is printed; a limitcheck error results. The fix up consists of moving the % definition from /xtclef (g) explicitly into /trebleclef, and adjusting % the arguments to packedarray appropriately. % Philip Hazel, 15 November 1992. % The new fractions have also had to be patched up by hand because they % relied on the Acorn font habit of not recursing. This was tedious; try % not to have to do it again! % Philip Hazel, 25 March 1993. % ------------------------------------------------------------------------- % Added downto and upto: 05-Jun-94 (PH) /PMW-Alpha 11 dict dup begin /FontInfo 10 dict dup begin /Notice (Converted by MakePSFont v1.03) def /FullName (DL) def /FamilyName (DL) def /Weight (PMW) def /Version (001.001) def /ItalicAngle 0.00 def /isFixedPitch false def /UnderlinePosition 0 def /UnderlineThickness 0 def /decode85 10 dict def decode85 begin /str 0 def /ind 0 def /getc {str ind dup 1 add /ind exch store get} bind def /getn {getc 42 sub getc 42 sub 85 mul add 3500 sub} bind def 101 {exit} bind def 109 {getn getn moveto} bind def 108 {getn getn lineto} bind def 99 {getn getn getn getn getn getn curveto} bind def 112 {closepath} bind def /unwind {/str exch store /ind 0 store {getc load exec} loop} bind def end end def /FontType 3 def /PaintType 0 def /FontMatrix [.001 0 0 .001 0 0] def /FontBBox [-360 -326 1324 838] def /Encoding [ % PMW-alpha_Encoding 1.00 0 % This is the encoding vector for the font of alphanumeric % and small musical characters created by Richard Hallas % for use in text when printing music with the PMW music % typesetting system, and also for general use in text in % desktop publishers and elsewhere. % Encoding file updated by Philip Hazel: 25/03/93 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /.notdef /smsqrest /sharp /flat /natural /doubleflat /sqrest /leftarrow /rightarrow /star /plus /ddspace /.notdef /udot /crest /zero /one /two /three /four /five /six /seven /eight /nine /smqrest /qrest /dspace /equals /ddot /smcrest /.notdef /.notdef /bassclef /C /.notdef /dminim /fermata /trebleclef /beam1d /.notdef /beam2d /beam15d /cnh /mnh /.notdef /ds1 /ped /breve /dcrotchet /ds2 /dquaver /.notdef /altoclef /semibreve /.notdef /dsquaver /.notdef /lsbrest /nspace /lmrest /doublesharp /runon /iturn /.notdef /.notdef /cut /downto /uminim /f /xtclef /beam1u /.notdef /beam2u /beam15u /.notdef /m /.notdef /trill /p /xbreve /ucrotchet /s /uquaver /upto /.notdef /xsemibreve /.notdef /usquaver /z /sbrest /bar /mrest /turn /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /stave /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /twothirds /threefifths /onefifth /twofifths /fourfifths /oneseventh /twosevenths /onethird /oneninth /eightninths /onequarter /onehalf /threequarters /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /sup0 /sup1 /sup2 /sup3 /sup4 /sup5 /sup6 /sup7 /sup8 /sup9 /sub0 /sub1 /sub2 /sub3 /sub4 /sub5 /sub6 /sub7 /sub8 /sub9 /.notdef /.notdef /slash /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ] def /CharProcs 124 dict def FontInfo /decode85 get begin CharProcs begin /.notdef {pop} def /space { 640 0 setcharwidth } /if cvx (e) /unwind cvx 4 packedarray cvx bind def /smsqrest { 260 0 setcharwidth } /if cvx (m6T0Xc6TiW>TYWJTQWcxT/WWUYWmUyWl5UFVlGUFVl>VPXl,VPXc{UFXYUuWEUeWc7UYWtTSW|TiWcMU~X6T?Y6T0Xpe) /unwind cvx -26 -180 /translate cvx false CharProcs /smqrest /get cvx /exec cvx 12 packedarray cvx bind def /sharp { 460 0 setcharwidth } /if cvx (mlTO[llTO[pmlTO[llT`XlySLXlyS-WllTAWllT-UlySnTlySOSllTcSllT|Pl7U|Pl7UmSlbV>TlbVYQl-WYQl-WFTlwW\\TlwWyUl-WeUl-WwWlwW8XlwWWYl-WAYl-W*\\lbV*\\lbV9Yl7UjXl7UO[llTO[pm7U7Ul7U7Upm7U7Ul7UKWlbVoWlbV]Ul7U7Upe) /unwind cvx 4 packedarray cvx bind def /flat { 380 0 setcharwidth } /if cvx (mJTRVcxTEW8VWWpVfVc*XMUMUtRJT^Rc2TXR*TdR*TrRl*T?[lJT?[lJTRVpmJT{UcJTLVEU/WwUHVchVIU+UzRJTzRlJT{Upe) /unwind cvx 4 packedarray cvx bind def /natural { 360 0 setcharwidth } /if cvx (mDT*\\lyS*\\lyS[SlDTcSlPVDTlPV~PlpV~PlpVCYlNV9YlDT\\XlDT*\\pmDT-UlPVcUlPVuWlDTAWlDT-Upe) /unwind cvx 4 packedarray cvx bind def /doubleflat { 700 0 setcharwidth } /if cvx (mJT{UlJTzRc+UzRhVIUwUHVcEU/WJTLVJT{UpmJTRVlJT?[l*T?[l*TrRc*TdR2TXRJT^RcMUtR*XMUpVfVc8VWWxTEWJTRVpe) /unwind cvx 288 0 /translate cvx false CharProcs /flat /get cvx /exec cvx 12 packedarray cvx bind def /sqrest { 380 0 setcharwidth } /if cvx (mNT8XcNTuYBVWYaUcWcUUCWyUKW8V]WcTVuW3WVX9WfXlUWfXlTVDVl8VDVlrV{WcRVKW[UdVjT?WcZTMWNTcWNT8Xpe) /unwind cvx -44 -180 /translate cvx false CharProcs /qrest /get cvx /exec cvx 12 packedarray cvx bind def /leftarrow { 924 0 setcharwidth } /if cvx (m_]hVlIWhVlVTVc]UeUeS{U:ThTcDTTTNT>TnT0Tc0VOSuUiUdV6VctV>V/W4V7W*VcuW|TaUeS9W7ScSW/SmW-S2X7ScgYcSIW-U2X}UcXrX4X~XcEW0ZiY=[2Xw[cmW,\\YW,\\;Ww[c]UC[wW0Z7W~Xc+WnXxVpXpVpXcwUpXBVe[dTvZcPTlZ@TVZ:TFZcYS-YFV;YFV@XcJV2X:V}W,VyWpe) /unwind cvx 4 packedarray cvx bind def /plus { 640 0 setcharwidth } /if cvx (m?W>ZlTV>ZlTVcWlwScWlwStVlTVtVlTVDTl?WDTl?WtVlqYtVlqYcWl?WcWl?W>Zpe) /unwind cvx 4 packedarray cvx bind def /ddspace { 260 0 setcharwidth } /if cvx (e) /unwind cvx 4 packedarray cvx bind def /udot { 130 0 setcharwidth } /if cvx (mmS]ScwSgSwS{SmS0TcaSXXT6XdTFXcEU=Y]UAY]UPXl]UNTc]U+SdTkSdT9ScWU9SDX9StX9SctXkS{W+S{WNTc{W_U{W0Z{WI[c+W5[ZV5[]UI[cMU2Z7UUYRTFXpe) /unwind cvx 4 packedarray cvx bind def /two { 640 0 setcharwidth } /if cvx (mFZ0VcHZZcmU3[aW|ZcW1YccW2X?W[WoU[WcrT[WrTtVoUtVcYWtV]WgU]WzTpe) /unwind cvx 4 packedarray cvx bind def /four { 640 0 setcharwidth } /if cvx (mcY9ScuY9SZE[dZLXtXLXc7WLXWWVZpX>ZcXXTZ.XjZMWjZcXVjZwU.ZwUOWpm,XtVcaW]WXVaW6VtVcmU8VqUlT8V4Tc\\VASWWAS}W4TcFXpTFXBV,XtVpe) /unwind cvx 4 packedarray cvx bind def /seven { 640 0 setcharwidth } /if cvx (m4X9Sc/WKSkUES/U1ScMU1UkW*XpXKYcOWXX{UXXPT/Yc4T7Y,TRX,T0Xc,TuWgSuWgS0XlgS;[cgSK[ySK[}S;[cFTmYkUP\\WWvZc8XFZEY2ZwY~Zc}Y5[4Z1[4ZvZc4ZyY4XRV4X9Spe) /unwind cvx 4 packedarray cvx bind def /eight { 640 0 setcharwidth } /if cvx (m/UCWcOSjVnRzR?WzRcJZzRfZLVzXCWc4ZuW|ZE[jVE[c7SE[mSwW/UCWpmYU]YcYURXvV:X*XiWczXuWaY,Z2XXZcdV+[YUbZYU]YpmyUpVcbTdV6T2TPVaScKWQS^XgS^XpTc^XoU?W@VyUpVpe) /unwind cvx 4 packedarray cvx bind def /nine { 640 0 setcharwidth } /if cvx (m0XlVcSW_U]SmU]SLXl]SLXc]S:ZxTE[|VE[l~VE[c|XE[LZCYLZ5WlLZ3WcLZ+U+YzR|VzRc~RzRQSwUxTwUcLVwUBVcS|T*TcCUgSoUSSTVSSc{WSS0XrT0XlVpmsU>Zc>V~ZKW|ZkW>Zc:XIY8X}WkW?WcMWZVZpe) /unwind cvx 4 packedarray cvx bind def /smqrest { 260 0 setcharwidth } /if cvx (mYS0XcYSiWaSYWmSQWcFT/WzTYW;UyWl}S+Ul:T+UlaUPXlOUPXcIUFX|TuWhTeWcZTYWBTSWJTiWcpT~XYS?YYS0Xpe) /unwind cvx 4 packedarray cvx bind def /qrest { 380 0 setcharwidth } /if cvx (mySuWcySKW0T5W@T|Vc1ULV}U3WHVcWlXTKSlvTKSl+WNXldVNXc^V>X*V]WcUEWcOU3W+U+W7UKWcmU?YyS]YySuWpe) /unwind cvx 4 packedarray cvx bind def /dspace { 130 0 setcharwidth } /if cvx (e) /unwind cvx 4 packedarray cvx bind def /equals { 564 0 setcharwidth } /if cvx (mQYkWlWSkWlWS+WlQY+WlQYkWpmQYhTlWShTlWSSUlQYSUlQYhTpe) /unwind cvx 4 packedarray cvx bind def /ddot { 130 0 setcharwidth } /if cvx (mmS*ZcaSsYOSsYAS*Zc7S6Z7SFZASRZcOS^ZaS^ZmSRZcwSHZwS4ZmS*Zpe) /unwind cvx 4 packedarray cvx bind def /smcrest { 260 0 setcharwidth } /if cvx (mhT8TcQSYUtTFVoU;UcwU5U{U;UsUEUl+UFVc:TCW^TYWcU1Yl0TlZl}SfZlBTLZc~T_YVTtXeSgWl+U8VcwS?WRRyU`T4TcdT2TlT2ThT8Tpe) /unwind cvx 4 packedarray cvx bind def /bassclef { 640 0 setcharwidth } /if cvx (m{YLXckY\\XSY\\XEYLXc5YT0X`T4XzTJXcGUbXIUKY|TeYcbTyYTLZLTZZcjTvZ=U5[sU5[cAW5[]WyY]WJXpe) /unwind cvx 4 packedarray cvx bind def /C { 640 0 setcharwidth } /if cvx (mJXeWcsYeW{Y,ZXXnZcEWO[0V3[MUjZcSSaYMS`VBT1UcyU0RfX3SWY|Tc]Y5U[Y9U_YCUcxXoS|VpRwUvTc=U>VCUVXsUYYcvVO[xXfZ=YWYc~XuY0XXgWZX.XZXNXcZXpX>X7YqW7YcOW7Y3WpX3WNXpmGS9Wc>TFZ[UI[qWI[c2ZI[Q[FZH\\9WcH\\dZ2Z\\\\qW\\\\c[U\\\\GSdZGS9Wpe) /unwind cvx 4 packedarray cvx bind def /trebleclef { 640 0 setcharwidth } /if cvx (mvV:Zc7WVZQW~ZQWO[cQWm[AW>\\1W>\\c\\V>\\@VQ[4V~Zc{URZyU{Y*VGYcFV_YTVeYvV:Zpm9U[Sc,V?SNVKSjVWSlDV:Vc.V:VgU.VWUqUc?U[U~TlTaU8TcZTVTbTmU1UDVcOUlVyU|V:V|Vl*V0Xc]UkWGU]WzT9WcDTXV{SaU0TxTc@TDTXTsS9U[SpmaWe[cqWxZkW:ZIWQYc1WzXRVNX8V:XlHV+Wc`V+WvV+W?WrVceW^VuWLV2X*VcPXGUNXRTYWkSc`V5S0V1S7UKScVTaS*T4TeSfTcGSQUESPVHTgWcvTNXGUnXsU;YcgU>ZeUrZ,Vi[c@VH\\ZVf\\|V-]cEWb\\UW<\\aWe[pm[WNTciWtTaWIUIWkUc7W.VvVVzTcwU?U7U3UbTrTpm=UKUc`TKUyS1U[S`Tc3S2T9S1SJT1ScvT1SVVGSVVZTcVV~T6VKU=UKUpe) /unwind cvx 4 packedarray cvx bind def /ds1 { 800 0 setcharwidth } /if cvx (m.X;Wl.XYSc}YYS@ZAU@Z;Wl.X;WpmeW[[leWp\\l.Xp\\l.X[[cLZ[[O[uYO[WWl\\\\WWl\\\\;WlO[;WcO[pTLZ9S.X9Sl.XyQleWyQleW9ScEU9SDTrTDT;Wl9S;Wl9SWWlDTWWcDTwYIU[[eW[[pm.XWWl.X;[c}Y;[@ZSY@ZWWl.XWWpmeW;WleWYSckUYSSU?USU;WleW;WpmeWWWleW;[ckU;[SUQYSUWWleWWWpe) /unwind cvx 4 packedarray cvx bind def /ped { 1400 0 setcharwidth } /if cvx (mDb{Scvb{Svb9SBb9Scga9Sga{SDb{SpmrZSWcM[kWy[9Wy[NVcy[aUi[GUvZrTcHZmU.Z-WrZSWpmXVy[caW,\\`X*\\gYlZcJZ.ZhZ4X/YTXcTXbX@X?Y:XkYc/[`X?Yy[5Wg[cXVe[`V:ZaWVXcBXQWoWcUGW~Tc6XvTzXBTQY}Sl:ZNTcxX`VJZ{W?[{Wc4\\{Wd\\SWd\\TVcd\\XTHZjTY[,TcH\\YSo]*TY]XTc+]gUu]-Wh^oWc~^0XA_uW+_cWc9].V+_*Tg_uScD`kSb`.Tz`NTcGa~Tx`FVJ`EWcc_dX0^HZ,\\HZce[HZe[XZ,\\XZc`^XZP`EYCa]Wc2b,VoajTEa.Tc|`cS\\`=Sm_9Scn^7SF^CSu]yScr\\vR3[xRLZ.Tl|X=ScBXqS[WLT1WTTc`V,TwU9S7U9ScxT9SHT;SfTeScKUfTNV/U-W~TcIW|TIW4V-WbVccUlXDVG[`Ve[c;S?[rRnV/U9Yc;UEY;UrX;U8Xc;U/WGS^V9SDXc~RlZMUm[XVy[pe) /unwind cvx 4 packedarray cvx bind def /breve { 640 0 setcharwidth } /if cvx (m*T\\Xl*T{[lwS{[lwS\\Xl*T\\XpmjT\\XljT{[chT{[dT{[bT{[lbT\\XljT\\Xpm?Y\\Xl?Y{[l7Y{[l7Y\\Xl?Y\\Xpm*Z\\Xl*Z{[luY{[luY\\XcyY\\X{Y\\X*Z\\Xpe) /unwind cvx 152 0 /translate cvx false CharProcs /semibreve /get cvx /exec cvx 12 packedarray cvx bind def /dcrotchet { 380 0 setcharwidth } /if cvx (mESgYcISYYSSKYWSIYlWSnRlESnRlESgYpe) /unwind cvx 0 512 /translate cvx false CharProcs /cnh /get cvx /exec cvx 12 packedarray cvx bind def /ds2 { 720 0 setcharwidth } /if cvx (myWDXlzZ=[lM[zZlJX*XcIYCWRZ^VRZIUcRZySeYISfX;SciW3SEW9SNVuSc0VZcOWbZyWnZ6XjZc|Vi[QUpZ.VmYcNV9Y+WvXyWDXpmQSCWc?S1W=ShVQSRVccS>V4T@VBTRVcVTjVXT-WBTCWc0TWWgSWWQSCWpmTZHXcBZ0X@ZoWTZUWchZCW/[?WG[UWcY[mW[[.XG[HXc/[\\XlZXXTZHXpe) /unwind cvx 4 packedarray cvx bind def /dquaver { 380 0 setcharwidth } /if cvx (mWS\\Tc.T\\TrT/UCU{Uc[UTVcUUW~TbXl~TxXc9WOUwS>TWSnRlESnRlESgYcISYYQSMYWSIYlWS\\Tpe) /unwind cvx 0 512 /translate cvx false CharProcs /cnh /get cvx /exec cvx 12 packedarray cvx bind def /altoclef { 640 0 setcharwidth } /if cvx (m5UE[l5UlRl>TlRl>TE[l5UE[pm5WuUljV5UcVVkU8VtVoUtVloUlRlYUlRlYUE[loUE[loU9Wc8V9WXVDXjVzXl5W:XccW7W7YEW7Y?Yc7YhZjX;[uW;[cUW;[tVxZbVJZc9WfZUW.Z;WgYc-WYYhVYYZVgYcHVyYLVBZdVdZc7W?[qWS[nX;[cLZjZ:ZLX/YiWcRXMWeW;W5WuWcfVAWdVxV5W:VceWrVRXbV/YFVc:ZcULZGSnXtRcqW`R7WpRdVMScLVmSHV6TZVHTchVXT-WXT;WHTcUW.T9WISbVgSctV9SUWvRuWvRcjXvR7YIS7YrTc7YlVcWxV5WuUpe) /unwind cvx 4 packedarray cvx bind def /semibreve { 380 0 setcharwidth } /if cvx (mxV>ZcxVm[KSm[KS>ZlKS>ZcKShXxVhXxV>Zpm{UVZciUzZSUA[nT=[cVyY{UVZpe) /unwind cvx 4 packedarray cvx bind def /dsquaver { 380 0 setcharwidth } /if cvx (m?U}WcGU6V[S_UWS^TcyS^TJTpTnT=UccU4VuUnV?UYWl?UqWcCWiU]S>TWS5SlWSnRlESnRlESgYcISUYSSMYWSIYlWS2VcmS2V>TJVPT\\Vc1U=W?U2XzT^XctTjXpTnXnTrXcxTrX;UXX?U}Wpe) /unwind cvx 0 512 /translate cvx false CharProcs /cnh /get cvx /exec cvx 12 packedarray cvx bind def /lsbrest { 510 0 setcharwidth } /if cvx (mBTIWlBTPXl9SPXl9SxXl7YxXl7YPXl.XPXl.XIWlBTIWpe) /unwind cvx 4 packedarray cvx bind def /nspace { 380 0 setcharwidth } /if cvx (e) /unwind cvx 4 packedarray cvx bind def /lmrest { 510 0 setcharwidth } /if cvx (m9SoUl9SBVlBTBVlBTIWl.XIWl.XBVl7YBVl7YoUl9SoUpe) /unwind cvx 4 packedarray cvx bind def /doublesharp { 460 0 setcharwidth } /if cvx (m*VTVcRVzVtVCWsWCWlsWNXlhVNXchVOWJV-WyU\\VcQU-W3UOW3UNXl}SNXl}SCWc~TCWKUzVqUTVcKU.V~TeU}SeUl}SZTl3UZTc3UYUQU{UyULVcJV{UhVYUhVZTlsWZTlsWeUctVeURV.V*VTVpe) /unwind cvx 4 packedarray cvx bind def /runon { 530 0 setcharwidth } /if cvx (mQS9Sc3UeQSWeQ5Y9ScMYMSQY9SEY~RcCWfPCUfPAS~Rc5S9S9SMSQS9Spe) /unwind cvx 4 packedarray cvx bind def /iturn { 700 0 setcharwidth } /if cvx (m~VRXl~VgYlGWgYlGW,XlhXDVc=YeUVCUVXsUYYc2V}YHV>ZXVJZlXV0TpmWY|Tc]Y5U[Y9U_YCUcvXwSeWSSzVoSlzV\\ZceWzZxXZZ=YWYc~XuY0XV/[wU~ZMUjZcQSaYMS`VBT1UcvT*T[UISXV;SlXV=QlzV=QlzV9Sc0X9S3Y*TWY|Tpe) /unwind cvx 4 packedarray cvx bind def /downto { 817 0 setcharwidth } /if cvx (meSDZl=YKWl[W0Vll\\0VlqYHZlcYTlVVG[cPVG[HVG[BVG[lBVdTcJV\\TRVTTVV>Tpe) /unwind cvx 0 -32 /translate cvx false CharProcs /mnh /get cvx /exec cvx 12 packedarray cvx bind def /f { 470 0 setcharwidth } /if cvx (mKSSWl_S0XlKU0XlKU2Xc{U_YtV*\\xX*\\czZ*\\5[PZV+W\\VcW-WcfXgWbX9WYWuScAW1SXX~RfXQSc_YVSOcTVSO`VkOqUkOcWUkORTkOdT@Ppe) /unwind cvx 4 packedarray cvx bind def /xbreve { 640 0 setcharwidth } /if cvx (m*T:Rl*TYUlwSYUlwS:Rl*T:RpmjT:RljTYUchTYUdTYUbTYUlbT:RljT:Rpm?Y:Rl?YYUl7YYUl7Y:Rl?Y:Rpm*Z:Rl*ZYUluYYUluY:RcyY:R{Y:R*Z:Rpe) /unwind cvx 154 0 /translate cvx false CharProcs /xsemibreve /get cvx /exec cvx 12 packedarray cvx bind def /ucrotchet { 380 0 setcharwidth } /if cvx (mVV@TcTVRTHV^TBVdTlBVE[lVVE[lVV@Tpe) /unwind cvx 0 -32 /translate cvx false CharProcs /cnh /get cvx /exec cvx 12 packedarray cvx bind def /s { 320 0 setcharwidth } /if cvx (mNTSWcNT.X+UPXkU8XcCU8XQU1WVWS{U4Tpe) /unwind cvx 4 packedarray cvx bind def /usquaver { 380 0 setcharwidth } /if cvx (mVV_YcfV_YSWAYsWnXcHX:XFX_WyW+WlwWjVcaY|XlVUYVVE[lBVE[lBVdTcJV`TRVRTVV@TlVVXfV2XVV_Ype) /unwind cvx 0 -32 /translate cvx false CharProcs /cnh /get cvx /exec cvx 12 packedarray cvx bind def /z { 420 0 setcharwidth } /if cvx (m*TaScuSSSkSGSoS9ScqS/S}S-S0T1ScNT=STg[QU3[0VcjZNV>ZZVaYbVlyYAWlK[AWle[{Wl_[,XcY[wWQ[qW5[qWluYqWl1Y0VcqY,VHZqUbZWUc9[+U9[0ThZ_ScTFZc9SAY=SOWwSjVcXT6VQU6V*VbVc^VCW^VTX2V+Yc[UWYpTSY>T1YcDTGYFTkYpTBZcCUjZmUvZHV-[lFV7[pmWUnXc;U5YXT9Y4ThXc}S:X.T9WPTlVclTPVEUPV[UdVcyU-WyULXWUnXpe) /unwind cvx 4 packedarray cvx bind def /sup7 { 300 0 setcharwidth } /if cvx (e) /unwind cvx -472 270 /translate cvx false CharProcs /fr7 /get cvx /exec cvx 12 packedarray cvx bind def /sup8 { 300 0 setcharwidth } /if cvx (e) /unwind cvx false CharProcs /fr8 /get cvx /exec cvx 9 packedarray cvx bind def /sup9 { 300 0 setcharwidth } /if cvx (e) /unwind cvx -440 272 /translate cvx false CharProcs /fr9 /get cvx /exec cvx 12 packedarray cvx bind def /sub0 { 300 0 setcharwidth } /if cvx (e) /unwind cvx 0 -272 /translate cvx false CharProcs /sup0 /get cvx /exec cvx 12 packedarray cvx bind def /sub1 { 300 0 setcharwidth } /if cvx (e) /unwind cvx 24 -270 /translate cvx false CharProcs /fr1 /get cvx /exec cvx 12 packedarray cvx bind def /sub2 { 300 0 setcharwidth } /if cvx (e) /unwind cvx -18 -270 /translate cvx false CharProcs /fr2 /get cvx /exec cvx 12 packedarray cvx bind def /sub3 { 300 0 setcharwidth } /if cvx (e) /unwind cvx -408 0 /translate cvx false CharProcs /fr3 /get cvx /exec cvx 12 packedarray cvx bind def /sub4 { 300 0 setcharwidth } /if cvx (e) /unwind cvx -426 0 /translate cvx false CharProcs /fr4 /get cvx /exec cvx 12 packedarray cvx bind def /sub5 { 300 0 setcharwidth } /if cvx (e) /unwind cvx -452 0 /translate cvx false CharProcs /fr5 /get cvx /exec cvx 12 packedarray cvx bind def /sub6 { 300 0 setcharwidth } /if cvx (e) /unwind cvx 0 -272 /translate cvx false CharProcs /sup6 /get cvx /exec cvx 12 packedarray cvx bind def /sub7 { 300 0 setcharwidth } /if cvx (e) /unwind cvx -472 0 /translate cvx false CharProcs /fr7 /get cvx /exec cvx 12 packedarray cvx bind def /sub8 { 300 0 setcharwidth } /if cvx (e) /unwind cvx 0 -272 /translate cvx false CharProcs /fr8 /get cvx /exec cvx 12 packedarray cvx bind def /sub9 { 300 0 setcharwidth } /if cvx (e) /unwind cvx -440 0 /translate cvx false CharProcs /fr9 /get cvx /exec cvx 12 packedarray cvx bind def /slash { 150 0 setcharwidth } /if cvx (e) /unwind cvx -256 0 /translate cvx false CharProcs /frslash /get cvx /exec cvx 12 packedarray cvx bind def /frslash { 750 0 setcharwidth } /if cvx (m6T+SljT+SlFZ5[leY5[l6T+Spe) /unwind cvx 4 packedarray cvx bind def end end /BuildGlyph { exch begin CharProcs exch 2 copy known not {pop /.notdef} if get true exch FontInfo /decode85 get begin exec end PaintType 0 eq {eofill} {StrokeWidth setlinewidth stroke} ifelse end } bind def /BuildChar { 1 index /Encoding get exch get 1 index /BuildGlyph get exec } bind def end definefont pop %%EndResource %%EOF pmw-5.22/INSTALL0000644000222100022210000001743414541067540011403 0ustar ph10ph10Basic Installation ================== These are generic installation instructions that apply to systems that can run the `configure' shell script - Unix systems and any that imitate it. They are not specific to PMW. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.in' is used to create `configure' by a program called `autoconf'. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Operation Controls ================== `configure' recognizes the following options to control how it operates. `--cache-file=FILE' Use and save the results of the tests in FILE instead of `./config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'. `--help' Print a summary of the options to `configure', and exit. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--version' Print the version of Autoconf used to generate the `configure' script, and exit. `configure' also accepts some other, not widely useful, options. pmw-5.22/MIDIvoices0000644000222100022210000000717514541067540012231 0ustar ph10ph10# This file contains translations between names and MIDI voice # numbers. Lines that begin with #, and blank lines, are ignored. # The default file supplied with PMS contains associations that # correspond to the General MIDI specification. However, the names # of the instruments don't seem to be standardised, especially # for some of the "effects". Hence more than one name is given for # some of them. I have used the names from the Casio CTK-650 for the # effects. # ...Names from the Yamaha TG100 added by Richard Hallas. # Lines must begin with three digits, followed by a space, and then # the instrument name, without any trailing spaces. 001 piano 001 acoustic grand piano 002 hard piano 002 bright acoustic piano 003 studio piano 003 electric grand piano 004 honky-tonk piano 005 electric piano 1 006 electric piano 2 007 harpsichord 008 clavelectro 008 clavichord 009 celesta 010 glockenspiel 011 music box 012 vibraphone 013 marimba 014 xylophone 015 tubular bells 016 dulcimer 017 electric organ 017 drawbar organ 018 jazz organ 018 percussion organ 019 rock organ 020 church organ 021 reed organ 022 accordion 023 harmonica 024 bandoneon 024 tango accordion 025 gut guitar 025 acoustic nylon guitar 026 acoustic guitar 026 acoustic steel guitar 027 jazz guitar 027 electric jazz guitar 028 electric guitar 028 electric clean guitar 029 mute guitar 029 electric muted guitar 030 overdriven guitar 030 distortion guitar 1 031 distortion guitar 2 032 guitar harmonics 033 wood bass 033 acoustic bass 034 electric bass 1 034 electric bass fingered 035 electric bass 2 035 electric bass picked 036 fretless bass 037 slap bass 1 038 slap bass 2 039 synth bass 1 040 synth bass 2 041 violin 042 viola 043 cello 044 contrabass 045 tremolo strings 046 pizzicato strings 047 harp 047 orchestral harp 048 timpani 049 strings 1 049 strings ensemble 1 050 strings 2 050 strings ensemble 2 051 synth strings 1 052 synth strings 2 053 choir 053 choir aahs 054 moon voice 054 voice oohs 054 choir oohs 055 synth voice 056 orchestra hit 056 orchestral hit 057 trumpet 058 trombone 059 tuba 060 mute trumpet 060 muted trumpet 061 french horn 062 brass 062 brass section 063 synth brass 1 064 synth brass 2 065 soprano sax 065 soprano saxophone 066 alto sax 066 alto saxophone 067 tenor sax 067 tenor saxophone 068 baritone sax 068 baritone saxophone 069 oboe 070 english horn 071 bassoon 072 clarinet 073 piccolo 074 flute 075 recorder 076 pan flute 077 blown bottle 077 bottle blow 078 shakuhachi 079 whistle 080 ocarina 081 synth lead 1 081 square 082 synth lead 2 082 saw tooth 083 synth lead 3 083 calliope 084 synth lead 4 084 power lead 084 chiff 085 synth lead 5 085 metal lead 085 charang 086 synth lead 6 086 angel choir 086 voice 087 synth lead 7 087 fifth lead 087 fifths 088 synth lead 8 088 bass lead 088 bass+lead 089 fantasy 089 new age 090 warm strings 090 warm 091 synth ensemble 091 polysynth 092 space chorus 092 choir 093 glass harmonica 093 bowed 094 illusion 094 metallic 095 country farm 095 halo 096 synth pad 096 sweep 097 pearl drop 097 rain 098 soundtrack 099 crystal 100 atmosphere 101 brightness 102 labyrinth 102 goblins 103 echoes 104 cosmic sound 104 sci-fi 105 sitar 106 banjo 107 shamisen 108 koto 109 thumb piano 109 kalimba 110 bagpipe 110 bag pipe 111 fiddle 112 shanai 113 bells 113 tinkle bell 114 agogo 115 steel drum 116 wood block 116 woodblock 117 taiko 117 taiko drum 118 tom 118 melodic tom 119 electric tom 119 synth drum 120 reverse cymbal 121 guitar fret noise 122 breath 122 breath noise 123 seashore 124 bird 124 bird tweet 125 telephone 125 telephone ring 126 helicopter 127 applause 128 gunshot 128 gun shot # End of MIDI voice names file. pmw-5.22/fontmetrics/0000755000222100022210000000000014541067540012676 5ustar ph10ph10pmw-5.22/fontmetrics/Times-Italic.afm0000644000222100022210000020605714541067540015661 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:56:55 1997 Comment PH added entry for Euro character, copied from a different version, 19 July 2009. Comment PH added additional characters (after Euro) 16 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43067 Comment VMusage 47727 58752 FontName Times-Italic FullName Times Italic FamilyName Times Weight Medium ItalicAngle -15.5 IsFixedPitch false FontBBox -169 -217 1010 883 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 653 XHeight 441 Ascender 683 Descender -217 StdHW 32 StdVW 76 StartCharMetrics 359 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 39 -11 302 667 ; C 34 ; WX 420 ; N quotedbl ; B 144 421 432 666 ; C 35 ; WX 500 ; N numbersign ; B 2 0 540 676 ; C 36 ; WX 500 ; N dollar ; B 31 -89 497 731 ; C 37 ; WX 833 ; N percent ; B 79 -13 790 676 ; C 38 ; WX 778 ; N ampersand ; B 76 -18 723 666 ; C 39 ; WX 333 ; N quoteright ; B 151 436 290 666 ; C 40 ; WX 333 ; N parenleft ; B 42 -181 315 669 ; C 41 ; WX 333 ; N parenright ; B 16 -180 289 669 ; C 42 ; WX 500 ; N asterisk ; B 128 255 492 666 ; C 43 ; WX 675 ; N plus ; B 86 0 590 506 ; C 44 ; WX 250 ; N comma ; B -4 -129 135 101 ; C 45 ; WX 333 ; N hyphen ; B 49 192 282 255 ; C 46 ; WX 250 ; N period ; B 27 -11 138 100 ; C 47 ; WX 278 ; N slash ; B -65 -18 386 666 ; C 48 ; WX 500 ; N zero ; B 32 -7 497 676 ; C 49 ; WX 500 ; N one ; B 49 0 409 676 ; C 50 ; WX 500 ; N two ; B 12 0 452 676 ; C 51 ; WX 500 ; N three ; B 15 -7 465 676 ; C 52 ; WX 500 ; N four ; B 1 0 479 676 ; C 53 ; WX 500 ; N five ; B 15 -7 491 666 ; C 54 ; WX 500 ; N six ; B 30 -7 521 686 ; C 55 ; WX 500 ; N seven ; B 75 -8 537 666 ; C 56 ; WX 500 ; N eight ; B 30 -7 493 676 ; C 57 ; WX 500 ; N nine ; B 23 -17 492 676 ; C 58 ; WX 333 ; N colon ; B 50 -11 261 441 ; C 59 ; WX 333 ; N semicolon ; B 27 -129 261 441 ; C 60 ; WX 675 ; N less ; B 84 -8 592 514 ; C 61 ; WX 675 ; N equal ; B 86 120 590 386 ; C 62 ; WX 675 ; N greater ; B 84 -8 592 514 ; C 63 ; WX 500 ; N question ; B 132 -12 472 664 ; C 64 ; WX 920 ; N at ; B 118 -18 806 666 ; C 65 ; WX 611 ; N A ; B -51 0 564 668 ; C 66 ; WX 611 ; N B ; B -8 0 588 653 ; C 67 ; WX 667 ; N C ; B 66 -18 689 666 ; C 68 ; WX 722 ; N D ; B -8 0 700 653 ; C 69 ; WX 611 ; N E ; B -1 0 634 653 ; C 70 ; WX 611 ; N F ; B 8 0 645 653 ; C 71 ; WX 722 ; N G ; B 52 -18 722 666 ; C 72 ; WX 722 ; N H ; B -8 0 767 653 ; C 73 ; WX 333 ; N I ; B -8 0 384 653 ; C 74 ; WX 444 ; N J ; B -6 -18 491 653 ; C 75 ; WX 667 ; N K ; B 7 0 722 653 ; C 76 ; WX 556 ; N L ; B -8 0 559 653 ; C 77 ; WX 833 ; N M ; B -18 0 873 653 ; C 78 ; WX 667 ; N N ; B -20 -15 727 653 ; C 79 ; WX 722 ; N O ; B 60 -18 699 666 ; C 80 ; WX 611 ; N P ; B 0 0 605 653 ; C 81 ; WX 722 ; N Q ; B 59 -182 699 666 ; C 82 ; WX 611 ; N R ; B -13 0 588 653 ; C 83 ; WX 500 ; N S ; B 17 -18 508 667 ; C 84 ; WX 556 ; N T ; B 59 0 633 653 ; C 85 ; WX 722 ; N U ; B 102 -18 765 653 ; C 86 ; WX 611 ; N V ; B 76 -18 688 653 ; C 87 ; WX 833 ; N W ; B 71 -18 906 653 ; C 88 ; WX 611 ; N X ; B -29 0 655 653 ; C 89 ; WX 556 ; N Y ; B 78 0 633 653 ; C 90 ; WX 556 ; N Z ; B -6 0 606 653 ; C 91 ; WX 389 ; N bracketleft ; B 21 -153 391 663 ; C 92 ; WX 278 ; N backslash ; B -41 -18 319 666 ; C 93 ; WX 389 ; N bracketright ; B 12 -153 382 663 ; C 94 ; WX 422 ; N asciicircum ; B 0 301 422 666 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 333 ; N quoteleft ; B 171 436 310 666 ; C 97 ; WX 500 ; N a ; B 17 -11 476 441 ; C 98 ; WX 500 ; N b ; B 23 -11 473 683 ; C 99 ; WX 444 ; N c ; B 30 -11 425 441 ; C 100 ; WX 500 ; N d ; B 15 -13 527 683 ; C 101 ; WX 444 ; N e ; B 31 -11 412 441 ; C 102 ; WX 278 ; N f ; B -147 -207 424 678 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B 8 -206 472 441 ; C 104 ; WX 500 ; N h ; B 19 -9 478 683 ; C 105 ; WX 278 ; N i ; B 49 -11 264 654 ; C 106 ; WX 278 ; N j ; B -124 -207 276 654 ; C 107 ; WX 444 ; N k ; B 14 -11 461 683 ; C 108 ; WX 278 ; N l ; B 41 -11 279 683 ; C 109 ; WX 722 ; N m ; B 12 -9 704 441 ; C 110 ; WX 500 ; N n ; B 14 -9 474 441 ; C 111 ; WX 500 ; N o ; B 27 -11 468 441 ; C 112 ; WX 500 ; N p ; B -75 -205 469 441 ; C 113 ; WX 500 ; N q ; B 25 -209 483 441 ; C 114 ; WX 389 ; N r ; B 45 0 412 441 ; C 115 ; WX 389 ; N s ; B 16 -13 366 442 ; C 116 ; WX 278 ; N t ; B 37 -11 296 546 ; C 117 ; WX 500 ; N u ; B 42 -11 475 441 ; C 118 ; WX 444 ; N v ; B 21 -18 426 441 ; C 119 ; WX 667 ; N w ; B 16 -18 648 441 ; C 120 ; WX 444 ; N x ; B -27 -11 447 441 ; C 121 ; WX 444 ; N y ; B -24 -206 426 441 ; C 122 ; WX 389 ; N z ; B -2 -81 380 428 ; C 123 ; WX 400 ; N braceleft ; B 51 -177 407 687 ; C 124 ; WX 275 ; N bar ; B 105 -217 171 783 ; C 125 ; WX 400 ; N braceright ; B -7 -177 349 687 ; C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ; C 160 ; WX 250 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 389 ; N exclamdown ; B 59 -205 322 473 ; C 162 ; WX 500 ; N cent ; B 77 -143 472 560 ; C 163 ; WX 500 ; N sterling ; B 10 -6 517 670 ; C 164 ; WX 167 ; N fraction ; B -169 -10 337 676 ; C 165 ; WX 500 ; N yen ; B 27 0 603 653 ; C 166 ; WX 500 ; N florin ; B 25 -182 507 682 ; C 167 ; WX 500 ; N section ; B 53 -162 461 666 ; C 168 ; WX 500 ; N currency ; B -22 53 522 597 ; C 169 ; WX 214 ; N quotesingle ; B 132 421 241 666 ; C 170 ; WX 556 ; N quotedblleft ; B 166 436 514 666 ; C 171 ; WX 500 ; N guillemotleft ; B 53 37 445 403 ; C 172 ; WX 333 ; N guilsinglleft ; B 51 37 281 403 ; C 173 ; WX 333 ; N guilsinglright ; B 52 37 282 403 ; C 174 ; WX 500 ; N fi ; B -141 -207 481 681 ; C 175 ; WX 500 ; N fl ; B -141 -204 518 682 ; C 177 ; WX 500 ; N endash ; B -6 197 505 243 ; C 178 ; WX 500 ; N dagger ; B 101 -159 488 666 ; C 179 ; WX 500 ; N daggerdbl ; B 22 -143 491 666 ; C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ; C 182 ; WX 523 ; N paragraph ; B 55 -123 616 653 ; C 183 ; WX 350 ; N bullet ; B 40 191 310 461 ; C 184 ; WX 333 ; N quotesinglbase ; B 44 -129 183 101 ; C 185 ; WX 556 ; N quotedblbase ; B 57 -129 405 101 ; C 186 ; WX 556 ; N quotedblright ; B 151 436 499 666 ; C 187 ; WX 500 ; N guillemotright ; B 55 37 447 403 ; C 188 ; WX 889 ; N ellipsis ; B 57 -11 762 100 ; C 189 ; WX 1000 ; N perthousand ; B 25 -19 1010 706 ; C 191 ; WX 500 ; N questiondown ; B 28 -205 368 471 ; C 193 ; WX 333 ; N grave ; B 121 492 311 664 ; C 194 ; WX 333 ; N acute ; B 180 494 403 664 ; C 195 ; WX 333 ; N circumflex ; B 91 492 385 661 ; C 196 ; WX 333 ; N tilde ; B 100 517 427 624 ; C 197 ; WX 333 ; N macron ; B 99 532 411 583 ; C 198 ; WX 333 ; N breve ; B 117 492 418 650 ; C 199 ; WX 333 ; N dotaccent ; B 207 548 305 646 ; C 200 ; WX 333 ; N dieresis ; B 107 548 405 646 ; C 202 ; WX 333 ; N ring ; B 155 492 355 691 ; C 203 ; WX 333 ; N cedilla ; B -30 -217 182 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 93 494 486 664 ; C 206 ; WX 333 ; N ogonek ; B 20 -169 203 40 ; C 207 ; WX 333 ; N caron ; B 121 492 426 661 ; C 208 ; WX 889 ; N emdash ; B -6 197 894 243 ; C 225 ; WX 889 ; N AE ; B -27 0 911 653 ; C 227 ; WX 276 ; N ordfeminine ; B 42 406 352 676 ; C 232 ; WX 556 ; N Lslash ; B -8 0 559 653 ; C 233 ; WX 722 ; N Oslash ; B 60 -105 699 722 ; C 234 ; WX 944 ; N OE ; B 49 -8 964 666 ; C 235 ; WX 310 ; N ordmasculine ; B 67 406 362 676 ; C 241 ; WX 667 ; N ae ; B 23 -11 640 441 ; C 245 ; WX 278 ; N dotlessi ; B 49 -11 235 441 ; C 248 ; WX 278 ; N lslash ; B 41 -11 312 683 ; C 249 ; WX 500 ; N oslash ; B 28 -135 469 554 ; C 250 ; WX 667 ; N oe ; B 20 -12 646 441 ; C 251 ; WX 500 ; N germandbls ; B -168 -207 493 679 ; C -1 ; WX 333 ; N Idieresis ; B -8 0 435 818 ; C -1 ; WX 444 ; N eacute ; B 31 -11 459 664 ; C -1 ; WX 500 ; N abreve ; B 17 -11 502 650 ; C -1 ; WX 500 ; N uhungarumlaut ; B 42 -11 580 664 ; C -1 ; WX 444 ; N ecaron ; B 31 -11 482 661 ; C -1 ; WX 556 ; N Ydieresis ; B 78 0 633 818 ; C -1 ; WX 675 ; N divide ; B 86 -11 590 517 ; C -1 ; WX 556 ; N Yacute ; B 78 0 633 876 ; C -1 ; WX 611 ; N Acircumflex ; B -51 0 564 873 ; C -1 ; WX 500 ; N aacute ; B 17 -11 487 664 ; C -1 ; WX 722 ; N Ucircumflex ; B 102 -18 765 873 ; C -1 ; WX 444 ; N yacute ; B -24 -206 459 664 ; C -1 ; WX 389 ; N scommaaccent ; B 16 -217 366 442 ; C -1 ; WX 444 ; N ecircumflex ; B 31 -11 441 661 ; C -1 ; WX 722 ; N Uring ; B 102 -18 765 883 ; C -1 ; WX 722 ; N Udieresis ; B 102 -18 765 818 ; C -1 ; WX 500 ; N aogonek ; B 17 -169 476 441 ; C -1 ; WX 722 ; N Uacute ; B 102 -18 765 876 ; C -1 ; WX 500 ; N uogonek ; B 42 -169 477 441 ; C -1 ; WX 611 ; N Edieresis ; B -1 0 634 818 ; C -1 ; WX 722 ; N Dcroat ; B -8 0 700 653 ; C -1 ; WX 250 ; N commaaccent ; B 8 -217 133 -50 ; C -1 ; WX 760 ; N copyright ; B 41 -18 719 666 ; C -1 ; WX 611 ; N Emacron ; B -1 0 634 795 ; C -1 ; WX 444 ; N ccaron ; B 30 -11 482 661 ; C -1 ; WX 500 ; N aring ; B 17 -11 476 691 ; C -1 ; WX 667 ; N Ncommaaccent ; B -20 -187 727 653 ; C -1 ; WX 278 ; N lacute ; B 41 -11 395 876 ; C -1 ; WX 500 ; N agrave ; B 17 -11 476 664 ; C -1 ; WX 556 ; N Tcommaaccent ; B 59 -217 633 653 ; C -1 ; WX 667 ; N Cacute ; B 66 -18 690 876 ; C -1 ; WX 500 ; N atilde ; B 17 -11 511 624 ; C -1 ; WX 611 ; N Edotaccent ; B -1 0 634 818 ; C -1 ; WX 389 ; N scaron ; B 16 -13 454 661 ; C -1 ; WX 389 ; N scedilla ; B 16 -217 366 442 ; C -1 ; WX 278 ; N iacute ; B 49 -11 355 664 ; C -1 ; WX 471 ; N lozenge ; B 13 0 459 724 ; C -1 ; WX 611 ; N Rcaron ; B -13 0 588 873 ; C -1 ; WX 722 ; N Gcommaaccent ; B 52 -217 722 666 ; C -1 ; WX 500 ; N ucircumflex ; B 42 -11 475 661 ; C -1 ; WX 500 ; N acircumflex ; B 17 -11 476 661 ; C -1 ; WX 611 ; N Amacron ; B -51 0 564 795 ; C -1 ; WX 389 ; N rcaron ; B 45 0 434 661 ; C -1 ; WX 444 ; N ccedilla ; B 30 -217 425 441 ; C -1 ; WX 556 ; N Zdotaccent ; B -6 0 606 818 ; C -1 ; WX 611 ; N Thorn ; B 0 0 569 653 ; C -1 ; WX 722 ; N Omacron ; B 60 -18 699 795 ; C -1 ; WX 611 ; N Racute ; B -13 0 588 876 ; C -1 ; WX 500 ; N Sacute ; B 17 -18 508 876 ; C -1 ; WX 544 ; N dcaron ; B 15 -13 658 683 ; C -1 ; WX 722 ; N Umacron ; B 102 -18 765 795 ; C -1 ; WX 500 ; N uring ; B 42 -11 475 691 ; C -1 ; WX 300 ; N threesuperior ; B 43 268 339 676 ; C -1 ; WX 722 ; N Ograve ; B 60 -18 699 876 ; C -1 ; WX 611 ; N Agrave ; B -51 0 564 876 ; C -1 ; WX 611 ; N Abreve ; B -51 0 564 862 ; C -1 ; WX 675 ; N multiply ; B 93 8 582 497 ; C -1 ; WX 500 ; N uacute ; B 42 -11 477 664 ; C -1 ; WX 556 ; N Tcaron ; B 59 0 633 873 ; C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ; C -1 ; WX 444 ; N ydieresis ; B -24 -206 441 606 ; C -1 ; WX 667 ; N Nacute ; B -20 -15 727 876 ; C -1 ; WX 278 ; N icircumflex ; B 33 -11 327 661 ; C -1 ; WX 611 ; N Ecircumflex ; B -1 0 634 873 ; C -1 ; WX 500 ; N adieresis ; B 17 -11 489 606 ; C -1 ; WX 444 ; N edieresis ; B 31 -11 451 606 ; C -1 ; WX 444 ; N cacute ; B 30 -11 459 664 ; C -1 ; WX 500 ; N nacute ; B 14 -9 477 664 ; C -1 ; WX 500 ; N umacron ; B 42 -11 485 583 ; C -1 ; WX 667 ; N Ncaron ; B -20 -15 727 873 ; C -1 ; WX 333 ; N Iacute ; B -8 0 433 876 ; C -1 ; WX 675 ; N plusminus ; B 86 0 590 506 ; C -1 ; WX 275 ; N brokenbar ; B 105 -142 171 708 ; C -1 ; WX 760 ; N registered ; B 41 -18 719 666 ; C -1 ; WX 722 ; N Gbreve ; B 52 -18 722 862 ; C -1 ; WX 333 ; N Idotaccent ; B -8 0 384 818 ; C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ; C -1 ; WX 611 ; N Egrave ; B -1 0 634 876 ; C -1 ; WX 389 ; N racute ; B 45 0 431 664 ; C -1 ; WX 500 ; N omacron ; B 27 -11 495 583 ; C -1 ; WX 556 ; N Zacute ; B -6 0 606 876 ; C -1 ; WX 556 ; N Zcaron ; B -6 0 606 873 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 658 ; C -1 ; WX 722 ; N Eth ; B -8 0 700 653 ; C -1 ; WX 667 ; N Ccedilla ; B 66 -217 689 666 ; C -1 ; WX 278 ; N lcommaaccent ; B 22 -217 279 683 ; C -1 ; WX 300 ; N tcaron ; B 37 -11 407 681 ; C -1 ; WX 444 ; N eogonek ; B 31 -169 412 441 ; C -1 ; WX 722 ; N Uogonek ; B 102 -184 765 653 ; C -1 ; WX 611 ; N Aacute ; B -51 0 564 876 ; C -1 ; WX 611 ; N Adieresis ; B -51 0 564 818 ; C -1 ; WX 444 ; N egrave ; B 31 -11 412 664 ; C -1 ; WX 389 ; N zacute ; B -2 -81 431 664 ; C -1 ; WX 278 ; N iogonek ; B 49 -169 264 654 ; C -1 ; WX 722 ; N Oacute ; B 60 -18 699 876 ; C -1 ; WX 500 ; N oacute ; B 27 -11 487 664 ; C -1 ; WX 500 ; N amacron ; B 17 -11 495 583 ; C -1 ; WX 389 ; N sacute ; B 16 -13 431 664 ; C -1 ; WX 278 ; N idieresis ; B 49 -11 352 606 ; C -1 ; WX 722 ; N Ocircumflex ; B 60 -18 699 873 ; C -1 ; WX 722 ; N Ugrave ; B 102 -18 765 876 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 500 ; N thorn ; B -75 -205 469 683 ; C -1 ; WX 300 ; N twosuperior ; B 33 271 324 676 ; C -1 ; WX 722 ; N Odieresis ; B 60 -18 699 818 ; C -1 ; WX 500 ; N mu ; B -30 -209 497 428 ; C -1 ; WX 278 ; N igrave ; B 49 -11 284 664 ; C -1 ; WX 500 ; N ohungarumlaut ; B 27 -11 590 664 ; C -1 ; WX 611 ; N Eogonek ; B -1 -169 634 653 ; C -1 ; WX 500 ; N dcroat ; B 15 -13 572 683 ; C -1 ; WX 750 ; N threequarters ; B 23 -10 736 676 ; C -1 ; WX 500 ; N Scedilla ; B 17 -217 508 667 ; C -1 ; WX 300 ; N lcaron ; B 41 -11 407 683 ; C -1 ; WX 667 ; N Kcommaaccent ; B 7 -217 722 653 ; C -1 ; WX 556 ; N Lacute ; B -8 0 559 876 ; C -1 ; WX 980 ; N trademark ; B 30 247 957 653 ; C -1 ; WX 444 ; N edotaccent ; B 31 -11 412 606 ; C -1 ; WX 333 ; N Igrave ; B -8 0 384 876 ; C -1 ; WX 333 ; N Imacron ; B -8 0 441 795 ; C -1 ; WX 611 ; N Lcaron ; B -8 0 586 653 ; C -1 ; WX 750 ; N onehalf ; B 34 -10 749 676 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 658 ; C -1 ; WX 500 ; N ocircumflex ; B 27 -11 468 661 ; C -1 ; WX 500 ; N ntilde ; B 14 -9 476 624 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 102 -18 765 876 ; C -1 ; WX 611 ; N Eacute ; B -1 0 634 876 ; C -1 ; WX 444 ; N emacron ; B 31 -11 457 583 ; C -1 ; WX 500 ; N gbreve ; B 8 -206 487 650 ; C -1 ; WX 750 ; N onequarter ; B 33 -10 736 676 ; C -1 ; WX 500 ; N Scaron ; B 17 -18 520 873 ; C -1 ; WX 500 ; N Scommaaccent ; B 17 -217 508 667 ; C -1 ; WX 722 ; N Ohungarumlaut ; B 60 -18 699 876 ; C -1 ; WX 400 ; N degree ; B 101 390 387 676 ; C -1 ; WX 500 ; N ograve ; B 27 -11 468 664 ; C -1 ; WX 667 ; N Ccaron ; B 66 -18 689 873 ; C -1 ; WX 500 ; N ugrave ; B 42 -11 475 664 ; C -1 ; WX 453 ; N radical ; B 2 -60 452 768 ; C -1 ; WX 722 ; N Dcaron ; B -8 0 700 873 ; C -1 ; WX 389 ; N rcommaaccent ; B -3 -217 412 441 ; C -1 ; WX 667 ; N Ntilde ; B -20 -15 727 836 ; C -1 ; WX 500 ; N otilde ; B 27 -11 496 624 ; C -1 ; WX 611 ; N Rcommaaccent ; B -13 -187 588 653 ; C -1 ; WX 556 ; N Lcommaaccent ; B -8 -217 559 653 ; C -1 ; WX 611 ; N Atilde ; B -51 0 566 836 ; C -1 ; WX 611 ; N Aogonek ; B -51 -169 566 668 ; C -1 ; WX 611 ; N Aring ; B -51 0 564 883 ; C -1 ; WX 722 ; N Otilde ; B 60 -18 699 836 ; C -1 ; WX 389 ; N zdotaccent ; B -2 -81 380 606 ; C -1 ; WX 611 ; N Ecaron ; B -1 0 634 873 ; C -1 ; WX 333 ; N Iogonek ; B -8 -169 384 653 ; C -1 ; WX 444 ; N kcommaaccent ; B 14 -187 461 683 ; C -1 ; WX 675 ; N minus ; B 86 220 590 286 ; C -1 ; WX 333 ; N Icircumflex ; B -8 0 425 873 ; C -1 ; WX 500 ; N ncaron ; B 14 -9 510 661 ; C -1 ; WX 278 ; N tcommaaccent ; B 2 -217 296 546 ; C -1 ; WX 675 ; N logicalnot ; B 86 108 590 386 ; C -1 ; WX 500 ; N odieresis ; B 27 -11 489 606 ; C -1 ; WX 500 ; N udieresis ; B 42 -11 479 606 ; C -1 ; WX 549 ; N notequal ; B 12 -29 537 541 ; C -1 ; WX 500 ; N gcommaaccent ; B 8 -206 472 706 ; C -1 ; WX 500 ; N eth ; B 27 -11 482 683 ; C -1 ; WX 389 ; N zcaron ; B -2 -81 434 661 ; C -1 ; WX 500 ; N ncommaaccent ; B 14 -187 474 441 ; C -1 ; WX 300 ; N onesuperior ; B 43 271 284 676 ; C -1 ; WX 278 ; N imacron ; B 46 -11 311 583 ; C -1 ; WX 500 ; N Euro ; B 0 0 0 0 ; C -1 ; WX 667 ; N Ccircumflex ; B 66 -18 689 872 ; C -1 ; WX 444 ; N ccircumflex ; B 30 -11 449 660 ; C -1 ; WX 667 ; N Cdotaccent ; B 66 -18 689 801 ; C -1 ; WX 444 ; N cdotaccent ; B 30 -11 425 589 ; C -1 ; WX 611 ; N Ebreve ; B -8 0 627 861 ; C -1 ; WX 444 ; N ebreve ; B 31 -11 500 649 ; C -1 ; WX 722 ; N Gcircumflex ; B 52 -18 722 872 ; C -1 ; WX 500 ; N gcircumflex ; B 8 -206 495 660 ; C -1 ; WX 722 ; N Gdotaccent ; B 52 -18 722 801 ; C -1 ; WX 500 ; N gdotaccent ; B 8 -206 472 589 ; C -1 ; WX 722 ; N Hcircumflex ; B -8 0 767 872 ; C -1 ; WX 500 ; N hcircumflex ; B 19 -9 478 902 ; C -1 ; WX 722 ; N Hbar ; B -8 0 767 653 ; C -1 ; WX 500 ; N hbar ; B 19 -9 478 683 ; C -1 ; WX 333 ; N Itilde ; B -8 0 470 810 ; C -1 ; WX 278 ; N itilde ; B 49 -11 393 598 ; C -1 ; WX 333 ; N Ibreve ; B -8 0 485 861 ; C -1 ; WX 278 ; N ibreve ; B 49 -11 409 649 ; C -1 ; WX 707 ; N IJ ; B -8 -18 754 653 ; C -1 ; WX 474 ; N ij ; B 49 -207 462 654 ; C -1 ; WX 444 ; N Jcircumflex ; B -6 -18 491 872 ; C -1 ; WX 278 ; N jcircumflex ; B -124 -207 357 714 ; C -1 ; WX 491 ; N kgreenlandic ; B 14 0 503 460 ; C -1 ; WX 556 ; N Ldot ; B -8 0 559 653 ; C -1 ; WX 528 ; N ldot ; B 40 -11 459 683 ; C -1 ; WX 500 ; N napostrophe ; B 14 -9 474 666 ; C -1 ; WX 722 ; N Obreve ; B 60 -18 700 861 ; C -1 ; WX 500 ; N obreve ; B 27 -11 519 649 ; C -1 ; WX 500 ; N Scircumflex ; B 17 -18 529 872 ; C -1 ; WX 389 ; N scircumflex ; B 16 -13 417 660 ; C -1 ; WX 556 ; N Tbar ; B 59 0 633 653 ; C -1 ; WX 278 ; N tbar ; B 13 -11 296 546 ; C -1 ; WX 556 ; N Tcedilla ; B 59 -217 633 653 ; C -1 ; WX 278 ; N tcedilla ; B 2 -217 296 546 ; C -1 ; WX 722 ; N Utilde ; B 102 -18 765 810 ; C -1 ; WX 500 ; N utilde ; B 42 -11 509 598 ; C -1 ; WX 722 ; N Ubreve ; B 102 -18 765 861 ; C -1 ; WX 500 ; N ubreve ; B 42 -11 525 649 ; C -1 ; WX 833 ; N Wcircumflex ; B 71 -18 906 872 ; C -1 ; WX 667 ; N wcircumflex ; B 16 -18 648 660 ; C -1 ; WX 556 ; N Ycircumflex ; B 78 0 633 872 ; C -1 ; WX 444 ; N ycircumflex ; B -24 -206 426 660 ; C -1 ; WX 278 ; N longs ; B -147 -207 424 678 ; C -1 ; WX 677 ; N infinity ; B 17 53 663 434 ; EndCharMetrics StartKernData StartKernPairs 2321 KPX A C -30 KPX A Cacute -30 KPX A Ccaron -30 KPX A Ccedilla -30 KPX A G -35 KPX A Gbreve -35 KPX A Gcommaaccent -35 KPX A O -40 KPX A Oacute -40 KPX A Ocircumflex -40 KPX A Odieresis -40 KPX A Ograve -40 KPX A Ohungarumlaut -40 KPX A Omacron -40 KPX A Oslash -40 KPX A Otilde -40 KPX A Q -40 KPX A T -37 KPX A Tcaron -37 KPX A Tcommaaccent -37 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -105 KPX A W -95 KPX A Y -55 KPX A Yacute -55 KPX A Ydieresis -55 KPX A quoteright -37 KPX A u -20 KPX A uacute -20 KPX A ucircumflex -20 KPX A udieresis -20 KPX A ugrave -20 KPX A uhungarumlaut -20 KPX A umacron -20 KPX A uogonek -20 KPX A uring -20 KPX A v -55 KPX A w -55 KPX A y -55 KPX A yacute -55 KPX A ydieresis -55 KPX Aacute C -30 KPX Aacute Cacute -30 KPX Aacute Ccaron -30 KPX Aacute Ccedilla -30 KPX Aacute G -35 KPX Aacute Gbreve -35 KPX Aacute Gcommaaccent -35 KPX Aacute O -40 KPX Aacute Oacute -40 KPX Aacute Ocircumflex -40 KPX Aacute Odieresis -40 KPX Aacute Ograve -40 KPX Aacute Ohungarumlaut -40 KPX Aacute Omacron -40 KPX Aacute Oslash -40 KPX Aacute Otilde -40 KPX Aacute Q -40 KPX Aacute T -37 KPX Aacute Tcaron -37 KPX Aacute Tcommaaccent -37 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -105 KPX Aacute W -95 KPX Aacute Y -55 KPX Aacute Yacute -55 KPX Aacute Ydieresis -55 KPX Aacute quoteright -37 KPX Aacute u -20 KPX Aacute uacute -20 KPX Aacute ucircumflex -20 KPX Aacute udieresis -20 KPX Aacute ugrave -20 KPX Aacute uhungarumlaut -20 KPX Aacute umacron -20 KPX Aacute uogonek -20 KPX Aacute uring -20 KPX Aacute v -55 KPX Aacute w -55 KPX Aacute y -55 KPX Aacute yacute -55 KPX Aacute ydieresis -55 KPX Abreve C -30 KPX Abreve Cacute -30 KPX Abreve Ccaron -30 KPX Abreve Ccedilla -30 KPX Abreve G -35 KPX Abreve Gbreve -35 KPX Abreve Gcommaaccent -35 KPX Abreve O -40 KPX Abreve Oacute -40 KPX Abreve Ocircumflex -40 KPX Abreve Odieresis -40 KPX Abreve Ograve -40 KPX Abreve Ohungarumlaut -40 KPX Abreve Omacron -40 KPX Abreve Oslash -40 KPX Abreve Otilde -40 KPX Abreve Q -40 KPX Abreve T -37 KPX Abreve Tcaron -37 KPX Abreve Tcommaaccent -37 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -105 KPX Abreve W -95 KPX Abreve Y -55 KPX Abreve Yacute -55 KPX Abreve Ydieresis -55 KPX Abreve quoteright -37 KPX Abreve u -20 KPX Abreve uacute -20 KPX Abreve ucircumflex -20 KPX Abreve udieresis -20 KPX Abreve ugrave -20 KPX Abreve uhungarumlaut -20 KPX Abreve umacron -20 KPX Abreve uogonek -20 KPX Abreve uring -20 KPX Abreve v -55 KPX Abreve w -55 KPX Abreve y -55 KPX Abreve yacute -55 KPX Abreve ydieresis -55 KPX Acircumflex C -30 KPX Acircumflex Cacute -30 KPX Acircumflex Ccaron -30 KPX Acircumflex Ccedilla -30 KPX Acircumflex G -35 KPX Acircumflex Gbreve -35 KPX Acircumflex Gcommaaccent -35 KPX Acircumflex O -40 KPX Acircumflex Oacute -40 KPX Acircumflex Ocircumflex -40 KPX Acircumflex Odieresis -40 KPX Acircumflex Ograve -40 KPX Acircumflex Ohungarumlaut -40 KPX Acircumflex Omacron -40 KPX Acircumflex Oslash -40 KPX Acircumflex Otilde -40 KPX Acircumflex Q -40 KPX Acircumflex T -37 KPX Acircumflex Tcaron -37 KPX Acircumflex Tcommaaccent -37 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -105 KPX Acircumflex W -95 KPX Acircumflex Y -55 KPX Acircumflex Yacute -55 KPX Acircumflex Ydieresis -55 KPX Acircumflex quoteright -37 KPX Acircumflex u -20 KPX Acircumflex uacute -20 KPX Acircumflex ucircumflex -20 KPX Acircumflex udieresis -20 KPX Acircumflex ugrave -20 KPX Acircumflex uhungarumlaut -20 KPX Acircumflex umacron -20 KPX Acircumflex uogonek -20 KPX Acircumflex uring -20 KPX Acircumflex v -55 KPX Acircumflex w -55 KPX Acircumflex y -55 KPX Acircumflex yacute -55 KPX Acircumflex ydieresis -55 KPX Adieresis C -30 KPX Adieresis Cacute -30 KPX Adieresis Ccaron -30 KPX Adieresis Ccedilla -30 KPX Adieresis G -35 KPX Adieresis Gbreve -35 KPX Adieresis Gcommaaccent -35 KPX Adieresis O -40 KPX Adieresis Oacute -40 KPX Adieresis Ocircumflex -40 KPX Adieresis Odieresis -40 KPX Adieresis Ograve -40 KPX Adieresis Ohungarumlaut -40 KPX Adieresis Omacron -40 KPX Adieresis Oslash -40 KPX Adieresis Otilde -40 KPX Adieresis Q -40 KPX Adieresis T -37 KPX Adieresis Tcaron -37 KPX Adieresis Tcommaaccent -37 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -105 KPX Adieresis W -95 KPX Adieresis Y -55 KPX Adieresis Yacute -55 KPX Adieresis Ydieresis -55 KPX Adieresis quoteright -37 KPX Adieresis u -20 KPX Adieresis uacute -20 KPX Adieresis ucircumflex -20 KPX Adieresis udieresis -20 KPX Adieresis ugrave -20 KPX Adieresis uhungarumlaut -20 KPX Adieresis umacron -20 KPX Adieresis uogonek -20 KPX Adieresis uring -20 KPX Adieresis v -55 KPX Adieresis w -55 KPX Adieresis y -55 KPX Adieresis yacute -55 KPX Adieresis ydieresis -55 KPX Agrave C -30 KPX Agrave Cacute -30 KPX Agrave Ccaron -30 KPX Agrave Ccedilla -30 KPX Agrave G -35 KPX Agrave Gbreve -35 KPX Agrave Gcommaaccent -35 KPX Agrave O -40 KPX Agrave Oacute -40 KPX Agrave Ocircumflex -40 KPX Agrave Odieresis -40 KPX Agrave Ograve -40 KPX Agrave Ohungarumlaut -40 KPX Agrave Omacron -40 KPX Agrave Oslash -40 KPX Agrave Otilde -40 KPX Agrave Q -40 KPX Agrave T -37 KPX Agrave Tcaron -37 KPX Agrave Tcommaaccent -37 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -105 KPX Agrave W -95 KPX Agrave Y -55 KPX Agrave Yacute -55 KPX Agrave Ydieresis -55 KPX Agrave quoteright -37 KPX Agrave u -20 KPX Agrave uacute -20 KPX Agrave ucircumflex -20 KPX Agrave udieresis -20 KPX Agrave ugrave -20 KPX Agrave uhungarumlaut -20 KPX Agrave umacron -20 KPX Agrave uogonek -20 KPX Agrave uring -20 KPX Agrave v -55 KPX Agrave w -55 KPX Agrave y -55 KPX Agrave yacute -55 KPX Agrave ydieresis -55 KPX Amacron C -30 KPX Amacron Cacute -30 KPX Amacron Ccaron -30 KPX Amacron Ccedilla -30 KPX Amacron G -35 KPX Amacron Gbreve -35 KPX Amacron Gcommaaccent -35 KPX Amacron O -40 KPX Amacron Oacute -40 KPX Amacron Ocircumflex -40 KPX Amacron Odieresis -40 KPX Amacron Ograve -40 KPX Amacron Ohungarumlaut -40 KPX Amacron Omacron -40 KPX Amacron Oslash -40 KPX Amacron Otilde -40 KPX Amacron Q -40 KPX Amacron T -37 KPX Amacron Tcaron -37 KPX Amacron Tcommaaccent -37 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -105 KPX Amacron W -95 KPX Amacron Y -55 KPX Amacron Yacute -55 KPX Amacron Ydieresis -55 KPX Amacron quoteright -37 KPX Amacron u -20 KPX Amacron uacute -20 KPX Amacron ucircumflex -20 KPX Amacron udieresis -20 KPX Amacron ugrave -20 KPX Amacron uhungarumlaut -20 KPX Amacron umacron -20 KPX Amacron uogonek -20 KPX Amacron uring -20 KPX Amacron v -55 KPX Amacron w -55 KPX Amacron y -55 KPX Amacron yacute -55 KPX Amacron ydieresis -55 KPX Aogonek C -30 KPX Aogonek Cacute -30 KPX Aogonek Ccaron -30 KPX Aogonek Ccedilla -30 KPX Aogonek G -35 KPX Aogonek Gbreve -35 KPX Aogonek Gcommaaccent -35 KPX Aogonek O -40 KPX Aogonek Oacute -40 KPX Aogonek Ocircumflex -40 KPX Aogonek Odieresis -40 KPX Aogonek Ograve -40 KPX Aogonek Ohungarumlaut -40 KPX Aogonek Omacron -40 KPX Aogonek Oslash -40 KPX Aogonek Otilde -40 KPX Aogonek Q -40 KPX Aogonek T -37 KPX Aogonek Tcaron -37 KPX Aogonek Tcommaaccent -37 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -105 KPX Aogonek W -95 KPX Aogonek Y -55 KPX Aogonek Yacute -55 KPX Aogonek Ydieresis -55 KPX Aogonek quoteright -37 KPX Aogonek u -20 KPX Aogonek uacute -20 KPX Aogonek ucircumflex -20 KPX Aogonek udieresis -20 KPX Aogonek ugrave -20 KPX Aogonek uhungarumlaut -20 KPX Aogonek umacron -20 KPX Aogonek uogonek -20 KPX Aogonek uring -20 KPX Aogonek v -55 KPX Aogonek w -55 KPX Aogonek y -55 KPX Aogonek yacute -55 KPX Aogonek ydieresis -55 KPX Aring C -30 KPX Aring Cacute -30 KPX Aring Ccaron -30 KPX Aring Ccedilla -30 KPX Aring G -35 KPX Aring Gbreve -35 KPX Aring Gcommaaccent -35 KPX Aring O -40 KPX Aring Oacute -40 KPX Aring Ocircumflex -40 KPX Aring Odieresis -40 KPX Aring Ograve -40 KPX Aring Ohungarumlaut -40 KPX Aring Omacron -40 KPX Aring Oslash -40 KPX Aring Otilde -40 KPX Aring Q -40 KPX Aring T -37 KPX Aring Tcaron -37 KPX Aring Tcommaaccent -37 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -105 KPX Aring W -95 KPX Aring Y -55 KPX Aring Yacute -55 KPX Aring Ydieresis -55 KPX Aring quoteright -37 KPX Aring u -20 KPX Aring uacute -20 KPX Aring ucircumflex -20 KPX Aring udieresis -20 KPX Aring ugrave -20 KPX Aring uhungarumlaut -20 KPX Aring umacron -20 KPX Aring uogonek -20 KPX Aring uring -20 KPX Aring v -55 KPX Aring w -55 KPX Aring y -55 KPX Aring yacute -55 KPX Aring ydieresis -55 KPX Atilde C -30 KPX Atilde Cacute -30 KPX Atilde Ccaron -30 KPX Atilde Ccedilla -30 KPX Atilde G -35 KPX Atilde Gbreve -35 KPX Atilde Gcommaaccent -35 KPX Atilde O -40 KPX Atilde Oacute -40 KPX Atilde Ocircumflex -40 KPX Atilde Odieresis -40 KPX Atilde Ograve -40 KPX Atilde Ohungarumlaut -40 KPX Atilde Omacron -40 KPX Atilde Oslash -40 KPX Atilde Otilde -40 KPX Atilde Q -40 KPX Atilde T -37 KPX Atilde Tcaron -37 KPX Atilde Tcommaaccent -37 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -105 KPX Atilde W -95 KPX Atilde Y -55 KPX Atilde Yacute -55 KPX Atilde Ydieresis -55 KPX Atilde quoteright -37 KPX Atilde u -20 KPX Atilde uacute -20 KPX Atilde ucircumflex -20 KPX Atilde udieresis -20 KPX Atilde ugrave -20 KPX Atilde uhungarumlaut -20 KPX Atilde umacron -20 KPX Atilde uogonek -20 KPX Atilde uring -20 KPX Atilde v -55 KPX Atilde w -55 KPX Atilde y -55 KPX Atilde yacute -55 KPX Atilde ydieresis -55 KPX B A -25 KPX B Aacute -25 KPX B Abreve -25 KPX B Acircumflex -25 KPX B Adieresis -25 KPX B Agrave -25 KPX B Amacron -25 KPX B Aogonek -25 KPX B Aring -25 KPX B Atilde -25 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -35 KPX D Aacute -35 KPX D Abreve -35 KPX D Acircumflex -35 KPX D Adieresis -35 KPX D Agrave -35 KPX D Amacron -35 KPX D Aogonek -35 KPX D Aring -35 KPX D Atilde -35 KPX D V -40 KPX D W -40 KPX D Y -40 KPX D Yacute -40 KPX D Ydieresis -40 KPX Dcaron A -35 KPX Dcaron Aacute -35 KPX Dcaron Abreve -35 KPX Dcaron Acircumflex -35 KPX Dcaron Adieresis -35 KPX Dcaron Agrave -35 KPX Dcaron Amacron -35 KPX Dcaron Aogonek -35 KPX Dcaron Aring -35 KPX Dcaron Atilde -35 KPX Dcaron V -40 KPX Dcaron W -40 KPX Dcaron Y -40 KPX Dcaron Yacute -40 KPX Dcaron Ydieresis -40 KPX Dcroat A -35 KPX Dcroat Aacute -35 KPX Dcroat Abreve -35 KPX Dcroat Acircumflex -35 KPX Dcroat Adieresis -35 KPX Dcroat Agrave -35 KPX Dcroat Amacron -35 KPX Dcroat Aogonek -35 KPX Dcroat Aring -35 KPX Dcroat Atilde -35 KPX Dcroat V -40 KPX Dcroat W -40 KPX Dcroat Y -40 KPX Dcroat Yacute -40 KPX Dcroat Ydieresis -40 KPX F A -115 KPX F Aacute -115 KPX F Abreve -115 KPX F Acircumflex -115 KPX F Adieresis -115 KPX F Agrave -115 KPX F Amacron -115 KPX F Aogonek -115 KPX F Aring -115 KPX F Atilde -115 KPX F a -75 KPX F aacute -75 KPX F abreve -75 KPX F acircumflex -75 KPX F adieresis -75 KPX F agrave -75 KPX F amacron -75 KPX F aogonek -75 KPX F aring -75 KPX F atilde -75 KPX F comma -135 KPX F e -75 KPX F eacute -75 KPX F ecaron -75 KPX F ecircumflex -75 KPX F edieresis -75 KPX F edotaccent -75 KPX F egrave -75 KPX F emacron -75 KPX F eogonek -75 KPX F i -45 KPX F iacute -45 KPX F icircumflex -45 KPX F idieresis -45 KPX F igrave -45 KPX F imacron -45 KPX F iogonek -45 KPX F o -105 KPX F oacute -105 KPX F ocircumflex -105 KPX F odieresis -105 KPX F ograve -105 KPX F ohungarumlaut -105 KPX F omacron -105 KPX F oslash -105 KPX F otilde -105 KPX F period -135 KPX F r -55 KPX F racute -55 KPX F rcaron -55 KPX F rcommaaccent -55 KPX J A -40 KPX J Aacute -40 KPX J Abreve -40 KPX J Acircumflex -40 KPX J Adieresis -40 KPX J Agrave -40 KPX J Amacron -40 KPX J Aogonek -40 KPX J Aring -40 KPX J Atilde -40 KPX J a -35 KPX J aacute -35 KPX J abreve -35 KPX J acircumflex -35 KPX J adieresis -35 KPX J agrave -35 KPX J amacron -35 KPX J aogonek -35 KPX J aring -35 KPX J atilde -35 KPX J comma -25 KPX J e -25 KPX J eacute -25 KPX J ecaron -25 KPX J ecircumflex -25 KPX J edieresis -25 KPX J edotaccent -25 KPX J egrave -25 KPX J emacron -25 KPX J eogonek -25 KPX J o -25 KPX J oacute -25 KPX J ocircumflex -25 KPX J odieresis -25 KPX J ograve -25 KPX J ohungarumlaut -25 KPX J omacron -25 KPX J oslash -25 KPX J otilde -25 KPX J period -25 KPX J u -35 KPX J uacute -35 KPX J ucircumflex -35 KPX J udieresis -35 KPX J ugrave -35 KPX J uhungarumlaut -35 KPX J umacron -35 KPX J uogonek -35 KPX J uring -35 KPX K O -50 KPX K Oacute -50 KPX K Ocircumflex -50 KPX K Odieresis -50 KPX K Ograve -50 KPX K Ohungarumlaut -50 KPX K Omacron -50 KPX K Oslash -50 KPX K Otilde -50 KPX K e -35 KPX K eacute -35 KPX K ecaron -35 KPX K ecircumflex -35 KPX K edieresis -35 KPX K edotaccent -35 KPX K egrave -35 KPX K emacron -35 KPX K eogonek -35 KPX K o -40 KPX K oacute -40 KPX K ocircumflex -40 KPX K odieresis -40 KPX K ograve -40 KPX K ohungarumlaut -40 KPX K omacron -40 KPX K oslash -40 KPX K otilde -40 KPX K u -40 KPX K uacute -40 KPX K ucircumflex -40 KPX K udieresis -40 KPX K ugrave -40 KPX K uhungarumlaut -40 KPX K umacron -40 KPX K uogonek -40 KPX K uring -40 KPX K y -40 KPX K yacute -40 KPX K ydieresis -40 KPX Kcommaaccent O -50 KPX Kcommaaccent Oacute -50 KPX Kcommaaccent Ocircumflex -50 KPX Kcommaaccent Odieresis -50 KPX Kcommaaccent Ograve -50 KPX Kcommaaccent Ohungarumlaut -50 KPX Kcommaaccent Omacron -50 KPX Kcommaaccent Oslash -50 KPX Kcommaaccent Otilde -50 KPX Kcommaaccent e -35 KPX Kcommaaccent eacute -35 KPX Kcommaaccent ecaron -35 KPX Kcommaaccent ecircumflex -35 KPX Kcommaaccent edieresis -35 KPX Kcommaaccent edotaccent -35 KPX Kcommaaccent egrave -35 KPX Kcommaaccent emacron -35 KPX Kcommaaccent eogonek -35 KPX Kcommaaccent o -40 KPX Kcommaaccent oacute -40 KPX Kcommaaccent ocircumflex -40 KPX Kcommaaccent odieresis -40 KPX Kcommaaccent ograve -40 KPX Kcommaaccent ohungarumlaut -40 KPX Kcommaaccent omacron -40 KPX Kcommaaccent oslash -40 KPX Kcommaaccent otilde -40 KPX Kcommaaccent u -40 KPX Kcommaaccent uacute -40 KPX Kcommaaccent ucircumflex -40 KPX Kcommaaccent udieresis -40 KPX Kcommaaccent ugrave -40 KPX Kcommaaccent uhungarumlaut -40 KPX Kcommaaccent umacron -40 KPX Kcommaaccent uogonek -40 KPX Kcommaaccent uring -40 KPX Kcommaaccent y -40 KPX Kcommaaccent yacute -40 KPX Kcommaaccent ydieresis -40 KPX L T -20 KPX L Tcaron -20 KPX L Tcommaaccent -20 KPX L V -55 KPX L W -55 KPX L Y -20 KPX L Yacute -20 KPX L Ydieresis -20 KPX L quoteright -37 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -20 KPX Lacute Tcaron -20 KPX Lacute Tcommaaccent -20 KPX Lacute V -55 KPX Lacute W -55 KPX Lacute Y -20 KPX Lacute Yacute -20 KPX Lacute Ydieresis -20 KPX Lacute quoteright -37 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcommaaccent T -20 KPX Lcommaaccent Tcaron -20 KPX Lcommaaccent Tcommaaccent -20 KPX Lcommaaccent V -55 KPX Lcommaaccent W -55 KPX Lcommaaccent Y -20 KPX Lcommaaccent Yacute -20 KPX Lcommaaccent Ydieresis -20 KPX Lcommaaccent quoteright -37 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -20 KPX Lslash Tcaron -20 KPX Lslash Tcommaaccent -20 KPX Lslash V -55 KPX Lslash W -55 KPX Lslash Y -20 KPX Lslash Yacute -20 KPX Lslash Ydieresis -20 KPX Lslash quoteright -37 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX N A -27 KPX N Aacute -27 KPX N Abreve -27 KPX N Acircumflex -27 KPX N Adieresis -27 KPX N Agrave -27 KPX N Amacron -27 KPX N Aogonek -27 KPX N Aring -27 KPX N Atilde -27 KPX Nacute A -27 KPX Nacute Aacute -27 KPX Nacute Abreve -27 KPX Nacute Acircumflex -27 KPX Nacute Adieresis -27 KPX Nacute Agrave -27 KPX Nacute Amacron -27 KPX Nacute Aogonek -27 KPX Nacute Aring -27 KPX Nacute Atilde -27 KPX Ncaron A -27 KPX Ncaron Aacute -27 KPX Ncaron Abreve -27 KPX Ncaron Acircumflex -27 KPX Ncaron Adieresis -27 KPX Ncaron Agrave -27 KPX Ncaron Amacron -27 KPX Ncaron Aogonek -27 KPX Ncaron Aring -27 KPX Ncaron Atilde -27 KPX Ncommaaccent A -27 KPX Ncommaaccent Aacute -27 KPX Ncommaaccent Abreve -27 KPX Ncommaaccent Acircumflex -27 KPX Ncommaaccent Adieresis -27 KPX Ncommaaccent Agrave -27 KPX Ncommaaccent Amacron -27 KPX Ncommaaccent Aogonek -27 KPX Ncommaaccent Aring -27 KPX Ncommaaccent Atilde -27 KPX Ntilde A -27 KPX Ntilde Aacute -27 KPX Ntilde Abreve -27 KPX Ntilde Acircumflex -27 KPX Ntilde Adieresis -27 KPX Ntilde Agrave -27 KPX Ntilde Amacron -27 KPX Ntilde Aogonek -27 KPX Ntilde Aring -27 KPX Ntilde Atilde -27 KPX O A -55 KPX O Aacute -55 KPX O Abreve -55 KPX O Acircumflex -55 KPX O Adieresis -55 KPX O Agrave -55 KPX O Amacron -55 KPX O Aogonek -55 KPX O Aring -55 KPX O Atilde -55 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -50 KPX O X -40 KPX O Y -50 KPX O Yacute -50 KPX O Ydieresis -50 KPX Oacute A -55 KPX Oacute Aacute -55 KPX Oacute Abreve -55 KPX Oacute Acircumflex -55 KPX Oacute Adieresis -55 KPX Oacute Agrave -55 KPX Oacute Amacron -55 KPX Oacute Aogonek -55 KPX Oacute Aring -55 KPX Oacute Atilde -55 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -50 KPX Oacute X -40 KPX Oacute Y -50 KPX Oacute Yacute -50 KPX Oacute Ydieresis -50 KPX Ocircumflex A -55 KPX Ocircumflex Aacute -55 KPX Ocircumflex Abreve -55 KPX Ocircumflex Acircumflex -55 KPX Ocircumflex Adieresis -55 KPX Ocircumflex Agrave -55 KPX Ocircumflex Amacron -55 KPX Ocircumflex Aogonek -55 KPX Ocircumflex Aring -55 KPX Ocircumflex Atilde -55 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -50 KPX Ocircumflex X -40 KPX Ocircumflex Y -50 KPX Ocircumflex Yacute -50 KPX Ocircumflex Ydieresis -50 KPX Odieresis A -55 KPX Odieresis Aacute -55 KPX Odieresis Abreve -55 KPX Odieresis Acircumflex -55 KPX Odieresis Adieresis -55 KPX Odieresis Agrave -55 KPX Odieresis Amacron -55 KPX Odieresis Aogonek -55 KPX Odieresis Aring -55 KPX Odieresis Atilde -55 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -50 KPX Odieresis X -40 KPX Odieresis Y -50 KPX Odieresis Yacute -50 KPX Odieresis Ydieresis -50 KPX Ograve A -55 KPX Ograve Aacute -55 KPX Ograve Abreve -55 KPX Ograve Acircumflex -55 KPX Ograve Adieresis -55 KPX Ograve Agrave -55 KPX Ograve Amacron -55 KPX Ograve Aogonek -55 KPX Ograve Aring -55 KPX Ograve Atilde -55 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -50 KPX Ograve X -40 KPX Ograve Y -50 KPX Ograve Yacute -50 KPX Ograve Ydieresis -50 KPX Ohungarumlaut A -55 KPX Ohungarumlaut Aacute -55 KPX Ohungarumlaut Abreve -55 KPX Ohungarumlaut Acircumflex -55 KPX Ohungarumlaut Adieresis -55 KPX Ohungarumlaut Agrave -55 KPX Ohungarumlaut Amacron -55 KPX Ohungarumlaut Aogonek -55 KPX Ohungarumlaut Aring -55 KPX Ohungarumlaut Atilde -55 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -50 KPX Ohungarumlaut X -40 KPX Ohungarumlaut Y -50 KPX Ohungarumlaut Yacute -50 KPX Ohungarumlaut Ydieresis -50 KPX Omacron A -55 KPX Omacron Aacute -55 KPX Omacron Abreve -55 KPX Omacron Acircumflex -55 KPX Omacron Adieresis -55 KPX Omacron Agrave -55 KPX Omacron Amacron -55 KPX Omacron Aogonek -55 KPX Omacron Aring -55 KPX Omacron Atilde -55 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -50 KPX Omacron X -40 KPX Omacron Y -50 KPX Omacron Yacute -50 KPX Omacron Ydieresis -50 KPX Oslash A -55 KPX Oslash Aacute -55 KPX Oslash Abreve -55 KPX Oslash Acircumflex -55 KPX Oslash Adieresis -55 KPX Oslash Agrave -55 KPX Oslash Amacron -55 KPX Oslash Aogonek -55 KPX Oslash Aring -55 KPX Oslash Atilde -55 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -50 KPX Oslash X -40 KPX Oslash Y -50 KPX Oslash Yacute -50 KPX Oslash Ydieresis -50 KPX Otilde A -55 KPX Otilde Aacute -55 KPX Otilde Abreve -55 KPX Otilde Acircumflex -55 KPX Otilde Adieresis -55 KPX Otilde Agrave -55 KPX Otilde Amacron -55 KPX Otilde Aogonek -55 KPX Otilde Aring -55 KPX Otilde Atilde -55 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -50 KPX Otilde X -40 KPX Otilde Y -50 KPX Otilde Yacute -50 KPX Otilde Ydieresis -50 KPX P A -90 KPX P Aacute -90 KPX P Abreve -90 KPX P Acircumflex -90 KPX P Adieresis -90 KPX P Agrave -90 KPX P Amacron -90 KPX P Aogonek -90 KPX P Aring -90 KPX P Atilde -90 KPX P a -80 KPX P aacute -80 KPX P abreve -80 KPX P acircumflex -80 KPX P adieresis -80 KPX P agrave -80 KPX P amacron -80 KPX P aogonek -80 KPX P aring -80 KPX P atilde -80 KPX P comma -135 KPX P e -80 KPX P eacute -80 KPX P ecaron -80 KPX P ecircumflex -80 KPX P edieresis -80 KPX P edotaccent -80 KPX P egrave -80 KPX P emacron -80 KPX P eogonek -80 KPX P o -80 KPX P oacute -80 KPX P ocircumflex -80 KPX P odieresis -80 KPX P ograve -80 KPX P ohungarumlaut -80 KPX P omacron -80 KPX P oslash -80 KPX P otilde -80 KPX P period -135 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R O -40 KPX R Oacute -40 KPX R Ocircumflex -40 KPX R Odieresis -40 KPX R Ograve -40 KPX R Ohungarumlaut -40 KPX R Omacron -40 KPX R Oslash -40 KPX R Otilde -40 KPX R U -40 KPX R Uacute -40 KPX R Ucircumflex -40 KPX R Udieresis -40 KPX R Ugrave -40 KPX R Uhungarumlaut -40 KPX R Umacron -40 KPX R Uogonek -40 KPX R Uring -40 KPX R V -18 KPX R W -18 KPX R Y -18 KPX R Yacute -18 KPX R Ydieresis -18 KPX Racute O -40 KPX Racute Oacute -40 KPX Racute Ocircumflex -40 KPX Racute Odieresis -40 KPX Racute Ograve -40 KPX Racute Ohungarumlaut -40 KPX Racute Omacron -40 KPX Racute Oslash -40 KPX Racute Otilde -40 KPX Racute U -40 KPX Racute Uacute -40 KPX Racute Ucircumflex -40 KPX Racute Udieresis -40 KPX Racute Ugrave -40 KPX Racute Uhungarumlaut -40 KPX Racute Umacron -40 KPX Racute Uogonek -40 KPX Racute Uring -40 KPX Racute V -18 KPX Racute W -18 KPX Racute Y -18 KPX Racute Yacute -18 KPX Racute Ydieresis -18 KPX Rcaron O -40 KPX Rcaron Oacute -40 KPX Rcaron Ocircumflex -40 KPX Rcaron Odieresis -40 KPX Rcaron Ograve -40 KPX Rcaron Ohungarumlaut -40 KPX Rcaron Omacron -40 KPX Rcaron Oslash -40 KPX Rcaron Otilde -40 KPX Rcaron U -40 KPX Rcaron Uacute -40 KPX Rcaron Ucircumflex -40 KPX Rcaron Udieresis -40 KPX Rcaron Ugrave -40 KPX Rcaron Uhungarumlaut -40 KPX Rcaron Umacron -40 KPX Rcaron Uogonek -40 KPX Rcaron Uring -40 KPX Rcaron V -18 KPX Rcaron W -18 KPX Rcaron Y -18 KPX Rcaron Yacute -18 KPX Rcaron Ydieresis -18 KPX Rcommaaccent O -40 KPX Rcommaaccent Oacute -40 KPX Rcommaaccent Ocircumflex -40 KPX Rcommaaccent Odieresis -40 KPX Rcommaaccent Ograve -40 KPX Rcommaaccent Ohungarumlaut -40 KPX Rcommaaccent Omacron -40 KPX Rcommaaccent Oslash -40 KPX Rcommaaccent Otilde -40 KPX Rcommaaccent U -40 KPX Rcommaaccent Uacute -40 KPX Rcommaaccent Ucircumflex -40 KPX Rcommaaccent Udieresis -40 KPX Rcommaaccent Ugrave -40 KPX Rcommaaccent Uhungarumlaut -40 KPX Rcommaaccent Umacron -40 KPX Rcommaaccent Uogonek -40 KPX Rcommaaccent Uring -40 KPX Rcommaaccent V -18 KPX Rcommaaccent W -18 KPX Rcommaaccent Y -18 KPX Rcommaaccent Yacute -18 KPX Rcommaaccent Ydieresis -18 KPX T A -50 KPX T Aacute -50 KPX T Abreve -50 KPX T Acircumflex -50 KPX T Adieresis -50 KPX T Agrave -50 KPX T Amacron -50 KPX T Aogonek -50 KPX T Aring -50 KPX T Atilde -50 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -92 KPX T aacute -92 KPX T abreve -92 KPX T acircumflex -92 KPX T adieresis -92 KPX T agrave -92 KPX T amacron -92 KPX T aogonek -92 KPX T aring -92 KPX T atilde -92 KPX T colon -55 KPX T comma -74 KPX T e -92 KPX T eacute -92 KPX T ecaron -92 KPX T ecircumflex -52 KPX T edieresis -52 KPX T edotaccent -92 KPX T egrave -52 KPX T emacron -52 KPX T eogonek -92 KPX T hyphen -74 KPX T i -55 KPX T iacute -55 KPX T iogonek -55 KPX T o -92 KPX T oacute -92 KPX T ocircumflex -92 KPX T odieresis -92 KPX T ograve -92 KPX T ohungarumlaut -92 KPX T omacron -92 KPX T oslash -92 KPX T otilde -92 KPX T period -74 KPX T r -55 KPX T racute -55 KPX T rcaron -55 KPX T rcommaaccent -55 KPX T semicolon -65 KPX T u -55 KPX T uacute -55 KPX T ucircumflex -55 KPX T udieresis -55 KPX T ugrave -55 KPX T uhungarumlaut -55 KPX T umacron -55 KPX T uogonek -55 KPX T uring -55 KPX T w -74 KPX T y -74 KPX T yacute -74 KPX T ydieresis -34 KPX Tcaron A -50 KPX Tcaron Aacute -50 KPX Tcaron Abreve -50 KPX Tcaron Acircumflex -50 KPX Tcaron Adieresis -50 KPX Tcaron Agrave -50 KPX Tcaron Amacron -50 KPX Tcaron Aogonek -50 KPX Tcaron Aring -50 KPX Tcaron Atilde -50 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -92 KPX Tcaron aacute -92 KPX Tcaron abreve -92 KPX Tcaron acircumflex -92 KPX Tcaron adieresis -92 KPX Tcaron agrave -92 KPX Tcaron amacron -92 KPX Tcaron aogonek -92 KPX Tcaron aring -92 KPX Tcaron atilde -92 KPX Tcaron colon -55 KPX Tcaron comma -74 KPX Tcaron e -92 KPX Tcaron eacute -92 KPX Tcaron ecaron -92 KPX Tcaron ecircumflex -52 KPX Tcaron edieresis -52 KPX Tcaron edotaccent -92 KPX Tcaron egrave -52 KPX Tcaron emacron -52 KPX Tcaron eogonek -92 KPX Tcaron hyphen -74 KPX Tcaron i -55 KPX Tcaron iacute -55 KPX Tcaron iogonek -55 KPX Tcaron o -92 KPX Tcaron oacute -92 KPX Tcaron ocircumflex -92 KPX Tcaron odieresis -92 KPX Tcaron ograve -92 KPX Tcaron ohungarumlaut -92 KPX Tcaron omacron -92 KPX Tcaron oslash -92 KPX Tcaron otilde -92 KPX Tcaron period -74 KPX Tcaron r -55 KPX Tcaron racute -55 KPX Tcaron rcaron -55 KPX Tcaron rcommaaccent -55 KPX Tcaron semicolon -65 KPX Tcaron u -55 KPX Tcaron uacute -55 KPX Tcaron ucircumflex -55 KPX Tcaron udieresis -55 KPX Tcaron ugrave -55 KPX Tcaron uhungarumlaut -55 KPX Tcaron umacron -55 KPX Tcaron uogonek -55 KPX Tcaron uring -55 KPX Tcaron w -74 KPX Tcaron y -74 KPX Tcaron yacute -74 KPX Tcaron ydieresis -34 KPX Tcommaaccent A -50 KPX Tcommaaccent Aacute -50 KPX Tcommaaccent Abreve -50 KPX Tcommaaccent Acircumflex -50 KPX Tcommaaccent Adieresis -50 KPX Tcommaaccent Agrave -50 KPX Tcommaaccent Amacron -50 KPX Tcommaaccent Aogonek -50 KPX Tcommaaccent Aring -50 KPX Tcommaaccent Atilde -50 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -92 KPX Tcommaaccent aacute -92 KPX Tcommaaccent abreve -92 KPX Tcommaaccent acircumflex -92 KPX Tcommaaccent adieresis -92 KPX Tcommaaccent agrave -92 KPX Tcommaaccent amacron -92 KPX Tcommaaccent aogonek -92 KPX Tcommaaccent aring -92 KPX Tcommaaccent atilde -92 KPX Tcommaaccent colon -55 KPX Tcommaaccent comma -74 KPX Tcommaaccent e -92 KPX Tcommaaccent eacute -92 KPX Tcommaaccent ecaron -92 KPX Tcommaaccent ecircumflex -52 KPX Tcommaaccent edieresis -52 KPX Tcommaaccent edotaccent -92 KPX Tcommaaccent egrave -52 KPX Tcommaaccent emacron -52 KPX Tcommaaccent eogonek -92 KPX Tcommaaccent hyphen -74 KPX Tcommaaccent i -55 KPX Tcommaaccent iacute -55 KPX Tcommaaccent iogonek -55 KPX Tcommaaccent o -92 KPX Tcommaaccent oacute -92 KPX Tcommaaccent ocircumflex -92 KPX Tcommaaccent odieresis -92 KPX Tcommaaccent ograve -92 KPX Tcommaaccent ohungarumlaut -92 KPX Tcommaaccent omacron -92 KPX Tcommaaccent oslash -92 KPX Tcommaaccent otilde -92 KPX Tcommaaccent period -74 KPX Tcommaaccent r -55 KPX Tcommaaccent racute -55 KPX Tcommaaccent rcaron -55 KPX Tcommaaccent rcommaaccent -55 KPX Tcommaaccent semicolon -65 KPX Tcommaaccent u -55 KPX Tcommaaccent uacute -55 KPX Tcommaaccent ucircumflex -55 KPX Tcommaaccent udieresis -55 KPX Tcommaaccent ugrave -55 KPX Tcommaaccent uhungarumlaut -55 KPX Tcommaaccent umacron -55 KPX Tcommaaccent uogonek -55 KPX Tcommaaccent uring -55 KPX Tcommaaccent w -74 KPX Tcommaaccent y -74 KPX Tcommaaccent yacute -74 KPX Tcommaaccent ydieresis -34 KPX U A -40 KPX U Aacute -40 KPX U Abreve -40 KPX U Acircumflex -40 KPX U Adieresis -40 KPX U Agrave -40 KPX U Amacron -40 KPX U Aogonek -40 KPX U Aring -40 KPX U Atilde -40 KPX U comma -25 KPX U period -25 KPX Uacute A -40 KPX Uacute Aacute -40 KPX Uacute Abreve -40 KPX Uacute Acircumflex -40 KPX Uacute Adieresis -40 KPX Uacute Agrave -40 KPX Uacute Amacron -40 KPX Uacute Aogonek -40 KPX Uacute Aring -40 KPX Uacute Atilde -40 KPX Uacute comma -25 KPX Uacute period -25 KPX Ucircumflex A -40 KPX Ucircumflex Aacute -40 KPX Ucircumflex Abreve -40 KPX Ucircumflex Acircumflex -40 KPX Ucircumflex Adieresis -40 KPX Ucircumflex Agrave -40 KPX Ucircumflex Amacron -40 KPX Ucircumflex Aogonek -40 KPX Ucircumflex Aring -40 KPX Ucircumflex Atilde -40 KPX Ucircumflex comma -25 KPX Ucircumflex period -25 KPX Udieresis A -40 KPX Udieresis Aacute -40 KPX Udieresis Abreve -40 KPX Udieresis Acircumflex -40 KPX Udieresis Adieresis -40 KPX Udieresis Agrave -40 KPX Udieresis Amacron -40 KPX Udieresis Aogonek -40 KPX Udieresis Aring -40 KPX Udieresis Atilde -40 KPX Udieresis comma -25 KPX Udieresis period -25 KPX Ugrave A -40 KPX Ugrave Aacute -40 KPX Ugrave Abreve -40 KPX Ugrave Acircumflex -40 KPX Ugrave Adieresis -40 KPX Ugrave Agrave -40 KPX Ugrave Amacron -40 KPX Ugrave Aogonek -40 KPX Ugrave Aring -40 KPX Ugrave Atilde -40 KPX Ugrave comma -25 KPX Ugrave period -25 KPX Uhungarumlaut A -40 KPX Uhungarumlaut Aacute -40 KPX Uhungarumlaut Abreve -40 KPX Uhungarumlaut Acircumflex -40 KPX Uhungarumlaut Adieresis -40 KPX Uhungarumlaut Agrave -40 KPX Uhungarumlaut Amacron -40 KPX Uhungarumlaut Aogonek -40 KPX Uhungarumlaut Aring -40 KPX Uhungarumlaut Atilde -40 KPX Uhungarumlaut comma -25 KPX Uhungarumlaut period -25 KPX Umacron A -40 KPX Umacron Aacute -40 KPX Umacron Abreve -40 KPX Umacron Acircumflex -40 KPX Umacron Adieresis -40 KPX Umacron Agrave -40 KPX Umacron Amacron -40 KPX Umacron Aogonek -40 KPX Umacron Aring -40 KPX Umacron Atilde -40 KPX Umacron comma -25 KPX Umacron period -25 KPX Uogonek A -40 KPX Uogonek Aacute -40 KPX Uogonek Abreve -40 KPX Uogonek Acircumflex -40 KPX Uogonek Adieresis -40 KPX Uogonek Agrave -40 KPX Uogonek Amacron -40 KPX Uogonek Aogonek -40 KPX Uogonek Aring -40 KPX Uogonek Atilde -40 KPX Uogonek comma -25 KPX Uogonek period -25 KPX Uring A -40 KPX Uring Aacute -40 KPX Uring Abreve -40 KPX Uring Acircumflex -40 KPX Uring Adieresis -40 KPX Uring Agrave -40 KPX Uring Amacron -40 KPX Uring Aogonek -40 KPX Uring Aring -40 KPX Uring Atilde -40 KPX Uring comma -25 KPX Uring period -25 KPX V A -60 KPX V Aacute -60 KPX V Abreve -60 KPX V Acircumflex -60 KPX V Adieresis -60 KPX V Agrave -60 KPX V Amacron -60 KPX V Aogonek -60 KPX V Aring -60 KPX V Atilde -60 KPX V O -30 KPX V Oacute -30 KPX V Ocircumflex -30 KPX V Odieresis -30 KPX V Ograve -30 KPX V Ohungarumlaut -30 KPX V Omacron -30 KPX V Oslash -30 KPX V Otilde -30 KPX V a -111 KPX V aacute -111 KPX V abreve -111 KPX V acircumflex -111 KPX V adieresis -111 KPX V agrave -111 KPX V amacron -111 KPX V aogonek -111 KPX V aring -111 KPX V atilde -111 KPX V colon -65 KPX V comma -129 KPX V e -111 KPX V eacute -111 KPX V ecaron -111 KPX V ecircumflex -111 KPX V edieresis -71 KPX V edotaccent -111 KPX V egrave -71 KPX V emacron -71 KPX V eogonek -111 KPX V hyphen -55 KPX V i -74 KPX V iacute -74 KPX V icircumflex -34 KPX V idieresis -34 KPX V igrave -34 KPX V imacron -34 KPX V iogonek -74 KPX V o -111 KPX V oacute -111 KPX V ocircumflex -111 KPX V odieresis -111 KPX V ograve -111 KPX V ohungarumlaut -111 KPX V omacron -111 KPX V oslash -111 KPX V otilde -111 KPX V period -129 KPX V semicolon -74 KPX V u -74 KPX V uacute -74 KPX V ucircumflex -74 KPX V udieresis -74 KPX V ugrave -74 KPX V uhungarumlaut -74 KPX V umacron -74 KPX V uogonek -74 KPX V uring -74 KPX W A -60 KPX W Aacute -60 KPX W Abreve -60 KPX W Acircumflex -60 KPX W Adieresis -60 KPX W Agrave -60 KPX W Amacron -60 KPX W Aogonek -60 KPX W Aring -60 KPX W Atilde -60 KPX W O -25 KPX W Oacute -25 KPX W Ocircumflex -25 KPX W Odieresis -25 KPX W Ograve -25 KPX W Ohungarumlaut -25 KPX W Omacron -25 KPX W Oslash -25 KPX W Otilde -25 KPX W a -92 KPX W aacute -92 KPX W abreve -92 KPX W acircumflex -92 KPX W adieresis -92 KPX W agrave -92 KPX W amacron -92 KPX W aogonek -92 KPX W aring -92 KPX W atilde -92 KPX W colon -65 KPX W comma -92 KPX W e -92 KPX W eacute -92 KPX W ecaron -92 KPX W ecircumflex -92 KPX W edieresis -52 KPX W edotaccent -92 KPX W egrave -52 KPX W emacron -52 KPX W eogonek -92 KPX W hyphen -37 KPX W i -55 KPX W iacute -55 KPX W iogonek -55 KPX W o -92 KPX W oacute -92 KPX W ocircumflex -92 KPX W odieresis -92 KPX W ograve -92 KPX W ohungarumlaut -92 KPX W omacron -92 KPX W oslash -92 KPX W otilde -92 KPX W period -92 KPX W semicolon -65 KPX W u -55 KPX W uacute -55 KPX W ucircumflex -55 KPX W udieresis -55 KPX W ugrave -55 KPX W uhungarumlaut -55 KPX W umacron -55 KPX W uogonek -55 KPX W uring -55 KPX W y -70 KPX W yacute -70 KPX W ydieresis -70 KPX Y A -50 KPX Y Aacute -50 KPX Y Abreve -50 KPX Y Acircumflex -50 KPX Y Adieresis -50 KPX Y Agrave -50 KPX Y Amacron -50 KPX Y Aogonek -50 KPX Y Aring -50 KPX Y Atilde -50 KPX Y O -15 KPX Y Oacute -15 KPX Y Ocircumflex -15 KPX Y Odieresis -15 KPX Y Ograve -15 KPX Y Ohungarumlaut -15 KPX Y Omacron -15 KPX Y Oslash -15 KPX Y Otilde -15 KPX Y a -92 KPX Y aacute -92 KPX Y abreve -92 KPX Y acircumflex -92 KPX Y adieresis -92 KPX Y agrave -92 KPX Y amacron -92 KPX Y aogonek -92 KPX Y aring -92 KPX Y atilde -92 KPX Y colon -65 KPX Y comma -92 KPX Y e -92 KPX Y eacute -92 KPX Y ecaron -92 KPX Y ecircumflex -92 KPX Y edieresis -52 KPX Y edotaccent -92 KPX Y egrave -52 KPX Y emacron -52 KPX Y eogonek -92 KPX Y hyphen -74 KPX Y i -74 KPX Y iacute -74 KPX Y icircumflex -34 KPX Y idieresis -34 KPX Y igrave -34 KPX Y imacron -34 KPX Y iogonek -74 KPX Y o -92 KPX Y oacute -92 KPX Y ocircumflex -92 KPX Y odieresis -92 KPX Y ograve -92 KPX Y ohungarumlaut -92 KPX Y omacron -92 KPX Y oslash -92 KPX Y otilde -92 KPX Y period -92 KPX Y semicolon -65 KPX Y u -92 KPX Y uacute -92 KPX Y ucircumflex -92 KPX Y udieresis -92 KPX Y ugrave -92 KPX Y uhungarumlaut -92 KPX Y umacron -92 KPX Y uogonek -92 KPX Y uring -92 KPX Yacute A -50 KPX Yacute Aacute -50 KPX Yacute Abreve -50 KPX Yacute Acircumflex -50 KPX Yacute Adieresis -50 KPX Yacute Agrave -50 KPX Yacute Amacron -50 KPX Yacute Aogonek -50 KPX Yacute Aring -50 KPX Yacute Atilde -50 KPX Yacute O -15 KPX Yacute Oacute -15 KPX Yacute Ocircumflex -15 KPX Yacute Odieresis -15 KPX Yacute Ograve -15 KPX Yacute Ohungarumlaut -15 KPX Yacute Omacron -15 KPX Yacute Oslash -15 KPX Yacute Otilde -15 KPX Yacute a -92 KPX Yacute aacute -92 KPX Yacute abreve -92 KPX Yacute acircumflex -92 KPX Yacute adieresis -92 KPX Yacute agrave -92 KPX Yacute amacron -92 KPX Yacute aogonek -92 KPX Yacute aring -92 KPX Yacute atilde -92 KPX Yacute colon -65 KPX Yacute comma -92 KPX Yacute e -92 KPX Yacute eacute -92 KPX Yacute ecaron -92 KPX Yacute ecircumflex -92 KPX Yacute edieresis -52 KPX Yacute edotaccent -92 KPX Yacute egrave -52 KPX Yacute emacron -52 KPX Yacute eogonek -92 KPX Yacute hyphen -74 KPX Yacute i -74 KPX Yacute iacute -74 KPX Yacute icircumflex -34 KPX Yacute idieresis -34 KPX Yacute igrave -34 KPX Yacute imacron -34 KPX Yacute iogonek -74 KPX Yacute o -92 KPX Yacute oacute -92 KPX Yacute ocircumflex -92 KPX Yacute odieresis -92 KPX Yacute ograve -92 KPX Yacute ohungarumlaut -92 KPX Yacute omacron -92 KPX Yacute oslash -92 KPX Yacute otilde -92 KPX Yacute period -92 KPX Yacute semicolon -65 KPX Yacute u -92 KPX Yacute uacute -92 KPX Yacute ucircumflex -92 KPX Yacute udieresis -92 KPX Yacute ugrave -92 KPX Yacute uhungarumlaut -92 KPX Yacute umacron -92 KPX Yacute uogonek -92 KPX Yacute uring -92 KPX Ydieresis A -50 KPX Ydieresis Aacute -50 KPX Ydieresis Abreve -50 KPX Ydieresis Acircumflex -50 KPX Ydieresis Adieresis -50 KPX Ydieresis Agrave -50 KPX Ydieresis Amacron -50 KPX Ydieresis Aogonek -50 KPX Ydieresis Aring -50 KPX Ydieresis Atilde -50 KPX Ydieresis O -15 KPX Ydieresis Oacute -15 KPX Ydieresis Ocircumflex -15 KPX Ydieresis Odieresis -15 KPX Ydieresis Ograve -15 KPX Ydieresis Ohungarumlaut -15 KPX Ydieresis Omacron -15 KPX Ydieresis Oslash -15 KPX Ydieresis Otilde -15 KPX Ydieresis a -92 KPX Ydieresis aacute -92 KPX Ydieresis abreve -92 KPX Ydieresis acircumflex -92 KPX Ydieresis adieresis -92 KPX Ydieresis agrave -92 KPX Ydieresis amacron -92 KPX Ydieresis aogonek -92 KPX Ydieresis aring -92 KPX Ydieresis atilde -92 KPX Ydieresis colon -65 KPX Ydieresis comma -92 KPX Ydieresis e -92 KPX Ydieresis eacute -92 KPX Ydieresis ecaron -92 KPX Ydieresis ecircumflex -92 KPX Ydieresis edieresis -52 KPX Ydieresis edotaccent -92 KPX Ydieresis egrave -52 KPX Ydieresis emacron -52 KPX Ydieresis eogonek -92 KPX Ydieresis hyphen -74 KPX Ydieresis i -74 KPX Ydieresis iacute -74 KPX Ydieresis icircumflex -34 KPX Ydieresis idieresis -34 KPX Ydieresis igrave -34 KPX Ydieresis imacron -34 KPX Ydieresis iogonek -74 KPX Ydieresis o -92 KPX Ydieresis oacute -92 KPX Ydieresis ocircumflex -92 KPX Ydieresis odieresis -92 KPX Ydieresis ograve -92 KPX Ydieresis ohungarumlaut -92 KPX Ydieresis omacron -92 KPX Ydieresis oslash -92 KPX Ydieresis otilde -92 KPX Ydieresis period -92 KPX Ydieresis semicolon -65 KPX Ydieresis u -92 KPX Ydieresis uacute -92 KPX Ydieresis ucircumflex -92 KPX Ydieresis udieresis -92 KPX Ydieresis ugrave -92 KPX Ydieresis uhungarumlaut -92 KPX Ydieresis umacron -92 KPX Ydieresis uogonek -92 KPX Ydieresis uring -92 KPX a g -10 KPX a gbreve -10 KPX a gcommaaccent -10 KPX aacute g -10 KPX aacute gbreve -10 KPX aacute gcommaaccent -10 KPX abreve g -10 KPX abreve gbreve -10 KPX abreve gcommaaccent -10 KPX acircumflex g -10 KPX acircumflex gbreve -10 KPX acircumflex gcommaaccent -10 KPX adieresis g -10 KPX adieresis gbreve -10 KPX adieresis gcommaaccent -10 KPX agrave g -10 KPX agrave gbreve -10 KPX agrave gcommaaccent -10 KPX amacron g -10 KPX amacron gbreve -10 KPX amacron gcommaaccent -10 KPX aogonek g -10 KPX aogonek gbreve -10 KPX aogonek gcommaaccent -10 KPX aring g -10 KPX aring gbreve -10 KPX aring gcommaaccent -10 KPX atilde g -10 KPX atilde gbreve -10 KPX atilde gcommaaccent -10 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX c h -15 KPX c k -20 KPX c kcommaaccent -20 KPX cacute h -15 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX ccaron h -15 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccedilla h -15 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX comma quotedblright -140 KPX comma quoteright -140 KPX e comma -10 KPX e g -40 KPX e gbreve -40 KPX e gcommaaccent -40 KPX e period -15 KPX e v -15 KPX e w -15 KPX e x -20 KPX e y -30 KPX e yacute -30 KPX e ydieresis -30 KPX eacute comma -10 KPX eacute g -40 KPX eacute gbreve -40 KPX eacute gcommaaccent -40 KPX eacute period -15 KPX eacute v -15 KPX eacute w -15 KPX eacute x -20 KPX eacute y -30 KPX eacute yacute -30 KPX eacute ydieresis -30 KPX ecaron comma -10 KPX ecaron g -40 KPX ecaron gbreve -40 KPX ecaron gcommaaccent -40 KPX ecaron period -15 KPX ecaron v -15 KPX ecaron w -15 KPX ecaron x -20 KPX ecaron y -30 KPX ecaron yacute -30 KPX ecaron ydieresis -30 KPX ecircumflex comma -10 KPX ecircumflex g -40 KPX ecircumflex gbreve -40 KPX ecircumflex gcommaaccent -40 KPX ecircumflex period -15 KPX ecircumflex v -15 KPX ecircumflex w -15 KPX ecircumflex x -20 KPX ecircumflex y -30 KPX ecircumflex yacute -30 KPX ecircumflex ydieresis -30 KPX edieresis comma -10 KPX edieresis g -40 KPX edieresis gbreve -40 KPX edieresis gcommaaccent -40 KPX edieresis period -15 KPX edieresis v -15 KPX edieresis w -15 KPX edieresis x -20 KPX edieresis y -30 KPX edieresis yacute -30 KPX edieresis ydieresis -30 KPX edotaccent comma -10 KPX edotaccent g -40 KPX edotaccent gbreve -40 KPX edotaccent gcommaaccent -40 KPX edotaccent period -15 KPX edotaccent v -15 KPX edotaccent w -15 KPX edotaccent x -20 KPX edotaccent y -30 KPX edotaccent yacute -30 KPX edotaccent ydieresis -30 KPX egrave comma -10 KPX egrave g -40 KPX egrave gbreve -40 KPX egrave gcommaaccent -40 KPX egrave period -15 KPX egrave v -15 KPX egrave w -15 KPX egrave x -20 KPX egrave y -30 KPX egrave yacute -30 KPX egrave ydieresis -30 KPX emacron comma -10 KPX emacron g -40 KPX emacron gbreve -40 KPX emacron gcommaaccent -40 KPX emacron period -15 KPX emacron v -15 KPX emacron w -15 KPX emacron x -20 KPX emacron y -30 KPX emacron yacute -30 KPX emacron ydieresis -30 KPX eogonek comma -10 KPX eogonek g -40 KPX eogonek gbreve -40 KPX eogonek gcommaaccent -40 KPX eogonek period -15 KPX eogonek v -15 KPX eogonek w -15 KPX eogonek x -20 KPX eogonek y -30 KPX eogonek yacute -30 KPX eogonek ydieresis -30 KPX f comma -10 KPX f dotlessi -60 KPX f f -18 KPX f i -20 KPX f iogonek -20 KPX f period -15 KPX f quoteright 92 KPX g comma -10 KPX g e -10 KPX g eacute -10 KPX g ecaron -10 KPX g ecircumflex -10 KPX g edieresis -10 KPX g edotaccent -10 KPX g egrave -10 KPX g emacron -10 KPX g eogonek -10 KPX g g -10 KPX g gbreve -10 KPX g gcommaaccent -10 KPX g period -15 KPX gbreve comma -10 KPX gbreve e -10 KPX gbreve eacute -10 KPX gbreve ecaron -10 KPX gbreve ecircumflex -10 KPX gbreve edieresis -10 KPX gbreve edotaccent -10 KPX gbreve egrave -10 KPX gbreve emacron -10 KPX gbreve eogonek -10 KPX gbreve g -10 KPX gbreve gbreve -10 KPX gbreve gcommaaccent -10 KPX gbreve period -15 KPX gcommaaccent comma -10 KPX gcommaaccent e -10 KPX gcommaaccent eacute -10 KPX gcommaaccent ecaron -10 KPX gcommaaccent ecircumflex -10 KPX gcommaaccent edieresis -10 KPX gcommaaccent edotaccent -10 KPX gcommaaccent egrave -10 KPX gcommaaccent emacron -10 KPX gcommaaccent eogonek -10 KPX gcommaaccent g -10 KPX gcommaaccent gbreve -10 KPX gcommaaccent gcommaaccent -10 KPX gcommaaccent period -15 KPX k e -10 KPX k eacute -10 KPX k ecaron -10 KPX k ecircumflex -10 KPX k edieresis -10 KPX k edotaccent -10 KPX k egrave -10 KPX k emacron -10 KPX k eogonek -10 KPX k o -10 KPX k oacute -10 KPX k ocircumflex -10 KPX k odieresis -10 KPX k ograve -10 KPX k ohungarumlaut -10 KPX k omacron -10 KPX k oslash -10 KPX k otilde -10 KPX k y -10 KPX k yacute -10 KPX k ydieresis -10 KPX kcommaaccent e -10 KPX kcommaaccent eacute -10 KPX kcommaaccent ecaron -10 KPX kcommaaccent ecircumflex -10 KPX kcommaaccent edieresis -10 KPX kcommaaccent edotaccent -10 KPX kcommaaccent egrave -10 KPX kcommaaccent emacron -10 KPX kcommaaccent eogonek -10 KPX kcommaaccent o -10 KPX kcommaaccent oacute -10 KPX kcommaaccent ocircumflex -10 KPX kcommaaccent odieresis -10 KPX kcommaaccent ograve -10 KPX kcommaaccent ohungarumlaut -10 KPX kcommaaccent omacron -10 KPX kcommaaccent oslash -10 KPX kcommaaccent otilde -10 KPX kcommaaccent y -10 KPX kcommaaccent yacute -10 KPX kcommaaccent ydieresis -10 KPX n v -40 KPX nacute v -40 KPX ncaron v -40 KPX ncommaaccent v -40 KPX ntilde v -40 KPX o g -10 KPX o gbreve -10 KPX o gcommaaccent -10 KPX o v -10 KPX oacute g -10 KPX oacute gbreve -10 KPX oacute gcommaaccent -10 KPX oacute v -10 KPX ocircumflex g -10 KPX ocircumflex gbreve -10 KPX ocircumflex gcommaaccent -10 KPX ocircumflex v -10 KPX odieresis g -10 KPX odieresis gbreve -10 KPX odieresis gcommaaccent -10 KPX odieresis v -10 KPX ograve g -10 KPX ograve gbreve -10 KPX ograve gcommaaccent -10 KPX ograve v -10 KPX ohungarumlaut g -10 KPX ohungarumlaut gbreve -10 KPX ohungarumlaut gcommaaccent -10 KPX ohungarumlaut v -10 KPX omacron g -10 KPX omacron gbreve -10 KPX omacron gcommaaccent -10 KPX omacron v -10 KPX oslash g -10 KPX oslash gbreve -10 KPX oslash gcommaaccent -10 KPX oslash v -10 KPX otilde g -10 KPX otilde gbreve -10 KPX otilde gcommaaccent -10 KPX otilde v -10 KPX period quotedblright -140 KPX period quoteright -140 KPX quoteleft quoteleft -111 KPX quoteright d -25 KPX quoteright dcroat -25 KPX quoteright quoteright -111 KPX quoteright r -25 KPX quoteright racute -25 KPX quoteright rcaron -25 KPX quoteright rcommaaccent -25 KPX quoteright s -40 KPX quoteright sacute -40 KPX quoteright scaron -40 KPX quoteright scedilla -40 KPX quoteright scommaaccent -40 KPX quoteright space -111 KPX quoteright t -30 KPX quoteright tcommaaccent -30 KPX quoteright v -10 KPX r a -15 KPX r aacute -15 KPX r abreve -15 KPX r acircumflex -15 KPX r adieresis -15 KPX r agrave -15 KPX r amacron -15 KPX r aogonek -15 KPX r aring -15 KPX r atilde -15 KPX r c -37 KPX r cacute -37 KPX r ccaron -37 KPX r ccedilla -37 KPX r comma -111 KPX r d -37 KPX r dcroat -37 KPX r e -37 KPX r eacute -37 KPX r ecaron -37 KPX r ecircumflex -37 KPX r edieresis -37 KPX r edotaccent -37 KPX r egrave -37 KPX r emacron -37 KPX r eogonek -37 KPX r g -37 KPX r gbreve -37 KPX r gcommaaccent -37 KPX r hyphen -20 KPX r o -45 KPX r oacute -45 KPX r ocircumflex -45 KPX r odieresis -45 KPX r ograve -45 KPX r ohungarumlaut -45 KPX r omacron -45 KPX r oslash -45 KPX r otilde -45 KPX r period -111 KPX r q -37 KPX r s -10 KPX r sacute -10 KPX r scaron -10 KPX r scedilla -10 KPX r scommaaccent -10 KPX racute a -15 KPX racute aacute -15 KPX racute abreve -15 KPX racute acircumflex -15 KPX racute adieresis -15 KPX racute agrave -15 KPX racute amacron -15 KPX racute aogonek -15 KPX racute aring -15 KPX racute atilde -15 KPX racute c -37 KPX racute cacute -37 KPX racute ccaron -37 KPX racute ccedilla -37 KPX racute comma -111 KPX racute d -37 KPX racute dcroat -37 KPX racute e -37 KPX racute eacute -37 KPX racute ecaron -37 KPX racute ecircumflex -37 KPX racute edieresis -37 KPX racute edotaccent -37 KPX racute egrave -37 KPX racute emacron -37 KPX racute eogonek -37 KPX racute g -37 KPX racute gbreve -37 KPX racute gcommaaccent -37 KPX racute hyphen -20 KPX racute o -45 KPX racute oacute -45 KPX racute ocircumflex -45 KPX racute odieresis -45 KPX racute ograve -45 KPX racute ohungarumlaut -45 KPX racute omacron -45 KPX racute oslash -45 KPX racute otilde -45 KPX racute period -111 KPX racute q -37 KPX racute s -10 KPX racute sacute -10 KPX racute scaron -10 KPX racute scedilla -10 KPX racute scommaaccent -10 KPX rcaron a -15 KPX rcaron aacute -15 KPX rcaron abreve -15 KPX rcaron acircumflex -15 KPX rcaron adieresis -15 KPX rcaron agrave -15 KPX rcaron amacron -15 KPX rcaron aogonek -15 KPX rcaron aring -15 KPX rcaron atilde -15 KPX rcaron c -37 KPX rcaron cacute -37 KPX rcaron ccaron -37 KPX rcaron ccedilla -37 KPX rcaron comma -111 KPX rcaron d -37 KPX rcaron dcroat -37 KPX rcaron e -37 KPX rcaron eacute -37 KPX rcaron ecaron -37 KPX rcaron ecircumflex -37 KPX rcaron edieresis -37 KPX rcaron edotaccent -37 KPX rcaron egrave -37 KPX rcaron emacron -37 KPX rcaron eogonek -37 KPX rcaron g -37 KPX rcaron gbreve -37 KPX rcaron gcommaaccent -37 KPX rcaron hyphen -20 KPX rcaron o -45 KPX rcaron oacute -45 KPX rcaron ocircumflex -45 KPX rcaron odieresis -45 KPX rcaron ograve -45 KPX rcaron ohungarumlaut -45 KPX rcaron omacron -45 KPX rcaron oslash -45 KPX rcaron otilde -45 KPX rcaron period -111 KPX rcaron q -37 KPX rcaron s -10 KPX rcaron sacute -10 KPX rcaron scaron -10 KPX rcaron scedilla -10 KPX rcaron scommaaccent -10 KPX rcommaaccent a -15 KPX rcommaaccent aacute -15 KPX rcommaaccent abreve -15 KPX rcommaaccent acircumflex -15 KPX rcommaaccent adieresis -15 KPX rcommaaccent agrave -15 KPX rcommaaccent amacron -15 KPX rcommaaccent aogonek -15 KPX rcommaaccent aring -15 KPX rcommaaccent atilde -15 KPX rcommaaccent c -37 KPX rcommaaccent cacute -37 KPX rcommaaccent ccaron -37 KPX rcommaaccent ccedilla -37 KPX rcommaaccent comma -111 KPX rcommaaccent d -37 KPX rcommaaccent dcroat -37 KPX rcommaaccent e -37 KPX rcommaaccent eacute -37 KPX rcommaaccent ecaron -37 KPX rcommaaccent ecircumflex -37 KPX rcommaaccent edieresis -37 KPX rcommaaccent edotaccent -37 KPX rcommaaccent egrave -37 KPX rcommaaccent emacron -37 KPX rcommaaccent eogonek -37 KPX rcommaaccent g -37 KPX rcommaaccent gbreve -37 KPX rcommaaccent gcommaaccent -37 KPX rcommaaccent hyphen -20 KPX rcommaaccent o -45 KPX rcommaaccent oacute -45 KPX rcommaaccent ocircumflex -45 KPX rcommaaccent odieresis -45 KPX rcommaaccent ograve -45 KPX rcommaaccent ohungarumlaut -45 KPX rcommaaccent omacron -45 KPX rcommaaccent oslash -45 KPX rcommaaccent otilde -45 KPX rcommaaccent period -111 KPX rcommaaccent q -37 KPX rcommaaccent s -10 KPX rcommaaccent sacute -10 KPX rcommaaccent scaron -10 KPX rcommaaccent scedilla -10 KPX rcommaaccent scommaaccent -10 KPX space A -18 KPX space Aacute -18 KPX space Abreve -18 KPX space Acircumflex -18 KPX space Adieresis -18 KPX space Agrave -18 KPX space Amacron -18 KPX space Aogonek -18 KPX space Aring -18 KPX space Atilde -18 KPX space T -18 KPX space Tcaron -18 KPX space Tcommaaccent -18 KPX space V -35 KPX space W -40 KPX space Y -75 KPX space Yacute -75 KPX space Ydieresis -75 KPX v comma -74 KPX v period -74 KPX w comma -74 KPX w period -74 KPX y comma -55 KPX y period -55 KPX yacute comma -55 KPX yacute period -55 KPX ydieresis comma -55 KPX ydieresis period -55 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/LICENCE0000644000222100022210000000757214541067540013676 0ustar ph10ph10These AFM fonts have been relicensed by Adobe under a free license at different points in time. =============================================================================== From Adobe-Core35_AFMs-314.tar.gz: Adobe Core 35 AFM Files with 314 Glyph Entries - ReadMe This file and the 35 PostScript(R) AFM files it accompanies may be used, copied, and distributed for any purpose and without charge, with or without modification, provided that all copyright notices are retained; that the AFM files are not distributed without this file; that all modifications to this file or any of the AFM files are prominently noted in the modified file(s); and that this paragraph is not modified. Adobe Systems has no responsibility or obligation to support the use of the AFM files. AvantGarde-Book.afm AvantGarde-BookOblique.afm AvantGarde-Demi.afm AvantGarde-DemiOblique.afm Bookman-Demi.afm Bookman-DemiItalic.afm Bookman-Light.afm Bookman-LightItalic.afm Courier.afm Courier-Bold.afm Courier-BoldOblique.afm Courier-Oblique.afm Helvetica.afm Helvetica-Bold.afm Helvetica-BoldOblique.afm Helvetica-Oblique.afm NewCenturySchlbk-Bold.afm NewCenturySchlbk-BoldItalic.afm NewCenturySchlbk-Italic.afm NewCenturySchlbk-Roman.afm Palatino-Bold.afm Palatino-BoldItalic.afm Palatino-Italic.afm Palatino-Roman.afm Symbol.afm Times-Bold.afm Times-BoldItalic.afm Times-Italic.afm Times-Roman.afm ZapfChancery-MediumItalic.afm ZapfDingbats.afm MustRead.html Some of the filenames have been changed in this distribution, dropping the ITC prefix. =============================================================================== Utopia fonts, http://www.ctan.org/tex-archive/fonts/utopia/ Contents of the README file =============================================================================== Copyright 2006 TeX Users Group. You may freely use, modify and/or distribute this README file. This is a copy of the Utopia Type1 fonts and accompanying AFM files which Adobe originally contributed to the X consortium many years ago. In 2006, Adobe relicensed them to the TeX Users Group, under similar terms as the previous contribution, but now explicitly clarifying that the modifications to the fonts, and redistribution of the modified versions, was allowed. (This was always the intent; unfortunately, the original wording was ambiguous.) For the actual license, please see LICENSE-utopia.txt in this directory. (Original url: http://tug.org/fonts/utopia/LICENSE-utopia.txt) The contents of the fonts themselves are completely unchanged from the original X donation. Additional TeX support files, and derived fonts, are available in other TeX packages, notably fourier and mathdesign (they are available through http://www.ctan.org). This small directory simply provides Adobe's original files. The filenames here have been changed for use with TeX: putr8a = Utopia-Regular putri8a = Utopia-Italic putb8a = Utopia-Bold putbi8a = Utopia-BoldItalic These fonts are: Copyright 1989, 1991 Adobe Systems Incorporated. All rights reserved. Utopia(R) Utopia is either a registered trademark or trademark of Adobe Systems Incorporated in the United States and/or other countries. Used under license. We thank Adobe for taking the time to make this clarification for the benefit of the free software community. Terry O'Donnell deserves particular thanks for pushing the changes through, but many people were involved by the end. We are grateful to them all. --Karl Berry, TUG President on behalf of the TeX Users Group board and members 17 November 2006 =============================================================================== For PMW the files have been re-renamed again. Utopia-Bold.afm Utopia-BoldItalic.afm Utopia-Italic.afm Utopia-Regular.afm pmw-5.22/fontmetrics/Bookman-LightItalic.afm0000644000222100022210000010377714541067540017163 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:36:46 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43078 Comment VMusage 44679 55704 FontName Bookman-LightItalic FullName ITC Bookman Light Italic FamilyName ITC Bookman Weight Light ItalicAngle -10 IsFixedPitch false FontBBox -228 -250 1269 883 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 681 XHeight 494 Ascender 717 Descender -228 StdHW 42 StdVW 96 StartCharMetrics 359 C 32 ; WX 300 ; N space ; B 0 0 0 0 ; C 33 ; WX 320 ; N exclam ; B 103 -8 342 698 ; C 34 ; WX 360 ; N quotedbl ; B 107 468 402 699 ; C 35 ; WX 620 ; N numbersign ; B 107 0 598 681 ; C 36 ; WX 620 ; N dollar ; B 78 -85 619 762 ; C 37 ; WX 800 ; N percent ; B 56 -8 811 691 ; C 38 ; WX 820 ; N ampersand ; B 65 -18 848 698 ; C 39 ; WX 280 ; N quoteright ; B 148 470 288 698 ; C 40 ; WX 280 ; N parenleft ; B 96 -146 383 727 ; C 41 ; WX 280 ; N parenright ; B -8 -146 279 727 ; C 42 ; WX 440 ; N asterisk ; B 139 324 505 698 ; C 43 ; WX 600 ; N plus ; B 91 43 595 548 ; C 44 ; WX 300 ; N comma ; B 88 -115 227 112 ; C 45 ; WX 320 ; N hyphen ; B 78 269 336 325 ; C 46 ; WX 300 ; N period ; B 96 -8 231 127 ; C 47 ; WX 600 ; N slash ; B 104 -149 562 717 ; C 48 ; WX 620 ; N zero ; B 86 -17 646 698 ; C 49 ; WX 620 ; N one ; B 154 0 500 681 ; C 50 ; WX 620 ; N two ; B 66 0 636 698 ; C 51 ; WX 620 ; N three ; B 55 -17 622 698 ; C 52 ; WX 620 ; N four ; B 69 0 634 681 ; C 53 ; WX 620 ; N five ; B 70 -17 614 681 ; C 54 ; WX 620 ; N six ; B 89 -17 657 698 ; C 55 ; WX 620 ; N seven ; B 143 0 672 681 ; C 56 ; WX 620 ; N eight ; B 61 -17 655 698 ; C 57 ; WX 620 ; N nine ; B 77 -17 649 698 ; C 58 ; WX 300 ; N colon ; B 96 -8 292 494 ; C 59 ; WX 300 ; N semicolon ; B 88 -114 292 494 ; C 60 ; WX 600 ; N less ; B 79 33 588 561 ; C 61 ; WX 600 ; N equal ; B 91 161 595 433 ; C 62 ; WX 600 ; N greater ; B 93 33 602 561 ; C 63 ; WX 540 ; N question ; B 114 -8 604 698 ; C 64 ; WX 780 ; N at ; B 102 -17 802 698 ; C 65 ; WX 700 ; N A ; B -25 0 720 681 ; C 66 ; WX 720 ; N B ; B 21 0 746 681 ; C 67 ; WX 720 ; N C ; B 88 -17 746 698 ; C 68 ; WX 740 ; N D ; B 21 0 782 681 ; C 69 ; WX 680 ; N E ; B 21 0 736 681 ; C 70 ; WX 620 ; N F ; B 21 0 743 681 ; C 71 ; WX 760 ; N G ; B 88 -17 813 698 ; C 72 ; WX 800 ; N H ; B 21 0 888 681 ; C 73 ; WX 320 ; N I ; B 21 0 412 681 ; C 74 ; WX 560 ; N J ; B -2 -17 666 681 ; C 75 ; WX 720 ; N K ; B 21 0 804 681 ; C 76 ; WX 580 ; N L ; B 21 0 656 681 ; C 77 ; WX 860 ; N M ; B 18 0 956 681 ; C 78 ; WX 720 ; N N ; B 18 0 823 681 ; C 79 ; WX 760 ; N O ; B 88 -17 799 698 ; C 80 ; WX 600 ; N P ; B 21 0 681 681 ; C 81 ; WX 780 ; N Q ; B 61 -191 812 698 ; C 82 ; WX 700 ; N R ; B 21 0 736 681 ; C 83 ; WX 640 ; N S ; B 61 -17 668 698 ; C 84 ; WX 600 ; N T ; B 50 0 725 681 ; C 85 ; WX 720 ; N U ; B 118 -17 842 681 ; C 86 ; WX 680 ; N V ; B 87 0 815 681 ; C 87 ; WX 960 ; N W ; B 87 0 1095 681 ; C 88 ; WX 700 ; N X ; B -25 0 815 681 ; C 89 ; WX 660 ; N Y ; B 87 0 809 681 ; C 90 ; WX 580 ; N Z ; B 8 0 695 681 ; C 91 ; WX 260 ; N bracketleft ; B 56 -136 351 717 ; C 92 ; WX 600 ; N backslash ; B 84 0 542 717 ; C 93 ; WX 260 ; N bracketright ; B 15 -136 309 717 ; C 94 ; WX 600 ; N asciicircum ; B 97 276 599 681 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 280 ; N quoteleft ; B 191 470 330 698 ; C 97 ; WX 620 ; N a ; B 71 -8 686 494 ; C 98 ; WX 600 ; N b ; B 88 -8 621 717 ; C 99 ; WX 480 ; N c ; B 65 -8 522 494 ; C 100 ; WX 640 ; N d ; B 65 -8 695 717 ; C 101 ; WX 540 ; N e ; B 65 -8 575 494 ; C 102 ; WX 340 ; N f ; B -160 -218 557 725 ; L i fi ; L l fl ; C 103 ; WX 560 ; N g ; B 4 -221 581 494 ; C 104 ; WX 620 ; N h ; B 88 -8 689 717 ; C 105 ; WX 280 ; N i ; B 88 -8 351 663 ; C 106 ; WX 280 ; N j ; B -200 -221 308 663 ; C 107 ; WX 600 ; N k ; B 88 -8 657 717 ; C 108 ; WX 280 ; N l ; B 100 -8 342 717 ; C 109 ; WX 880 ; N m ; B 88 -8 952 494 ; C 110 ; WX 620 ; N n ; B 88 -8 673 494 ; C 111 ; WX 540 ; N o ; B 65 -8 572 494 ; C 112 ; WX 600 ; N p ; B -24 -212 621 494 ; C 113 ; WX 560 ; N q ; B 65 -212 584 494 ; C 114 ; WX 400 ; N r ; B 88 0 481 494 ; C 115 ; WX 540 ; N s ; B 65 -8 547 494 ; C 116 ; WX 340 ; N t ; B 88 -8 411 664 ; C 117 ; WX 620 ; N u ; B 88 -8 686 484 ; C 118 ; WX 540 ; N v ; B 88 -8 562 494 ; C 119 ; WX 880 ; N w ; B 88 -8 893 494 ; C 120 ; WX 540 ; N x ; B 9 -8 626 494 ; C 121 ; WX 600 ; N y ; B 60 -221 609 484 ; C 122 ; WX 520 ; N z ; B 38 -8 561 494 ; C 123 ; WX 360 ; N braceleft ; B 122 -191 442 718 ; C 124 ; WX 600 ; N bar ; B 294 -250 372 750 ; C 125 ; WX 380 ; N braceright ; B 13 -192 333 717 ; C 126 ; WX 600 ; N asciitilde ; B 91 207 595 386 ; C 160 ; WX 300 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 320 ; N exclamdown ; B 73 -213 301 494 ; C 162 ; WX 620 ; N cent ; B 148 -29 596 715 ; C 163 ; WX 620 ; N sterling ; B 4 -17 702 698 ; C 164 ; WX 20 ; N fraction ; B -228 0 323 681 ; C 165 ; WX 620 ; N yen ; B 71 0 735 681 ; C 166 ; WX 620 ; N florin ; B -26 -218 692 725 ; C 167 ; WX 620 ; N section ; B 38 -178 638 698 ; C 168 ; WX 620 ; N currency ; B 100 89 605 591 ; C 169 ; WX 200 ; N quotesingle ; B 99 473 247 698 ; C 170 ; WX 440 ; N quotedblleft ; B 191 470 493 698 ; C 171 ; WX 300 ; N guillemotleft ; B 70 129 313 434 ; C 172 ; WX 180 ; N guilsinglleft ; B 75 129 208 434 ; C 173 ; WX 180 ; N guilsinglright ; B 70 129 203 434 ; C 174 ; WX 640 ; N fi ; B -159 -222 709 725 ; C 175 ; WX 660 ; N fl ; B -159 -218 713 725 ; C 177 ; WX 500 ; N endash ; B 33 269 561 325 ; C 178 ; WX 620 ; N dagger ; B 192 -130 570 698 ; C 179 ; WX 620 ; N daggerdbl ; B 144 -122 566 698 ; C 180 ; WX 300 ; N periodcentered ; B 137 229 272 364 ; C 182 ; WX 620 ; N paragraph ; B 112 0 718 681 ; C 183 ; WX 460 ; N bullet ; B 100 170 444 511 ; C 184 ; WX 320 ; N quotesinglbase ; B 87 -114 226 113 ; C 185 ; WX 480 ; N quotedblbase ; B 87 -114 390 113 ; C 186 ; WX 440 ; N quotedblright ; B 148 470 451 698 ; C 187 ; WX 300 ; N guillemotright ; B 60 129 303 434 ; C 188 ; WX 1000 ; N ellipsis ; B 99 -8 900 127 ; C 189 ; WX 1180 ; N perthousand ; B 56 -8 1199 691 ; C 191 ; WX 540 ; N questiondown ; B 18 -212 508 494 ; C 193 ; WX 340 ; N grave ; B 182 551 377 706 ; C 194 ; WX 320 ; N acute ; B 208 551 403 706 ; C 195 ; WX 440 ; N circumflex ; B 176 571 479 685 ; C 196 ; WX 440 ; N tilde ; B 180 586 488 671 ; C 197 ; WX 440 ; N macron ; B 178 599 484 658 ; C 198 ; WX 440 ; N breve ; B 191 577 500 680 ; C 199 ; WX 260 ; N dotaccent ; B 189 572 310 693 ; C 200 ; WX 420 ; N dieresis ; B 185 542 467 661 ; C 202 ; WX 300 ; N ring ; B 178 551 334 706 ; C 203 ; WX 320 ; N cedilla ; B 45 -178 240 0 ; C 205 ; WX 340 ; N hungarumlaut ; B 188 547 520 694 ; C 206 ; WX 260 ; N ogonek ; B 71 -153 282 0 ; C 207 ; WX 440 ; N caron ; B 218 571 521 684 ; C 208 ; WX 1000 ; N emdash ; B 33 269 1061 325 ; C 225 ; WX 1220 ; N AE ; B -45 0 1269 681 ; C 227 ; WX 440 ; N ordfeminine ; B 130 396 513 698 ; C 232 ; WX 580 ; N Lslash ; B 21 0 656 681 ; C 233 ; WX 760 ; N Oslash ; B 88 -95 799 777 ; C 234 ; WX 1180 ; N OE ; B 88 -17 1237 698 ; C 235 ; WX 400 ; N ordmasculine ; B 139 396 455 698 ; C 241 ; WX 880 ; N ae ; B 71 -8 918 494 ; C 245 ; WX 280 ; N dotlessi ; B 88 -8 351 484 ; C 248 ; WX 340 ; N lslash ; B 33 -8 373 717 ; C 249 ; WX 540 ; N oslash ; B 65 -49 571 532 ; C 250 ; WX 900 ; N oe ; B 65 -8 948 494 ; C 251 ; WX 620 ; N germandbls ; B -121 -111 653 698 ; C -1 ; WX 320 ; N Idieresis ; B 21 0 447 865 ; C -1 ; WX 540 ; N eacute ; B 65 -8 575 706 ; C -1 ; WX 620 ; N abreve ; B 71 -8 686 680 ; C -1 ; WX 620 ; N uhungarumlaut ; B 88 -8 686 694 ; C -1 ; WX 540 ; N ecaron ; B 65 -8 575 684 ; C -1 ; WX 660 ; N Ydieresis ; B 87 0 809 865 ; C -1 ; WX 600 ; N divide ; B 91 46 595 548 ; C -1 ; WX 660 ; N Yacute ; B 87 0 809 883 ; C -1 ; WX 700 ; N Acircumflex ; B -25 0 720 862 ; C -1 ; WX 620 ; N aacute ; B 71 -8 686 706 ; C -1 ; WX 720 ; N Ucircumflex ; B 118 -17 842 862 ; C -1 ; WX 600 ; N yacute ; B 60 -221 609 706 ; C -1 ; WX 540 ; N scommaaccent ; B 65 -250 547 494 ; C -1 ; WX 540 ; N ecircumflex ; B 65 -8 575 685 ; C -1 ; WX 720 ; N Uring ; B 118 -17 842 883 ; C -1 ; WX 720 ; N Udieresis ; B 118 -17 842 865 ; C -1 ; WX 620 ; N aogonek ; B 71 -153 686 494 ; C -1 ; WX 720 ; N Uacute ; B 118 -17 842 883 ; C -1 ; WX 620 ; N uogonek ; B 88 -153 686 484 ; C -1 ; WX 680 ; N Edieresis ; B 21 0 736 865 ; C -1 ; WX 740 ; N Dcroat ; B 21 0 782 681 ; C -1 ; WX 250 ; N commaaccent ; B 92 -250 217 -50 ; C -1 ; WX 740 ; N copyright ; B 84 -17 784 698 ; C -1 ; WX 680 ; N Emacron ; B 21 0 736 835 ; C -1 ; WX 480 ; N ccaron ; B 65 -8 561 684 ; C -1 ; WX 620 ; N aring ; B 71 -8 686 706 ; C -1 ; WX 720 ; N Ncommaaccent ; B 18 -250 823 681 ; C -1 ; WX 280 ; N lacute ; B 100 -8 383 883 ; C -1 ; WX 620 ; N agrave ; B 71 -8 686 706 ; C -1 ; WX 600 ; N Tcommaaccent ; B 50 -250 725 681 ; C -1 ; WX 720 ; N Cacute ; B 88 -17 746 883 ; C -1 ; WX 620 ; N atilde ; B 71 -8 686 671 ; C -1 ; WX 680 ; N Edotaccent ; B 21 0 736 883 ; C -1 ; WX 540 ; N scaron ; B 65 -8 551 684 ; C -1 ; WX 540 ; N scedilla ; B 65 -178 547 494 ; C -1 ; WX 280 ; N iacute ; B 88 -8 363 706 ; C -1 ; WX 471 ; N lozenge ; B 10 0 462 728 ; C -1 ; WX 700 ; N Rcaron ; B 21 0 736 861 ; C -1 ; WX 760 ; N Gcommaaccent ; B 88 -250 813 698 ; C -1 ; WX 620 ; N ucircumflex ; B 88 -8 686 685 ; C -1 ; WX 620 ; N acircumflex ; B 71 -8 686 685 ; C -1 ; WX 700 ; N Amacron ; B -25 0 720 835 ; C -1 ; WX 400 ; N rcaron ; B 88 0 481 684 ; C -1 ; WX 480 ; N ccedilla ; B 65 -178 522 494 ; C -1 ; WX 580 ; N Zdotaccent ; B 8 0 695 883 ; C -1 ; WX 600 ; N Thorn ; B 21 0 656 681 ; C -1 ; WX 760 ; N Omacron ; B 88 -17 799 835 ; C -1 ; WX 700 ; N Racute ; B 21 0 736 883 ; C -1 ; WX 640 ; N Sacute ; B 61 -17 668 883 ; C -1 ; WX 710 ; N dcaron ; B 65 -8 806 723 ; C -1 ; WX 720 ; N Umacron ; B 118 -17 842 835 ; C -1 ; WX 620 ; N uring ; B 88 -8 686 706 ; C -1 ; WX 372 ; N threesuperior ; B 70 269 439 698 ; C -1 ; WX 760 ; N Ograve ; B 88 -17 799 883 ; C -1 ; WX 700 ; N Agrave ; B -25 0 720 883 ; C -1 ; WX 700 ; N Abreve ; B -25 0 720 857 ; C -1 ; WX 600 ; N multiply ; B 91 44 595 548 ; C -1 ; WX 620 ; N uacute ; B 88 -8 686 706 ; C -1 ; WX 600 ; N Tcaron ; B 50 0 725 861 ; C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ; C -1 ; WX 600 ; N ydieresis ; B 60 -221 609 688 ; C -1 ; WX 720 ; N Nacute ; B 18 0 823 883 ; C -1 ; WX 280 ; N icircumflex ; B 76 -8 379 685 ; C -1 ; WX 680 ; N Ecircumflex ; B 21 0 736 862 ; C -1 ; WX 620 ; N adieresis ; B 71 -8 686 688 ; C -1 ; WX 540 ; N edieresis ; B 65 -8 575 688 ; C -1 ; WX 480 ; N cacute ; B 65 -8 522 706 ; C -1 ; WX 620 ; N nacute ; B 88 -8 673 706 ; C -1 ; WX 620 ; N umacron ; B 88 -8 686 658 ; C -1 ; WX 720 ; N Ncaron ; B 18 0 823 861 ; C -1 ; WX 320 ; N Iacute ; B 21 0 433 883 ; C -1 ; WX 600 ; N plusminus ; B 91 0 595 548 ; C -1 ; WX 600 ; N brokenbar ; B 294 -175 372 675 ; C -1 ; WX 740 ; N registered ; B 84 -17 784 698 ; C -1 ; WX 760 ; N Gbreve ; B 88 -17 813 857 ; C -1 ; WX 320 ; N Idotaccent ; B 21 0 412 883 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 680 ; N Egrave ; B 21 0 736 883 ; C -1 ; WX 400 ; N racute ; B 88 0 481 706 ; C -1 ; WX 540 ; N omacron ; B 65 -8 572 658 ; C -1 ; WX 580 ; N Zacute ; B 8 0 695 883 ; C -1 ; WX 580 ; N Zcaron ; B 8 0 695 861 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 666 ; C -1 ; WX 740 ; N Eth ; B 21 0 782 681 ; C -1 ; WX 720 ; N Ccedilla ; B 88 -178 746 698 ; C -1 ; WX 280 ; N lcommaaccent ; B 100 -250 342 717 ; C -1 ; WX 370 ; N tcaron ; B 88 -8 476 737 ; C -1 ; WX 540 ; N eogonek ; B 65 -160 575 494 ; C -1 ; WX 720 ; N Uogonek ; B 118 -168 842 681 ; C -1 ; WX 700 ; N Aacute ; B -25 0 720 883 ; C -1 ; WX 700 ; N Adieresis ; B -25 0 720 865 ; C -1 ; WX 540 ; N egrave ; B 65 -8 575 706 ; C -1 ; WX 520 ; N zacute ; B 38 -8 561 706 ; C -1 ; WX 280 ; N iogonek ; B 88 -157 351 663 ; C -1 ; WX 760 ; N Oacute ; B 88 -17 799 883 ; C -1 ; WX 540 ; N oacute ; B 65 -8 572 706 ; C -1 ; WX 620 ; N amacron ; B 71 -8 686 658 ; C -1 ; WX 540 ; N sacute ; B 65 -8 547 706 ; C -1 ; WX 280 ; N idieresis ; B 88 -8 377 688 ; C -1 ; WX 760 ; N Ocircumflex ; B 88 -17 799 862 ; C -1 ; WX 720 ; N Ugrave ; B 118 -17 842 883 ; C -1 ; WX 614 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 600 ; N thorn ; B -24 -212 621 717 ; C -1 ; WX 372 ; N twosuperior ; B 68 279 439 698 ; C -1 ; WX 760 ; N Odieresis ; B 88 -17 799 865 ; C -1 ; WX 620 ; N mu ; B 53 -221 686 484 ; C -1 ; WX 280 ; N igrave ; B 88 -8 351 706 ; C -1 ; WX 540 ; N ohungarumlaut ; B 65 -8 590 694 ; C -1 ; WX 680 ; N Eogonek ; B 21 -153 736 681 ; C -1 ; WX 640 ; N dcroat ; B 65 -8 725 717 ; C -1 ; WX 930 ; N threequarters ; B 99 0 913 691 ; C -1 ; WX 640 ; N Scedilla ; B 61 -178 668 698 ; C -1 ; WX 350 ; N lcaron ; B 100 -8 446 722 ; C -1 ; WX 720 ; N Kcommaaccent ; B 21 -250 804 681 ; C -1 ; WX 580 ; N Lacute ; B 21 0 656 883 ; C -1 ; WX 980 ; N trademark ; B 69 277 965 681 ; C -1 ; WX 540 ; N edotaccent ; B 65 -8 575 720 ; C -1 ; WX 320 ; N Igrave ; B 21 0 412 883 ; C -1 ; WX 320 ; N Imacron ; B 21 0 454 835 ; C -1 ; WX 580 ; N Lcaron ; B 21 0 656 698 ; C -1 ; WX 930 ; N onehalf ; B 91 0 925 681 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 666 ; C -1 ; WX 540 ; N ocircumflex ; B 65 -8 572 685 ; C -1 ; WX 620 ; N ntilde ; B 88 -8 673 671 ; C -1 ; WX 720 ; N Uhungarumlaut ; B 118 -17 842 871 ; C -1 ; WX 680 ; N Eacute ; B 21 0 736 883 ; C -1 ; WX 540 ; N emacron ; B 65 -8 594 658 ; C -1 ; WX 560 ; N gbreve ; B 4 -221 581 680 ; C -1 ; WX 930 ; N onequarter ; B 91 0 913 681 ; C -1 ; WX 640 ; N Scaron ; B 61 -17 668 861 ; C -1 ; WX 640 ; N Scommaaccent ; B 61 -250 668 698 ; C -1 ; WX 760 ; N Ohungarumlaut ; B 88 -17 799 871 ; C -1 ; WX 400 ; N degree ; B 120 398 420 698 ; C -1 ; WX 540 ; N ograve ; B 65 -8 572 706 ; C -1 ; WX 720 ; N Ccaron ; B 88 -17 746 861 ; C -1 ; WX 620 ; N ugrave ; B 88 -8 686 706 ; C -1 ; WX 453 ; N radical ; B -4 -80 458 762 ; C -1 ; WX 740 ; N Dcaron ; B 21 0 782 861 ; C -1 ; WX 400 ; N rcommaaccent ; B 67 -250 481 494 ; C -1 ; WX 720 ; N Ntilde ; B 18 0 823 848 ; C -1 ; WX 540 ; N otilde ; B 65 -8 572 671 ; C -1 ; WX 700 ; N Rcommaaccent ; B 21 -250 736 681 ; C -1 ; WX 580 ; N Lcommaaccent ; B 21 -250 656 681 ; C -1 ; WX 700 ; N Atilde ; B -25 0 720 848 ; C -1 ; WX 700 ; N Aogonek ; B -25 -153 748 681 ; C -1 ; WX 700 ; N Aring ; B -25 0 720 883 ; C -1 ; WX 760 ; N Otilde ; B 88 -17 799 848 ; C -1 ; WX 520 ; N zdotaccent ; B 38 -8 561 720 ; C -1 ; WX 680 ; N Ecaron ; B 21 0 736 861 ; C -1 ; WX 320 ; N Iogonek ; B 21 -153 412 681 ; C -1 ; WX 600 ; N kcommaaccent ; B 88 -250 657 717 ; C -1 ; WX 600 ; N minus ; B 91 259 595 335 ; C -1 ; WX 320 ; N Icircumflex ; B 21 0 449 862 ; C -1 ; WX 620 ; N ncaron ; B 88 -8 673 684 ; C -1 ; WX 340 ; N tcommaaccent ; B 88 -250 411 664 ; C -1 ; WX 600 ; N logicalnot ; B 91 163 595 433 ; C -1 ; WX 540 ; N odieresis ; B 65 -8 572 688 ; C -1 ; WX 620 ; N udieresis ; B 88 -8 686 688 ; C -1 ; WX 549 ; N notequal ; B 12 -31 537 547 ; C -1 ; WX 560 ; N gcommaaccent ; B 4 -221 581 782 ; C -1 ; WX 540 ; N eth ; B 65 -8 642 725 ; C -1 ; WX 520 ; N zcaron ; B 38 -8 561 684 ; C -1 ; WX 620 ; N ncommaaccent ; B 88 -250 673 494 ; C -1 ; WX 372 ; N onesuperior ; B 114 279 339 688 ; C -1 ; WX 280 ; N imacron ; B 88 -8 404 658 ; C -1 ; WX 620 ; N Euro ; B 61 -13 685 694 ; C -1 ; WX 720 ; N Ccircumflex ; B 88 -13 746 906 ; C -1 ; WX 480 ; N ccircumflex ; B 65 -9 522 724 ; C -1 ; WX 720 ; N Cdotaccent ; B 88 -13 746 902 ; C -1 ; WX 480 ; N cdotaccent ; B 65 -9 522 720 ; C -1 ; WX 680 ; N Ebreve ; B 21 0 736 889 ; C -1 ; WX 540 ; N ebreve ; B 65 -9 575 707 ; C -1 ; WX 760 ; N Gcircumflex ; B 88 -13 813 906 ; C -1 ; WX 560 ; N gcircumflex ; B 4 -221 581 724 ; C -1 ; WX 760 ; N Gdotaccent ; B 88 -13 813 902 ; C -1 ; WX 560 ; N gdotaccent ; B 4 -221 581 720 ; C -1 ; WX 800 ; N Hcircumflex ; B 21 0 888 906 ; C -1 ; WX 620 ; N hcircumflex ; B 88 -9 689 940 ; C -1 ; WX 800 ; N Hbar ; B 21 0 888 681 ; C -1 ; WX 620 ; N hbar ; B 88 -9 689 715 ; C -1 ; WX 320 ; N Itilde ; B 21 0 459 864 ; C -1 ; WX 280 ; N itilde ; B 88 -9 445 682 ; C -1 ; WX 320 ; N Ibreve ; B 21 0 469 889 ; C -1 ; WX 280 ; N ibreve ; B 88 -9 455 707 ; C -1 ; WX 876 ; N IJ ; B 21 -13 966 681 ; C -1 ; WX 544 ; N ij ; B 88 -221 608 666 ; C -1 ; WX 560 ; N Jcircumflex ; B -2 -13 666 906 ; C -1 ; WX 280 ; N jcircumflex ; B -200 -221 379 729 ; C -1 ; WX 587 ; N kgreenlandic ; B 75 -9 644 495 ; C -1 ; WX 580 ; N Ldot ; B 21 0 656 681 ; C -1 ; WX 450 ; N ldot ; B 100 -9 426 715 ; C -1 ; WX 620 ; N napostrophe ; B 88 -9 673 728 ; C -1 ; WX 760 ; N Obreve ; B 88 -13 799 889 ; C -1 ; WX 540 ; N obreve ; B 65 -9 572 707 ; C -1 ; WX 640 ; N Scircumflex ; B 61 -13 668 906 ; C -1 ; WX 540 ; N scircumflex ; B 65 -9 547 724 ; C -1 ; WX 600 ; N Tbar ; B 50 0 725 681 ; C -1 ; WX 340 ; N tbar ; B 68 -9 411 665 ; C -1 ; WX 600 ; N Tcedilla ; B 50 -250 725 681 ; C -1 ; WX 340 ; N tcedilla ; B 88 -250 411 664 ; C -1 ; WX 720 ; N Utilde ; B 118 -13 842 864 ; C -1 ; WX 620 ; N utilde ; B 88 -9 686 682 ; C -1 ; WX 720 ; N Ubreve ; B 118 -13 842 889 ; C -1 ; WX 620 ; N ubreve ; B 88 -9 686 707 ; C -1 ; WX 960 ; N Wcircumflex ; B 87 0 1095 906 ; C -1 ; WX 880 ; N wcircumflex ; B 88 -9 893 724 ; C -1 ; WX 660 ; N Ycircumflex ; B 87 0 809 906 ; C -1 ; WX 600 ; N ycircumflex ; B 60 -221 609 724 ; C -1 ; WX 340 ; N longs ; B -160 -206 557 728 ; C -1 ; WX 688 ; N infinity ; B 9 64 673 520 ; EndCharMetrics StartKernData StartKernPairs 828 KPX A T -5 KPX A Tcaron -5 KPX A Tcommaaccent -5 KPX A V -78 KPX A W -73 KPX A Y -62 KPX A Yacute -62 KPX A Ydieresis -62 KPX Aacute T -5 KPX Aacute Tcaron -5 KPX Aacute Tcommaaccent -5 KPX Aacute V -78 KPX Aacute W -73 KPX Aacute Y -62 KPX Aacute Yacute -62 KPX Aacute Ydieresis -62 KPX Abreve T -5 KPX Abreve Tcaron -5 KPX Abreve Tcommaaccent -5 KPX Abreve V -78 KPX Abreve W -73 KPX Abreve Y -62 KPX Abreve Yacute -62 KPX Abreve Ydieresis -62 KPX Acircumflex T -5 KPX Acircumflex Tcaron -5 KPX Acircumflex Tcommaaccent -5 KPX Acircumflex V -78 KPX Acircumflex W -73 KPX Acircumflex Y -62 KPX Acircumflex Yacute -62 KPX Acircumflex Ydieresis -62 KPX Adieresis T -5 KPX Adieresis Tcaron -5 KPX Adieresis Tcommaaccent -5 KPX Adieresis V -78 KPX Adieresis W -73 KPX Adieresis Y -62 KPX Adieresis Yacute -62 KPX Adieresis Ydieresis -62 KPX Agrave T -5 KPX Agrave Tcaron -5 KPX Agrave Tcommaaccent -5 KPX Agrave V -78 KPX Agrave W -73 KPX Agrave Y -62 KPX Agrave Yacute -62 KPX Agrave Ydieresis -62 KPX Amacron T -5 KPX Amacron Tcaron -5 KPX Amacron Tcommaaccent -5 KPX Amacron V -78 KPX Amacron W -73 KPX Amacron Y -62 KPX Amacron Yacute -62 KPX Amacron Ydieresis -62 KPX Aogonek T -5 KPX Aogonek Tcaron -5 KPX Aogonek Tcommaaccent -5 KPX Aogonek V -78 KPX Aogonek W -73 KPX Aogonek Y -62 KPX Aogonek Yacute -62 KPX Aogonek Ydieresis -62 KPX Aring T -5 KPX Aring Tcaron -5 KPX Aring Tcommaaccent -5 KPX Aring V -78 KPX Aring W -73 KPX Aring Y -62 KPX Aring Yacute -62 KPX Aring Ydieresis -62 KPX Atilde T -5 KPX Atilde Tcaron -5 KPX Atilde Tcommaaccent -5 KPX Atilde V -78 KPX Atilde W -73 KPX Atilde Y -62 KPX Atilde Yacute -62 KPX Atilde Ydieresis -62 KPX F A -16 KPX F Aacute -16 KPX F Abreve -16 KPX F Acircumflex -16 KPX F Adieresis -16 KPX F Agrave -16 KPX F Amacron -16 KPX F Aogonek -16 KPX F Aring -16 KPX F Atilde -16 KPX F comma -98 KPX F period -97 KPX L V 4 KPX L W 9 KPX L Y 7 KPX L Yacute 7 KPX L Ydieresis 7 KPX L y 20 KPX L yacute 20 KPX L ydieresis 20 KPX Lacute V 4 KPX Lacute W 9 KPX Lacute Y 7 KPX Lacute Yacute 7 KPX Lacute Ydieresis 7 KPX Lacute y 20 KPX Lacute yacute 20 KPX Lacute ydieresis 20 KPX Lcaron V 4 KPX Lcaron W 9 KPX Lcaron Y 7 KPX Lcaron Yacute 7 KPX Lcaron Ydieresis 7 KPX Lcaron y 20 KPX Lcaron yacute 20 KPX Lcaron ydieresis 20 KPX Lcommaaccent V 4 KPX Lcommaaccent W 9 KPX Lcommaaccent Y 7 KPX Lcommaaccent Yacute 7 KPX Lcommaaccent Ydieresis 7 KPX Lcommaaccent y 20 KPX Lcommaaccent yacute 20 KPX Lcommaaccent ydieresis 20 KPX Lslash V 4 KPX Lslash W 9 KPX Lslash Y 7 KPX Lslash Yacute 7 KPX Lslash Ydieresis 7 KPX Lslash y 20 KPX Lslash yacute 20 KPX Lslash ydieresis 20 KPX P A -30 KPX P Aacute -30 KPX P Abreve -30 KPX P Acircumflex -30 KPX P Adieresis -30 KPX P Agrave -30 KPX P Amacron -30 KPX P Aogonek -30 KPX P Aring -30 KPX P Atilde -30 KPX P comma -106 KPX P period -105 KPX R T 65 KPX R Tcaron 65 KPX R Tcommaaccent 65 KPX R V 2 KPX R W 2 KPX R Y 11 KPX R Yacute 11 KPX R Ydieresis 11 KPX Racute T 65 KPX Racute Tcaron 65 KPX Racute Tcommaaccent 65 KPX Racute V 2 KPX Racute W 2 KPX Racute Y 11 KPX Racute Yacute 11 KPX Racute Ydieresis 11 KPX Rcaron T 65 KPX Rcaron Tcaron 65 KPX Rcaron Tcommaaccent 65 KPX Rcaron V 2 KPX Rcaron W 2 KPX Rcaron Y 11 KPX Rcaron Yacute 11 KPX Rcaron Ydieresis 11 KPX Rcommaaccent T 65 KPX Rcommaaccent Tcaron 65 KPX Rcommaaccent Tcommaaccent 65 KPX Rcommaaccent V 2 KPX Rcommaaccent W 2 KPX Rcommaaccent Y 11 KPX Rcommaaccent Yacute 11 KPX Rcommaaccent Ydieresis 11 KPX T A -14 KPX T Aacute -14 KPX T Abreve -14 KPX T Acircumflex -14 KPX T Adieresis -14 KPX T Agrave -14 KPX T Amacron -14 KPX T Aogonek -14 KPX T Aring -14 KPX T Atilde -14 KPX T a 9 KPX T aacute 9 KPX T abreve 9 KPX T acircumflex 9 KPX T adieresis 9 KPX T agrave 9 KPX T amacron 9 KPX T aogonek 9 KPX T aring 9 KPX T atilde 9 KPX T c 16 KPX T cacute 16 KPX T ccaron 16 KPX T ccedilla 16 KPX T colon 48 KPX T comma -79 KPX T e 10 KPX T eacute 10 KPX T ecaron 10 KPX T ecircumflex 10 KPX T edieresis 10 KPX T edotaccent 10 KPX T egrave 10 KPX T emacron 10 KPX T eogonek 10 KPX T hyphen 20 KPX T i 71 KPX T iacute 71 KPX T icircumflex 71 KPX T idieresis 71 KPX T igrave 71 KPX T imacron 71 KPX T iogonek 71 KPX T o 14 KPX T oacute 14 KPX T ocircumflex 14 KPX T odieresis 14 KPX T ograve 14 KPX T ohungarumlaut 14 KPX T omacron 14 KPX T oslash 14 KPX T otilde 14 KPX T period -78 KPX T r 67 KPX T racute 67 KPX T rcaron 67 KPX T rcommaaccent 67 KPX T s -7 KPX T sacute -7 KPX T scaron -7 KPX T scedilla -7 KPX T scommaaccent -7 KPX T semicolon 48 KPX Tcaron A -14 KPX Tcaron Aacute -14 KPX Tcaron Abreve -14 KPX Tcaron Acircumflex -14 KPX Tcaron Adieresis -14 KPX Tcaron Agrave -14 KPX Tcaron Amacron -14 KPX Tcaron Aogonek -14 KPX Tcaron Aring -14 KPX Tcaron Atilde -14 KPX Tcaron a 9 KPX Tcaron aacute 9 KPX Tcaron abreve 9 KPX Tcaron acircumflex 9 KPX Tcaron adieresis 9 KPX Tcaron agrave 9 KPX Tcaron amacron 9 KPX Tcaron aogonek 9 KPX Tcaron aring 9 KPX Tcaron atilde 9 KPX Tcaron c 16 KPX Tcaron cacute 16 KPX Tcaron ccaron 16 KPX Tcaron ccedilla 16 KPX Tcaron colon 48 KPX Tcaron comma -79 KPX Tcaron e 10 KPX Tcaron eacute 10 KPX Tcaron ecaron 10 KPX Tcaron ecircumflex 10 KPX Tcaron edieresis 10 KPX Tcaron edotaccent 10 KPX Tcaron egrave 10 KPX Tcaron emacron 10 KPX Tcaron eogonek 10 KPX Tcaron hyphen 20 KPX Tcaron i 71 KPX Tcaron iacute 71 KPX Tcaron icircumflex 71 KPX Tcaron idieresis 71 KPX Tcaron igrave 71 KPX Tcaron imacron 71 KPX Tcaron iogonek 71 KPX Tcaron o 14 KPX Tcaron oacute 14 KPX Tcaron ocircumflex 14 KPX Tcaron odieresis 14 KPX Tcaron ograve 14 KPX Tcaron ohungarumlaut 14 KPX Tcaron omacron 14 KPX Tcaron oslash 14 KPX Tcaron otilde 14 KPX Tcaron period -78 KPX Tcaron r 67 KPX Tcaron racute 67 KPX Tcaron rcaron 67 KPX Tcaron rcommaaccent 67 KPX Tcaron s -7 KPX Tcaron sacute -7 KPX Tcaron scaron -7 KPX Tcaron scedilla -7 KPX Tcaron scommaaccent -7 KPX Tcaron semicolon 48 KPX Tcommaaccent A -14 KPX Tcommaaccent Aacute -14 KPX Tcommaaccent Abreve -14 KPX Tcommaaccent Acircumflex -14 KPX Tcommaaccent Adieresis -14 KPX Tcommaaccent Agrave -14 KPX Tcommaaccent Amacron -14 KPX Tcommaaccent Aogonek -14 KPX Tcommaaccent Aring -14 KPX Tcommaaccent Atilde -14 KPX Tcommaaccent a 9 KPX Tcommaaccent aacute 9 KPX Tcommaaccent abreve 9 KPX Tcommaaccent acircumflex 9 KPX Tcommaaccent adieresis 9 KPX Tcommaaccent agrave 9 KPX Tcommaaccent amacron 9 KPX Tcommaaccent aogonek 9 KPX Tcommaaccent aring 9 KPX Tcommaaccent atilde 9 KPX Tcommaaccent c 16 KPX Tcommaaccent cacute 16 KPX Tcommaaccent ccaron 16 KPX Tcommaaccent ccedilla 16 KPX Tcommaaccent colon 48 KPX Tcommaaccent comma -79 KPX Tcommaaccent e 10 KPX Tcommaaccent eacute 10 KPX Tcommaaccent ecaron 10 KPX Tcommaaccent ecircumflex 10 KPX Tcommaaccent edieresis 10 KPX Tcommaaccent edotaccent 10 KPX Tcommaaccent egrave 10 KPX Tcommaaccent emacron 10 KPX Tcommaaccent eogonek 10 KPX Tcommaaccent hyphen 20 KPX Tcommaaccent i 71 KPX Tcommaaccent iacute 71 KPX Tcommaaccent icircumflex 71 KPX Tcommaaccent idieresis 71 KPX Tcommaaccent igrave 71 KPX Tcommaaccent imacron 71 KPX Tcommaaccent iogonek 71 KPX Tcommaaccent o 14 KPX Tcommaaccent oacute 14 KPX Tcommaaccent ocircumflex 14 KPX Tcommaaccent odieresis 14 KPX Tcommaaccent ograve 14 KPX Tcommaaccent ohungarumlaut 14 KPX Tcommaaccent omacron 14 KPX Tcommaaccent oslash 14 KPX Tcommaaccent otilde 14 KPX Tcommaaccent period -78 KPX Tcommaaccent r 67 KPX Tcommaaccent racute 67 KPX Tcommaaccent rcaron 67 KPX Tcommaaccent rcommaaccent 67 KPX Tcommaaccent s -7 KPX Tcommaaccent sacute -7 KPX Tcommaaccent scaron -7 KPX Tcommaaccent scedilla -7 KPX Tcommaaccent scommaaccent -7 KPX Tcommaaccent semicolon 48 KPX V A -70 KPX V Aacute -70 KPX V Abreve -70 KPX V Acircumflex -70 KPX V Adieresis -70 KPX V Agrave -70 KPX V Amacron -70 KPX V Aogonek -70 KPX V Aring -70 KPX V Atilde -70 KPX V a -70 KPX V aacute -70 KPX V abreve -70 KPX V acircumflex -70 KPX V adieresis -70 KPX V agrave -70 KPX V amacron -70 KPX V aogonek -70 KPX V aring -70 KPX V atilde -70 KPX V colon -35 KPX V comma -109 KPX V e -70 KPX V eacute -70 KPX V ecaron -70 KPX V ecircumflex -70 KPX V edieresis -70 KPX V edotaccent -70 KPX V egrave -70 KPX V emacron -70 KPX V eogonek -70 KPX V hyphen 20 KPX V i 3 KPX V iacute 3 KPX V icircumflex 3 KPX V idieresis 13 KPX V igrave 13 KPX V imacron 13 KPX V iogonek 3 KPX V o -70 KPX V oacute -70 KPX V ocircumflex -70 KPX V odieresis -70 KPX V ograve -70 KPX V ohungarumlaut -70 KPX V omacron -70 KPX V oslash -70 KPX V otilde -70 KPX V period -100 KPX V r -20 KPX V racute -20 KPX V rcaron -20 KPX V rcommaaccent -20 KPX V semicolon -44 KPX V u -10 KPX V uacute -10 KPX V ucircumflex -10 KPX V udieresis -10 KPX V ugrave -10 KPX V uhungarumlaut -10 KPX V umacron -10 KPX V uogonek -10 KPX V uring -10 KPX V y -14 KPX V yacute -14 KPX V ydieresis -14 KPX W A -60 KPX W Aacute -60 KPX W Abreve -60 KPX W Acircumflex -60 KPX W Adieresis -60 KPX W Agrave -60 KPX W Amacron -60 KPX W Aogonek -60 KPX W Aring -60 KPX W Atilde -60 KPX W a -60 KPX W aacute -60 KPX W abreve -60 KPX W acircumflex -60 KPX W adieresis -60 KPX W agrave -60 KPX W amacron -60 KPX W aogonek -60 KPX W aring -60 KPX W atilde -60 KPX W colon -35 KPX W comma -109 KPX W e -60 KPX W eacute -60 KPX W ecaron -60 KPX W ecircumflex -60 KPX W edieresis -60 KPX W edotaccent -60 KPX W egrave -60 KPX W emacron -60 KPX W eogonek -60 KPX W hyphen 20 KPX W i 3 KPX W iacute 3 KPX W icircumflex 13 KPX W idieresis 13 KPX W igrave 13 KPX W imacron 13 KPX W iogonek 3 KPX W o -60 KPX W oacute -60 KPX W ocircumflex -60 KPX W odieresis -60 KPX W ograve -60 KPX W ohungarumlaut -60 KPX W omacron -60 KPX W oslash -60 KPX W otilde -60 KPX W period -100 KPX W r -30 KPX W racute -30 KPX W rcaron -30 KPX W rcommaaccent -30 KPX W semicolon -42 KPX W u -20 KPX W uacute -20 KPX W ucircumflex -20 KPX W udieresis -20 KPX W ugrave -20 KPX W uhungarumlaut -20 KPX W umacron -20 KPX W uogonek -20 KPX W uring -20 KPX W y -14 KPX W yacute -14 KPX W ydieresis -14 KPX Y A -82 KPX Y Aacute -82 KPX Y Abreve -82 KPX Y Acircumflex -82 KPX Y Adieresis -82 KPX Y Agrave -82 KPX Y Amacron -82 KPX Y Aogonek -82 KPX Y Aring -82 KPX Y Atilde -82 KPX Y a -79 KPX Y aacute -79 KPX Y abreve -79 KPX Y acircumflex -79 KPX Y adieresis -79 KPX Y agrave -79 KPX Y amacron -79 KPX Y aogonek -79 KPX Y aring -79 KPX Y atilde -79 KPX Y colon -35 KPX Y comma -109 KPX Y e -78 KPX Y eacute -78 KPX Y ecaron -78 KPX Y ecircumflex -78 KPX Y edieresis -78 KPX Y edotaccent -78 KPX Y egrave -78 KPX Y emacron -78 KPX Y eogonek -78 KPX Y hyphen 20 KPX Y i -11 KPX Y iacute -11 KPX Y iogonek -11 KPX Y o -75 KPX Y oacute -75 KPX Y ocircumflex -75 KPX Y odieresis -75 KPX Y ograve -75 KPX Y ohungarumlaut -75 KPX Y omacron -75 KPX Y oslash -75 KPX Y otilde -75 KPX Y p -37 KPX Y period -100 KPX Y q -72 KPX Y semicolon -40 KPX Y u -31 KPX Y uacute -31 KPX Y ucircumflex -31 KPX Y udieresis -31 KPX Y ugrave -31 KPX Y uhungarumlaut -31 KPX Y umacron -31 KPX Y uogonek -31 KPX Y uring -31 KPX Y v -19 KPX Yacute A -82 KPX Yacute Aacute -82 KPX Yacute Abreve -82 KPX Yacute Acircumflex -82 KPX Yacute Adieresis -82 KPX Yacute Agrave -82 KPX Yacute Amacron -82 KPX Yacute Aogonek -82 KPX Yacute Aring -82 KPX Yacute Atilde -82 KPX Yacute a -79 KPX Yacute aacute -79 KPX Yacute abreve -79 KPX Yacute acircumflex -79 KPX Yacute adieresis -79 KPX Yacute agrave -79 KPX Yacute amacron -79 KPX Yacute aogonek -79 KPX Yacute aring -79 KPX Yacute atilde -79 KPX Yacute colon -35 KPX Yacute comma -109 KPX Yacute e -78 KPX Yacute eacute -78 KPX Yacute ecaron -78 KPX Yacute ecircumflex -78 KPX Yacute edieresis -78 KPX Yacute edotaccent -78 KPX Yacute egrave -78 KPX Yacute emacron -78 KPX Yacute eogonek -78 KPX Yacute hyphen 20 KPX Yacute i -11 KPX Yacute iacute -11 KPX Yacute iogonek -11 KPX Yacute o -75 KPX Yacute oacute -75 KPX Yacute ocircumflex -75 KPX Yacute odieresis -75 KPX Yacute ograve -75 KPX Yacute ohungarumlaut -75 KPX Yacute omacron -75 KPX Yacute oslash -75 KPX Yacute otilde -75 KPX Yacute p -37 KPX Yacute period -100 KPX Yacute q -72 KPX Yacute semicolon -40 KPX Yacute u -31 KPX Yacute uacute -31 KPX Yacute ucircumflex -31 KPX Yacute udieresis -31 KPX Yacute ugrave -31 KPX Yacute uhungarumlaut -31 KPX Yacute umacron -31 KPX Yacute uogonek -31 KPX Yacute uring -31 KPX Yacute v -19 KPX Ydieresis A -82 KPX Ydieresis Aacute -82 KPX Ydieresis Abreve -82 KPX Ydieresis Acircumflex -82 KPX Ydieresis Adieresis -82 KPX Ydieresis Agrave -82 KPX Ydieresis Amacron -82 KPX Ydieresis Aogonek -82 KPX Ydieresis Aring -82 KPX Ydieresis Atilde -82 KPX Ydieresis a -79 KPX Ydieresis aacute -79 KPX Ydieresis abreve -79 KPX Ydieresis acircumflex -79 KPX Ydieresis adieresis -79 KPX Ydieresis agrave -79 KPX Ydieresis amacron -79 KPX Ydieresis aogonek -79 KPX Ydieresis aring -79 KPX Ydieresis atilde -79 KPX Ydieresis colon -35 KPX Ydieresis comma -109 KPX Ydieresis e -78 KPX Ydieresis eacute -78 KPX Ydieresis ecaron -78 KPX Ydieresis ecircumflex -78 KPX Ydieresis edieresis -78 KPX Ydieresis edotaccent -78 KPX Ydieresis egrave -78 KPX Ydieresis emacron -78 KPX Ydieresis eogonek -78 KPX Ydieresis hyphen 20 KPX Ydieresis i -11 KPX Ydieresis iacute -11 KPX Ydieresis iogonek -11 KPX Ydieresis o -75 KPX Ydieresis oacute -75 KPX Ydieresis ocircumflex -75 KPX Ydieresis odieresis -75 KPX Ydieresis ograve -75 KPX Ydieresis ohungarumlaut -75 KPX Ydieresis omacron -75 KPX Ydieresis oslash -75 KPX Ydieresis otilde -75 KPX Ydieresis p -37 KPX Ydieresis period -100 KPX Ydieresis q -72 KPX Ydieresis semicolon -40 KPX Ydieresis u -31 KPX Ydieresis uacute -31 KPX Ydieresis ucircumflex -31 KPX Ydieresis udieresis -31 KPX Ydieresis ugrave -31 KPX Ydieresis uhungarumlaut -31 KPX Ydieresis umacron -31 KPX Ydieresis uogonek -31 KPX Ydieresis uring -31 KPX Ydieresis v -19 KPX f f -19 KPX r c -8 KPX r cacute -8 KPX r ccaron -8 KPX r ccedilla -8 KPX r comma -143 KPX r d -9 KPX r dcroat -9 KPX r e -15 KPX r eacute -15 KPX r ecaron -15 KPX r ecircumflex -15 KPX r edieresis -15 KPX r edotaccent -15 KPX r egrave -15 KPX r emacron -15 KPX r eogonek -15 KPX r f -9 KPX r g -3 KPX r gbreve -3 KPX r gcommaaccent -3 KPX r h -20 KPX r hyphen 20 KPX r m 37 KPX r n 38 KPX r nacute 38 KPX r ncaron 38 KPX r ncommaaccent 38 KPX r ntilde 38 KPX r o -10 KPX r oacute -10 KPX r ocircumflex -10 KPX r odieresis -10 KPX r ograve -10 KPX r ohungarumlaut -10 KPX r omacron -10 KPX r oslash -10 KPX r otilde -10 KPX r period -134 KPX r q -14 KPX racute c -8 KPX racute cacute -8 KPX racute ccaron -8 KPX racute ccedilla -8 KPX racute comma -143 KPX racute d -9 KPX racute dcroat -9 KPX racute e -15 KPX racute eacute -15 KPX racute ecaron -15 KPX racute ecircumflex -15 KPX racute edieresis -15 KPX racute edotaccent -15 KPX racute egrave -15 KPX racute emacron -15 KPX racute eogonek -15 KPX racute f -9 KPX racute g -3 KPX racute gbreve -3 KPX racute gcommaaccent -3 KPX racute h -20 KPX racute hyphen 20 KPX racute m 37 KPX racute n 38 KPX racute nacute 38 KPX racute ncaron 38 KPX racute ncommaaccent 38 KPX racute ntilde 38 KPX racute o -10 KPX racute oacute -10 KPX racute ocircumflex -10 KPX racute odieresis -10 KPX racute ograve -10 KPX racute ohungarumlaut -10 KPX racute omacron -10 KPX racute oslash -10 KPX racute otilde -10 KPX racute period -134 KPX racute q -14 KPX rcaron c -8 KPX rcaron cacute -8 KPX rcaron ccaron -8 KPX rcaron ccedilla -8 KPX rcaron comma -143 KPX rcaron d -9 KPX rcaron dcroat -9 KPX rcaron e -15 KPX rcaron eacute -15 KPX rcaron ecaron -15 KPX rcaron ecircumflex -15 KPX rcaron edieresis -15 KPX rcaron edotaccent -15 KPX rcaron egrave -15 KPX rcaron emacron -15 KPX rcaron eogonek -15 KPX rcaron f -9 KPX rcaron g -3 KPX rcaron gbreve -3 KPX rcaron gcommaaccent -3 KPX rcaron h -20 KPX rcaron hyphen 20 KPX rcaron m 37 KPX rcaron n 38 KPX rcaron nacute 38 KPX rcaron ncaron 38 KPX rcaron ncommaaccent 38 KPX rcaron ntilde 38 KPX rcaron o -10 KPX rcaron oacute -10 KPX rcaron ocircumflex -10 KPX rcaron odieresis -10 KPX rcaron ograve -10 KPX rcaron ohungarumlaut -10 KPX rcaron omacron -10 KPX rcaron oslash -10 KPX rcaron otilde -10 KPX rcaron period -134 KPX rcaron q -14 KPX rcommaaccent c -8 KPX rcommaaccent cacute -8 KPX rcommaaccent ccaron -8 KPX rcommaaccent ccedilla -8 KPX rcommaaccent comma -143 KPX rcommaaccent d -9 KPX rcommaaccent dcroat -9 KPX rcommaaccent e -15 KPX rcommaaccent eacute -15 KPX rcommaaccent ecaron -15 KPX rcommaaccent ecircumflex -15 KPX rcommaaccent edieresis -15 KPX rcommaaccent edotaccent -15 KPX rcommaaccent egrave -15 KPX rcommaaccent emacron -15 KPX rcommaaccent eogonek -15 KPX rcommaaccent f -9 KPX rcommaaccent g -3 KPX rcommaaccent gbreve -3 KPX rcommaaccent gcommaaccent -3 KPX rcommaaccent h -20 KPX rcommaaccent hyphen 20 KPX rcommaaccent m 37 KPX rcommaaccent n 38 KPX rcommaaccent nacute 38 KPX rcommaaccent ncaron 38 KPX rcommaaccent ncommaaccent 38 KPX rcommaaccent ntilde 38 KPX rcommaaccent o -10 KPX rcommaaccent oacute -10 KPX rcommaaccent ocircumflex -10 KPX rcommaaccent odieresis -10 KPX rcommaaccent ograve -10 KPX rcommaaccent ohungarumlaut -10 KPX rcommaaccent omacron -10 KPX rcommaaccent oslash -10 KPX rcommaaccent otilde -10 KPX rcommaaccent period -134 KPX rcommaaccent q -14 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/AvantGarde-Book.afm0000644000222100022210000011036014541067540016270 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 14:01:14 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43083 Comment VMusage 33801 44826 FontName AvantGarde-Book FullName ITC Avant Garde Gothic Book FamilyName ITC Avant Garde Gothic Weight Book ItalicAngle 0 IsFixedPitch false FontBBox -113 -222 1148 955 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 740 XHeight 547 Ascender 740 Descender -192 StdHW 63 StdVW 70 StartCharMetrics 361 C 32 ; WX 277 ; N space ; B 0 0 0 0 ; C 33 ; WX 295 ; N exclam ; B 111 0 185 740 ; C 34 ; WX 309 ; N quotedbl ; B 36 444 273 740 ; C 35 ; WX 554 ; N numbersign ; B 33 0 521 740 ; C 36 ; WX 554 ; N dollar ; B 70 -70 485 811 ; C 37 ; WX 775 ; N percent ; B 21 -13 753 751 ; C 38 ; WX 757 ; N ampersand ; B 56 -12 736 753 ; C 39 ; WX 351 ; N quoteright ; B 94 546 256 740 ; C 40 ; WX 369 ; N parenleft ; B 47 -205 355 757 ; C 41 ; WX 369 ; N parenright ; B 14 -205 322 757 ; C 42 ; WX 425 ; N asterisk ; B 58 446 367 740 ; C 43 ; WX 606 ; N plus ; B 51 0 555 506 ; C 44 ; WX 277 ; N comma ; B 14 -67 176 126 ; C 45 ; WX 332 ; N hyphen ; B 30 248 302 315 ; C 46 ; WX 277 ; N period ; B 102 0 176 126 ; C 47 ; WX 437 ; N slash ; B 44 -100 403 740 ; C 48 ; WX 554 ; N zero ; B 29 -13 525 753 ; C 49 ; WX 554 ; N one ; B 135 0 336 740 ; C 50 ; WX 554 ; N two ; B 40 0 514 753 ; C 51 ; WX 554 ; N three ; B 34 -13 506 753 ; C 52 ; WX 554 ; N four ; B 14 0 528 740 ; C 53 ; WX 554 ; N five ; B 26 -13 530 740 ; C 54 ; WX 554 ; N six ; B 24 -13 530 739 ; C 55 ; WX 554 ; N seven ; B 63 0 491 740 ; C 56 ; WX 554 ; N eight ; B 41 -13 513 753 ; C 57 ; WX 554 ; N nine ; B 24 0 530 752 ; C 58 ; WX 277 ; N colon ; B 102 0 176 548 ; C 59 ; WX 277 ; N semicolon ; B 14 -67 176 548 ; C 60 ; WX 606 ; N less ; B 46 -8 554 514 ; C 61 ; WX 606 ; N equal ; B 51 118 555 388 ; C 62 ; WX 606 ; N greater ; B 52 -8 560 514 ; C 63 ; WX 591 ; N question ; B 64 0 526 752 ; C 64 ; WX 867 ; N at ; B 65 -13 803 753 ; C 65 ; WX 740 ; N A ; B 12 0 729 740 ; C 66 ; WX 574 ; N B ; B 74 0 544 740 ; C 67 ; WX 813 ; N C ; B 43 -13 771 752 ; C 68 ; WX 744 ; N D ; B 74 0 699 740 ; C 69 ; WX 536 ; N E ; B 70 0 475 740 ; C 70 ; WX 485 ; N F ; B 70 0 444 740 ; C 71 ; WX 872 ; N G ; B 40 -13 828 753 ; C 72 ; WX 683 ; N H ; B 76 0 607 740 ; C 73 ; WX 226 ; N I ; B 76 0 150 740 ; C 74 ; WX 482 ; N J ; B 6 -13 402 740 ; C 75 ; WX 591 ; N K ; B 81 0 591 740 ; C 76 ; WX 462 ; N L ; B 82 0 462 740 ; C 77 ; WX 919 ; N M ; B 76 0 843 740 ; C 78 ; WX 740 ; N N ; B 75 0 664 740 ; C 79 ; WX 869 ; N O ; B 43 -13 826 753 ; C 80 ; WX 592 ; N P ; B 75 0 564 740 ; C 81 ; WX 871 ; N Q ; B 40 -13 837 753 ; C 82 ; WX 607 ; N R ; B 70 0 572 740 ; C 83 ; WX 498 ; N S ; B 22 -13 473 753 ; C 84 ; WX 426 ; N T ; B 6 0 419 740 ; C 85 ; WX 655 ; N U ; B 75 -13 579 740 ; C 86 ; WX 702 ; N V ; B 8 0 693 740 ; C 87 ; WX 960 ; N W ; B 11 0 950 740 ; C 88 ; WX 609 ; N X ; B 8 0 602 740 ; C 89 ; WX 592 ; N Y ; B 1 0 592 740 ; C 90 ; WX 480 ; N Z ; B 12 0 470 740 ; C 91 ; WX 351 ; N bracketleft ; B 133 -179 337 753 ; C 92 ; WX 605 ; N backslash ; B 118 -100 477 740 ; C 93 ; WX 351 ; N bracketright ; B 14 -179 218 753 ; C 94 ; WX 606 ; N asciicircum ; B 53 307 553 740 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 351 ; N quoteleft ; B 95 546 257 740 ; C 97 ; WX 683 ; N a ; B 42 -13 621 561 ; C 98 ; WX 682 ; N b ; B 68 -13 647 740 ; C 99 ; WX 647 ; N c ; B 41 -13 607 561 ; C 100 ; WX 685 ; N d ; B 39 -13 618 740 ; C 101 ; WX 650 ; N e ; B 38 -13 608 561 ; C 102 ; WX 314 ; N f ; B 19 0 314 753 ; L i fi ; L l fl ; C 103 ; WX 673 ; N g ; B 37 -215 606 561 ; C 104 ; WX 610 ; N h ; B 62 0 543 740 ; C 105 ; WX 200 ; N i ; B 65 0 135 740 ; C 106 ; WX 203 ; N j ; B -44 -192 137 740 ; C 107 ; WX 502 ; N k ; B 70 0 498 740 ; C 108 ; WX 200 ; N l ; B 65 0 135 740 ; C 109 ; WX 938 ; N m ; B 66 0 872 561 ; C 110 ; WX 610 ; N n ; B 65 0 546 561 ; C 111 ; WX 655 ; N o ; B 42 -13 614 561 ; C 112 ; WX 682 ; N p ; B 64 -192 643 561 ; C 113 ; WX 682 ; N q ; B 37 -192 616 561 ; C 114 ; WX 301 ; N r ; B 65 0 291 561 ; C 115 ; WX 388 ; N s ; B 24 -13 364 561 ; C 116 ; WX 339 ; N t ; B 14 0 330 740 ; C 117 ; WX 608 ; N u ; B 62 -13 541 547 ; C 118 ; WX 554 ; N v ; B 7 0 546 547 ; C 119 ; WX 831 ; N w ; B 13 0 820 547 ; C 120 ; WX 480 ; N x ; B 12 0 468 547 ; C 121 ; WX 536 ; N y ; B 15 -192 523 547 ; C 122 ; WX 425 ; N z ; B 10 0 415 547 ; C 123 ; WX 351 ; N braceleft ; B 70 -189 331 740 ; C 124 ; WX 672 ; N bar ; B 299 -222 373 778 ; C 125 ; WX 351 ; N braceright ; B 20 -189 281 740 ; C 126 ; WX 606 ; N asciitilde ; B 72 179 534 319 ; C 160 ; WX 277 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 295 ; N exclamdown ; B 110 -192 184 548 ; C 162 ; WX 554 ; N cent ; B 48 62 510 707 ; C 163 ; WX 554 ; N sterling ; B 4 0 552 753 ; C 164 ; WX 166 ; N fraction ; B -113 0 280 740 ; C 165 ; WX 554 ; N yen ; B 4 0 550 740 ; C 166 ; WX 554 ; N florin ; B -12 -153 518 818 ; C 167 ; WX 615 ; N section ; B 85 -141 529 753 ; C 168 ; WX 554 ; N currency ; B 8 42 546 580 ; C 169 ; WX 198 ; N quotesingle ; B 59 444 140 740 ; C 170 ; WX 502 ; N quotedblleft ; B 97 546 406 740 ; C 171 ; WX 425 ; N guillemotleft ; B 40 81 386 481 ; C 172 ; WX 251 ; N guilsinglleft ; B 40 81 212 481 ; C 173 ; WX 251 ; N guilsinglright ; B 39 81 211 481 ; C 174 ; WX 487 ; N fi ; B 19 0 422 753 ; C 175 ; WX 485 ; N fl ; B 19 0 420 753 ; C 177 ; WX 500 ; N endash ; B 35 248 465 315 ; C 178 ; WX 553 ; N dagger ; B 59 -133 493 740 ; C 179 ; WX 553 ; N daggerdbl ; B 59 -133 493 740 ; C 180 ; WX 277 ; N periodcentered ; B 102 190 176 316 ; C 182 ; WX 564 ; N paragraph ; B 22 -110 551 740 ; C 183 ; WX 606 ; N bullet ; B 150 222 455 532 ; C 184 ; WX 354 ; N quotesinglbase ; B 89 -68 251 126 ; C 185 ; WX 502 ; N quotedblbase ; B 89 -68 399 126 ; C 186 ; WX 484 ; N quotedblright ; B 96 546 405 740 ; C 187 ; WX 425 ; N guillemotright ; B 39 81 385 481 ; C 188 ; WX 1000 ; N ellipsis ; B 130 0 870 126 ; C 189 ; WX 1174 ; N perthousand ; B 25 -13 1148 751 ; C 191 ; WX 591 ; N questiondown ; B 65 -205 527 548 ; C 193 ; WX 378 ; N grave ; B 69 619 300 786 ; C 194 ; WX 375 ; N acute ; B 78 619 309 786 ; C 195 ; WX 502 ; N circumflex ; B 74 639 428 764 ; C 196 ; WX 439 ; N tilde ; B 47 651 392 754 ; C 197 ; WX 485 ; N macron ; B 73 669 411 736 ; C 198 ; WX 453 ; N breve ; B 52 651 401 754 ; C 199 ; WX 222 ; N dotaccent ; B 74 639 148 765 ; C 200 ; WX 369 ; N dieresis ; B 73 639 295 765 ; C 202 ; WX 332 ; N ring ; B 62 600 269 807 ; C 203 ; WX 324 ; N cedilla ; B 79 -222 254 3 ; C 205 ; WX 552 ; N hungarumlaut ; B 109 605 486 786 ; C 206 ; WX 302 ; N ogonek ; B 73 -191 228 0 ; C 207 ; WX 502 ; N caron ; B 68 639 423 764 ; C 208 ; WX 1000 ; N emdash ; B 35 248 965 315 ; C 225 ; WX 992 ; N AE ; B -20 0 907 740 ; C 227 ; WX 369 ; N ordfeminine ; B -3 407 356 753 ; C 232 ; WX 517 ; N Lslash ; B 59 0 517 740 ; C 233 ; WX 868 ; N Oslash ; B 43 -83 826 819 ; C 234 ; WX 1194 ; N OE ; B 45 -13 1142 753 ; C 235 ; WX 369 ; N ordmasculine ; B 12 407 356 753 ; C 241 ; WX 1157 ; N ae ; B 34 -13 1113 561 ; C 245 ; WX 200 ; N dotlessi ; B 65 0 135 547 ; C 248 ; WX 300 ; N lslash ; B 43 0 259 740 ; C 249 ; WX 653 ; N oslash ; B 41 -64 613 614 ; C 250 ; WX 1137 ; N oe ; B 34 -13 1104 561 ; C 251 ; WX 554 ; N germandbls ; B 61 -13 525 753 ; C -1 ; WX 226 ; N Idieresis ; B 2 0 224 928 ; C -1 ; WX 650 ; N eacute ; B 38 -13 608 786 ; C -1 ; WX 683 ; N abreve ; B 42 -13 621 754 ; C -1 ; WX 608 ; N uhungarumlaut ; B 62 -13 541 786 ; C -1 ; WX 650 ; N ecaron ; B 38 -13 608 764 ; C -1 ; WX 592 ; N Ydieresis ; B 1 0 592 928 ; C -1 ; WX 606 ; N divide ; B 51 -13 555 519 ; C -1 ; WX 592 ; N Yacute ; B 1 0 592 949 ; C -1 ; WX 740 ; N Acircumflex ; B 12 0 729 927 ; C -1 ; WX 683 ; N aacute ; B 42 -13 621 786 ; C -1 ; WX 655 ; N Ucircumflex ; B 75 -13 579 927 ; C -1 ; WX 536 ; N yacute ; B 15 -192 523 786 ; C -1 ; WX 388 ; N scommaaccent ; B 24 -222 364 561 ; C -1 ; WX 650 ; N ecircumflex ; B 38 -13 608 764 ; C -1 ; WX 655 ; N Uring ; B 75 -13 579 955 ; C -1 ; WX 655 ; N Udieresis ; B 75 -13 579 928 ; C -1 ; WX 683 ; N aogonek ; B 42 -191 634 561 ; C -1 ; WX 655 ; N Uacute ; B 75 -13 579 949 ; C -1 ; WX 608 ; N uogonek ; B 62 -191 558 547 ; C -1 ; WX 536 ; N Edieresis ; B 70 0 475 928 ; C -1 ; WX 790 ; N Dcroat ; B 40 0 739 740 ; C -1 ; WX 250 ; N commaaccent ; B 23 -222 169 -54 ; C -1 ; WX 747 ; N copyright ; B -9 -12 755 752 ; C -1 ; WX 536 ; N Emacron ; B 70 0 475 899 ; C -1 ; WX 647 ; N ccaron ; B 41 -13 607 764 ; C -1 ; WX 683 ; N aring ; B 42 -13 621 807 ; C -1 ; WX 740 ; N Ncommaaccent ; B 75 -202 664 740 ; C -1 ; WX 200 ; N lacute ; B 20 0 251 949 ; C -1 ; WX 683 ; N agrave ; B 42 -13 621 786 ; C -1 ; WX 426 ; N Tcommaaccent ; B 6 -222 419 740 ; C -1 ; WX 813 ; N Cacute ; B 43 -13 771 949 ; C -1 ; WX 683 ; N atilde ; B 42 -13 621 754 ; C -1 ; WX 536 ; N Edotaccent ; B 70 0 475 928 ; C -1 ; WX 388 ; N scaron ; B 11 -13 366 764 ; C -1 ; WX 388 ; N scedilla ; B 24 -222 364 561 ; C -1 ; WX 200 ; N iacute ; B 30 0 261 786 ; C -1 ; WX 471 ; N lozenge ; B 15 0 457 719 ; C -1 ; WX 607 ; N Rcaron ; B 70 0 572 927 ; C -1 ; WX 872 ; N Gcommaaccent ; B 40 -222 828 753 ; C -1 ; WX 608 ; N ucircumflex ; B 62 -13 541 764 ; C -1 ; WX 683 ; N acircumflex ; B 42 -13 621 764 ; C -1 ; WX 740 ; N Amacron ; B 12 0 729 899 ; C -1 ; WX 301 ; N rcaron ; B -3 0 352 764 ; C -1 ; WX 647 ; N ccedilla ; B 41 -222 607 561 ; C -1 ; WX 480 ; N Zdotaccent ; B 12 0 470 928 ; C -1 ; WX 592 ; N Thorn ; B 60 0 549 740 ; C -1 ; WX 869 ; N Omacron ; B 43 -13 826 899 ; C -1 ; WX 607 ; N Racute ; B 70 0 572 949 ; C -1 ; WX 498 ; N Sacute ; B 22 -13 473 949 ; C -1 ; WX 755 ; N dcaron ; B 39 -13 792 740 ; C -1 ; WX 655 ; N Umacron ; B 75 -13 579 899 ; C -1 ; WX 608 ; N uring ; B 62 -13 541 807 ; C -1 ; WX 332 ; N threesuperior ; B 18 289 318 747 ; C -1 ; WX 869 ; N Ograve ; B 43 -13 826 949 ; C -1 ; WX 740 ; N Agrave ; B 12 0 729 949 ; C -1 ; WX 740 ; N Abreve ; B 12 0 729 917 ; C -1 ; WX 606 ; N multiply ; B 74 24 533 482 ; C -1 ; WX 608 ; N uacute ; B 62 -13 541 786 ; C -1 ; WX 426 ; N Tcaron ; B 6 0 419 927 ; C -1 ; WX 476 ; N partialdiff ; B 22 -38 454 704 ; C -1 ; WX 536 ; N ydieresis ; B 15 -192 523 765 ; C -1 ; WX 740 ; N Nacute ; B 75 0 664 949 ; C -1 ; WX 200 ; N icircumflex ; B -77 0 277 764 ; C -1 ; WX 536 ; N Ecircumflex ; B 70 0 475 927 ; C -1 ; WX 683 ; N adieresis ; B 42 -13 621 765 ; C -1 ; WX 650 ; N edieresis ; B 38 -13 608 765 ; C -1 ; WX 647 ; N cacute ; B 41 -13 607 786 ; C -1 ; WX 610 ; N nacute ; B 65 0 546 786 ; C -1 ; WX 608 ; N umacron ; B 62 -13 541 736 ; C -1 ; WX 740 ; N Ncaron ; B 75 0 664 927 ; C -1 ; WX 226 ; N Iacute ; B 43 0 274 949 ; C -1 ; WX 606 ; N plusminus ; B 51 -24 555 518 ; C -1 ; WX 672 ; N brokenbar ; B 299 -147 373 703 ; C -1 ; WX 747 ; N registered ; B -9 -12 755 752 ; C -1 ; WX 872 ; N Gbreve ; B 40 -13 828 917 ; C -1 ; WX 226 ; N Idotaccent ; B 76 0 150 928 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 536 ; N Egrave ; B 70 0 475 949 ; C -1 ; WX 301 ; N racute ; B 65 0 332 786 ; C -1 ; WX 655 ; N omacron ; B 42 -13 614 736 ; C -1 ; WX 480 ; N Zacute ; B 12 0 470 949 ; C -1 ; WX 480 ; N Zcaron ; B 12 0 470 927 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 658 ; C -1 ; WX 790 ; N Eth ; B 40 0 739 740 ; C -1 ; WX 813 ; N Ccedilla ; B 43 -222 771 752 ; C -1 ; WX 200 ; N lcommaaccent ; B -2 -222 144 740 ; C -1 ; WX 359 ; N tcaron ; B 14 0 394 780 ; C -1 ; WX 650 ; N eogonek ; B 38 -191 608 561 ; C -1 ; WX 655 ; N Uogonek ; B 75 -191 579 740 ; C -1 ; WX 740 ; N Aacute ; B 12 0 729 949 ; C -1 ; WX 740 ; N Adieresis ; B 12 0 729 928 ; C -1 ; WX 650 ; N egrave ; B 38 -13 608 786 ; C -1 ; WX 425 ; N zacute ; B 10 0 415 786 ; C -1 ; WX 200 ; N iogonek ; B 11 -191 166 740 ; C -1 ; WX 869 ; N Oacute ; B 43 -13 826 949 ; C -1 ; WX 655 ; N oacute ; B 42 -13 614 786 ; C -1 ; WX 683 ; N amacron ; B 42 -13 621 736 ; C -1 ; WX 388 ; N sacute ; B 24 -13 364 786 ; C -1 ; WX 200 ; N idieresis ; B -11 0 211 765 ; C -1 ; WX 869 ; N Ocircumflex ; B 43 -13 826 927 ; C -1 ; WX 655 ; N Ugrave ; B 75 -13 579 949 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 682 ; N thorn ; B 64 -192 643 740 ; C -1 ; WX 332 ; N twosuperior ; B 19 296 318 747 ; C -1 ; WX 869 ; N Odieresis ; B 43 -13 826 928 ; C -1 ; WX 608 ; N mu ; B 80 -184 527 547 ; C -1 ; WX 200 ; N igrave ; B -60 0 171 786 ; C -1 ; WX 655 ; N ohungarumlaut ; B 42 -13 614 786 ; C -1 ; WX 536 ; N Eogonek ; B 70 -191 475 740 ; C -1 ; WX 685 ; N dcroat ; B 39 -13 680 740 ; C -1 ; WX 831 ; N threequarters ; B 46 0 784 747 ; C -1 ; WX 498 ; N Scedilla ; B 22 -222 473 753 ; C -1 ; WX 260 ; N lcaron ; B 65 0 309 740 ; C -1 ; WX 591 ; N Kcommaaccent ; B 81 -202 591 740 ; C -1 ; WX 462 ; N Lacute ; B 82 0 462 949 ; C -1 ; WX 1000 ; N trademark ; B 9 296 816 740 ; C -1 ; WX 650 ; N edotaccent ; B 38 -13 608 765 ; C -1 ; WX 226 ; N Igrave ; B -47 0 184 949 ; C -1 ; WX 226 ; N Imacron ; B -31 0 256 899 ; C -1 ; WX 462 ; N Lcaron ; B 82 0 462 740 ; C -1 ; WX 831 ; N onehalf ; B 81 0 750 740 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 658 ; C -1 ; WX 655 ; N ocircumflex ; B 42 -13 614 764 ; C -1 ; WX 610 ; N ntilde ; B 65 0 546 754 ; C -1 ; WX 655 ; N Uhungarumlaut ; B 75 -13 579 949 ; C -1 ; WX 536 ; N Eacute ; B 70 0 475 949 ; C -1 ; WX 650 ; N emacron ; B 38 -13 608 736 ; C -1 ; WX 673 ; N gbreve ; B 37 -215 606 754 ; C -1 ; WX 831 ; N onequarter ; B 100 0 729 740 ; C -1 ; WX 498 ; N Scaron ; B 22 -13 473 927 ; C -1 ; WX 498 ; N Scommaaccent ; B 22 -222 473 753 ; C -1 ; WX 869 ; N Ohungarumlaut ; B 43 -13 826 949 ; C -1 ; WX 400 ; N degree ; B 56 421 344 709 ; C -1 ; WX 655 ; N ograve ; B 42 -13 614 786 ; C -1 ; WX 813 ; N Ccaron ; B 43 -13 771 927 ; C -1 ; WX 608 ; N ugrave ; B 62 -13 541 786 ; C -1 ; WX 453 ; N radical ; B 7 -58 447 756 ; C -1 ; WX 744 ; N Dcaron ; B 74 0 699 927 ; C -1 ; WX 301 ; N rcommaaccent ; B 8 -222 291 561 ; C -1 ; WX 740 ; N Ntilde ; B 75 0 664 917 ; C -1 ; WX 655 ; N otilde ; B 42 -13 614 754 ; C -1 ; WX 607 ; N Rcommaaccent ; B 70 -202 572 740 ; C -1 ; WX 462 ; N Lcommaaccent ; B 82 -222 462 740 ; C -1 ; WX 740 ; N Atilde ; B 12 0 729 917 ; C -1 ; WX 740 ; N Aogonek ; B 12 -191 751 740 ; C -1 ; WX 740 ; N Aring ; B 12 0 729 955 ; C -1 ; WX 869 ; N Otilde ; B 43 -13 826 917 ; C -1 ; WX 425 ; N zdotaccent ; B 10 0 415 765 ; C -1 ; WX 536 ; N Ecaron ; B 70 0 475 927 ; C -1 ; WX 226 ; N Iogonek ; B 21 -191 176 740 ; C -1 ; WX 502 ; N kcommaaccent ; B 70 -202 498 740 ; C -1 ; WX 606 ; N minus ; B 51 219 555 287 ; C -1 ; WX 226 ; N Icircumflex ; B -64 0 290 927 ; C -1 ; WX 610 ; N ncaron ; B 65 0 546 764 ; C -1 ; WX 339 ; N tcommaaccent ; B 14 -222 330 740 ; C -1 ; WX 606 ; N logicalnot ; B 51 109 555 388 ; C -1 ; WX 655 ; N odieresis ; B 42 -13 614 765 ; C -1 ; WX 608 ; N udieresis ; B 62 -13 541 765 ; C -1 ; WX 549 ; N notequal ; B 12 -29 537 541 ; C -1 ; WX 673 ; N gcommaaccent ; B 37 -215 606 786 ; C -1 ; WX 655 ; N eth ; B 42 -12 614 753 ; C -1 ; WX 425 ; N zcaron ; B 10 0 415 764 ; C -1 ; WX 610 ; N ncommaaccent ; B 65 -202 546 561 ; C -1 ; WX 332 ; N onesuperior ; B 63 296 198 740 ; C -1 ; WX 200 ; N imacron ; B -44 0 243 736 ; C -1 ; WX 554 ; N Euro ; B -32 -13 573 752 ; C -1 ; WX 813 ; N Ccircumflex ; B 44 -13 770 965 ; C -1 ; WX 647 ; N ccircumflex ; B 42 -13 608 773 ; C -1 ; WX 813 ; N Cdotaccent ; B 44 -13 770 965 ; C -1 ; WX 647 ; N cdotaccent ; B 42 -13 608 773 ; C -1 ; WX 536 ; N Ebreve ; B 76 0 480 959 ; C -1 ; WX 650 ; N ebreve ; B 42 -13 611 767 ; C -1 ; WX 872 ; N Gcircumflex ; B 44 -13 831 965 ; C -1 ; WX 673 ; N gcircumflex ; B 42 -215 610 773 ; C -1 ; WX 872 ; N Gdotaccent ; B 44 -13 831 965 ; C -1 ; WX 673 ; N gdotaccent ; B 42 -215 610 773 ; C -1 ; WX 683 ; N Hcircumflex ; B 76 0 607 965 ; C -1 ; WX 610 ; N hcircumflex ; B 63 0 547 965 ; C -1 ; WX 683 ; N Hbar ; B 12 0 674 739 ; C -1 ; WX 610 ; N hbar ; B 9 0 546 739 ; C -1 ; WX 226 ; N Itilde ; B -32 0 258 934 ; C -1 ; WX 200 ; N itilde ; B -45 0 245 742 ; C -1 ; WX 226 ; N Ibreve ; B -39 0 265 959 ; C -1 ; WX 200 ; N ibreve ; B -52 0 252 767 ; C -1 ; WX 686 ; N IJ ; B 76 -14 606 739 ; C -1 ; WX 330 ; N ij ; B 63 -192 266 739 ; C -1 ; WX 482 ; N Jcircumflex ; B 11 -14 546 965 ; C -1 ; WX 203 ; N jcircumflex ; B -74 -192 280 777 ; C -1 ; WX 502 ; N kgreenlandic ; B 63 0 497 547 ; C -1 ; WX 462 ; N Ldot ; B 76 0 456 739 ; C -1 ; WX 320 ; N ldot ; B 63 0 285 739 ; C -1 ; WX 610 ; N napostrophe ; B 63 0 547 749 ; C -1 ; WX 740 ; N Eng ; B 76 -200 664 739 ; C -1 ; WX 610 ; N eng ; B 63 -201 547 560 ; C -1 ; WX 869 ; N Obreve ; B 44 -13 825 959 ; C -1 ; WX 655 ; N obreve ; B 42 -13 613 767 ; C -1 ; WX 498 ; N Scircumflex ; B 22 -13 476 965 ; C -1 ; WX 388 ; N scircumflex ; B 18 -13 407 773 ; C -1 ; WX 426 ; N Tbar ; B 7 0 419 739 ; C -1 ; WX 339 ; N tbar ; B 12 0 327 739 ; C -1 ; WX 426 ; N Tcedilla ; B 6 -222 419 740 ; C -1 ; WX 339 ; N tcedilla ; B 14 -222 330 740 ; C -1 ; WX 655 ; N Utilde ; B 76 -13 579 934 ; C -1 ; WX 608 ; N utilde ; B 63 -13 545 742 ; C -1 ; WX 655 ; N Ubreve ; B 76 -13 579 959 ; C -1 ; WX 608 ; N ubreve ; B 63 -13 545 767 ; C -1 ; WX 960 ; N Wcircumflex ; B 10 0 950 965 ; C -1 ; WX 831 ; N wcircumflex ; B 7 0 824 773 ; C -1 ; WX 592 ; N Ycircumflex ; B 2 0 590 965 ; C -1 ; WX 536 ; N ycircumflex ; B 9 -192 527 773 ; C -1 ; WX 314 ; N longs ; B 16 0 311 739 ; C -1 ; WX 768 ; N infinity ; B 42 130 720 520 ; EndCharMetrics StartKernData StartKernPairs 922 KPX A T -81 KPX A Tcaron -81 KPX A Tcommaaccent -81 KPX A V -122 KPX A W -95 KPX A Y -122 KPX A Yacute -122 KPX A Ydieresis -122 KPX A v -73 KPX A w -65 KPX A y -72 KPX A yacute -72 KPX A ydieresis -72 KPX Aacute T -81 KPX Aacute Tcaron -81 KPX Aacute Tcommaaccent -81 KPX Aacute V -122 KPX Aacute W -95 KPX Aacute Y -122 KPX Aacute Yacute -122 KPX Aacute Ydieresis -122 KPX Aacute v -73 KPX Aacute w -65 KPX Aacute y -72 KPX Aacute yacute -72 KPX Aacute ydieresis -72 KPX Abreve T -81 KPX Abreve Tcaron -81 KPX Abreve Tcommaaccent -81 KPX Abreve V -122 KPX Abreve W -95 KPX Abreve Y -122 KPX Abreve Yacute -122 KPX Abreve Ydieresis -122 KPX Abreve v -73 KPX Abreve w -65 KPX Abreve y -72 KPX Abreve yacute -72 KPX Abreve ydieresis -72 KPX Acircumflex T -81 KPX Acircumflex Tcaron -81 KPX Acircumflex Tcommaaccent -81 KPX Acircumflex V -122 KPX Acircumflex W -95 KPX Acircumflex Y -122 KPX Acircumflex Yacute -122 KPX Acircumflex Ydieresis -122 KPX Acircumflex v -73 KPX Acircumflex w -65 KPX Acircumflex y -72 KPX Acircumflex yacute -72 KPX Acircumflex ydieresis -72 KPX Adieresis T -81 KPX Adieresis Tcaron -81 KPX Adieresis Tcommaaccent -81 KPX Adieresis V -122 KPX Adieresis W -95 KPX Adieresis Y -122 KPX Adieresis Yacute -122 KPX Adieresis Ydieresis -122 KPX Adieresis v -73 KPX Adieresis w -65 KPX Adieresis y -72 KPX Adieresis yacute -72 KPX Adieresis ydieresis -72 KPX Agrave T -81 KPX Agrave Tcaron -81 KPX Agrave Tcommaaccent -81 KPX Agrave V -122 KPX Agrave W -95 KPX Agrave Y -122 KPX Agrave Yacute -122 KPX Agrave Ydieresis -122 KPX Agrave v -73 KPX Agrave w -65 KPX Agrave y -72 KPX Agrave yacute -72 KPX Agrave ydieresis -72 KPX Amacron T -81 KPX Amacron Tcaron -81 KPX Amacron Tcommaaccent -81 KPX Amacron V -122 KPX Amacron W -95 KPX Amacron Y -122 KPX Amacron Yacute -122 KPX Amacron Ydieresis -122 KPX Amacron v -73 KPX Amacron w -65 KPX Amacron y -72 KPX Amacron yacute -72 KPX Amacron ydieresis -72 KPX Aogonek T -81 KPX Aogonek Tcaron -81 KPX Aogonek Tcommaaccent -81 KPX Aogonek V -122 KPX Aogonek W -95 KPX Aogonek Y -122 KPX Aogonek Yacute -122 KPX Aogonek Ydieresis -122 KPX Aogonek v -73 KPX Aogonek w -65 KPX Aogonek y -72 KPX Aogonek yacute -72 KPX Aogonek ydieresis -72 KPX Aring T -81 KPX Aring Tcaron -81 KPX Aring Tcommaaccent -81 KPX Aring V -122 KPX Aring W -95 KPX Aring Y -122 KPX Aring Yacute -122 KPX Aring Ydieresis -122 KPX Aring v -73 KPX Aring w -65 KPX Aring y -72 KPX Aring yacute -72 KPX Aring ydieresis -72 KPX Atilde T -81 KPX Atilde Tcaron -81 KPX Atilde Tcommaaccent -81 KPX Atilde V -122 KPX Atilde W -95 KPX Atilde Y -122 KPX Atilde Yacute -122 KPX Atilde Ydieresis -122 KPX Atilde v -73 KPX Atilde w -65 KPX Atilde y -72 KPX Atilde yacute -72 KPX Atilde ydieresis -72 KPX F A -60 KPX F Aacute -60 KPX F Abreve -60 KPX F Acircumflex -60 KPX F Adieresis -60 KPX F Agrave -60 KPX F Amacron -60 KPX F Aogonek -60 KPX F Aring -60 KPX F Atilde -60 KPX F comma -122 KPX F period -79 KPX L T -46 KPX L Tcaron -46 KPX L Tcommaaccent -46 KPX L V -113 KPX L W -67 KPX L Y -91 KPX L Yacute -91 KPX L Ydieresis -91 KPX L y -23 KPX L yacute -23 KPX L ydieresis -23 KPX Lacute T -46 KPX Lacute Tcaron -46 KPX Lacute Tcommaaccent -46 KPX Lacute V -113 KPX Lacute W -67 KPX Lacute Y -91 KPX Lacute Yacute -91 KPX Lacute Ydieresis -91 KPX Lacute y -23 KPX Lacute yacute -23 KPX Lacute ydieresis -23 KPX Lcaron y -23 KPX Lcaron yacute -23 KPX Lcaron ydieresis -23 KPX Lcommaaccent T -46 KPX Lcommaaccent Tcaron -46 KPX Lcommaaccent Tcommaaccent -46 KPX Lcommaaccent V -113 KPX Lcommaaccent W -67 KPX Lcommaaccent Y -91 KPX Lcommaaccent Yacute -91 KPX Lcommaaccent Ydieresis -91 KPX Lcommaaccent y -23 KPX Lcommaaccent yacute -23 KPX Lcommaaccent ydieresis -23 KPX Lslash T -46 KPX Lslash Tcaron -46 KPX Lslash Tcommaaccent -46 KPX Lslash V -113 KPX Lslash W -67 KPX Lslash Y -91 KPX Lslash Yacute -91 KPX Lslash Ydieresis -91 KPX Lslash y -23 KPX Lslash yacute -23 KPX Lslash ydieresis -23 KPX P A -74 KPX P Aacute -74 KPX P Abreve -74 KPX P Acircumflex -74 KPX P Adieresis -74 KPX P Agrave -74 KPX P Amacron -74 KPX P Aogonek -74 KPX P Aring -74 KPX P Atilde -74 KPX P comma -123 KPX P period -91 KPX R T 6 KPX R Tcaron 6 KPX R Tcommaaccent 6 KPX R V -39 KPX R W 2 KPX R Y -20 KPX R Yacute -20 KPX R Ydieresis -20 KPX R y 32 KPX R yacute 32 KPX R ydieresis 32 KPX Racute T 6 KPX Racute Tcaron 6 KPX Racute Tcommaaccent 6 KPX Racute V -39 KPX Racute W 2 KPX Racute Y -20 KPX Racute Yacute -20 KPX Racute Ydieresis -20 KPX Racute y 32 KPX Racute yacute 32 KPX Racute ydieresis 32 KPX Rcaron T 6 KPX Rcaron Tcaron 6 KPX Rcaron Tcommaaccent 6 KPX Rcaron V -39 KPX Rcaron W 2 KPX Rcaron Y -20 KPX Rcaron Yacute -20 KPX Rcaron Ydieresis -20 KPX Rcaron y 32 KPX Rcaron yacute 32 KPX Rcaron ydieresis 32 KPX Rcommaaccent T 6 KPX Rcommaaccent Tcaron 6 KPX Rcommaaccent Tcommaaccent 6 KPX Rcommaaccent V -39 KPX Rcommaaccent W 2 KPX Rcommaaccent Y -20 KPX Rcommaaccent Yacute -20 KPX Rcommaaccent Ydieresis -20 KPX Rcommaaccent y 32 KPX Rcommaaccent yacute 32 KPX Rcommaaccent ydieresis 32 KPX T A -81 KPX T Aacute -81 KPX T Abreve -81 KPX T Acircumflex -81 KPX T Adieresis -81 KPX T Agrave -81 KPX T Amacron -81 KPX T Aogonek -81 KPX T Aring -81 KPX T Atilde -81 KPX T a -52 KPX T aacute -52 KPX T abreve -52 KPX T acircumflex -52 KPX T adieresis -52 KPX T agrave -52 KPX T amacron -52 KPX T aogonek -52 KPX T aring -52 KPX T atilde -52 KPX T c -51 KPX T cacute -51 KPX T ccaron -51 KPX T ccedilla -51 KPX T colon 3 KPX T comma -102 KPX T e -49 KPX T eacute -49 KPX T ecaron -49 KPX T ecircumflex -49 KPX T edieresis -49 KPX T edotaccent -49 KPX T egrave -49 KPX T emacron -49 KPX T eogonek -49 KPX T i 31 KPX T iacute 31 KPX T icircumflex 31 KPX T idieresis 31 KPX T igrave 31 KPX T imacron 31 KPX T iogonek 31 KPX T o -49 KPX T oacute -49 KPX T ocircumflex -49 KPX T odieresis -49 KPX T ograve -49 KPX T ohungarumlaut -49 KPX T omacron -49 KPX T oslash -49 KPX T otilde -49 KPX T period -71 KPX T r -30 KPX T racute -30 KPX T rcaron -30 KPX T rcommaaccent -30 KPX T s -23 KPX T sacute -23 KPX T scedilla -23 KPX T scommaaccent -23 KPX T semicolon -29 KPX T u -46 KPX T uacute -46 KPX T ucircumflex -46 KPX T udieresis -46 KPX T ugrave -46 KPX T uhungarumlaut -46 KPX T umacron -46 KPX T uogonek -46 KPX T uring -46 KPX T w 7 KPX T y 5 KPX T yacute 5 KPX T ydieresis 5 KPX Tcaron A -81 KPX Tcaron Aacute -81 KPX Tcaron Abreve -81 KPX Tcaron Acircumflex -81 KPX Tcaron Adieresis -81 KPX Tcaron Agrave -81 KPX Tcaron Amacron -81 KPX Tcaron Aogonek -81 KPX Tcaron Aring -81 KPX Tcaron Atilde -81 KPX Tcaron a -52 KPX Tcaron aacute -52 KPX Tcaron abreve -52 KPX Tcaron acircumflex -52 KPX Tcaron adieresis -52 KPX Tcaron agrave -52 KPX Tcaron amacron -52 KPX Tcaron aogonek -52 KPX Tcaron aring -52 KPX Tcaron atilde -52 KPX Tcaron c -51 KPX Tcaron cacute -51 KPX Tcaron ccaron -51 KPX Tcaron ccedilla -51 KPX Tcaron colon 3 KPX Tcaron comma -102 KPX Tcaron e -49 KPX Tcaron eacute -49 KPX Tcaron ecaron -49 KPX Tcaron ecircumflex -49 KPX Tcaron edieresis -49 KPX Tcaron edotaccent -49 KPX Tcaron egrave -49 KPX Tcaron emacron -49 KPX Tcaron eogonek -49 KPX Tcaron i 31 KPX Tcaron iacute 31 KPX Tcaron iogonek 31 KPX Tcaron o -49 KPX Tcaron oacute -49 KPX Tcaron ocircumflex -49 KPX Tcaron odieresis -49 KPX Tcaron ograve -49 KPX Tcaron ohungarumlaut -49 KPX Tcaron omacron -49 KPX Tcaron oslash -49 KPX Tcaron otilde -49 KPX Tcaron period -71 KPX Tcaron r -30 KPX Tcaron racute -30 KPX Tcaron rcaron -30 KPX Tcaron rcommaaccent -30 KPX Tcaron s -23 KPX Tcaron sacute -23 KPX Tcaron scaron -23 KPX Tcaron scedilla -23 KPX Tcaron scommaaccent -23 KPX Tcaron semicolon -29 KPX Tcaron u -46 KPX Tcaron uacute -46 KPX Tcaron ucircumflex -46 KPX Tcaron udieresis -46 KPX Tcaron ugrave -46 KPX Tcaron uhungarumlaut -46 KPX Tcaron umacron -46 KPX Tcaron uogonek -46 KPX Tcaron uring -46 KPX Tcaron w 7 KPX Tcaron y 5 KPX Tcaron yacute 5 KPX Tcaron ydieresis 5 KPX Tcommaaccent A -81 KPX Tcommaaccent Aacute -81 KPX Tcommaaccent Abreve -81 KPX Tcommaaccent Acircumflex -81 KPX Tcommaaccent Adieresis -81 KPX Tcommaaccent Agrave -81 KPX Tcommaaccent Amacron -81 KPX Tcommaaccent Aogonek -81 KPX Tcommaaccent Aring -81 KPX Tcommaaccent Atilde -81 KPX Tcommaaccent a -52 KPX Tcommaaccent aacute -52 KPX Tcommaaccent abreve -52 KPX Tcommaaccent acircumflex -52 KPX Tcommaaccent adieresis -52 KPX Tcommaaccent agrave -52 KPX Tcommaaccent amacron -52 KPX Tcommaaccent aogonek -52 KPX Tcommaaccent aring -52 KPX Tcommaaccent atilde -52 KPX Tcommaaccent c -51 KPX Tcommaaccent cacute -51 KPX Tcommaaccent ccaron -51 KPX Tcommaaccent ccedilla -51 KPX Tcommaaccent colon 3 KPX Tcommaaccent comma -102 KPX Tcommaaccent e -49 KPX Tcommaaccent eacute -49 KPX Tcommaaccent ecaron -49 KPX Tcommaaccent ecircumflex -49 KPX Tcommaaccent edieresis -49 KPX Tcommaaccent edotaccent -49 KPX Tcommaaccent egrave -49 KPX Tcommaaccent emacron -49 KPX Tcommaaccent eogonek -49 KPX Tcommaaccent i 31 KPX Tcommaaccent iacute 31 KPX Tcommaaccent iogonek 31 KPX Tcommaaccent o -49 KPX Tcommaaccent oacute -49 KPX Tcommaaccent ocircumflex -49 KPX Tcommaaccent odieresis -49 KPX Tcommaaccent ograve -49 KPX Tcommaaccent ohungarumlaut -49 KPX Tcommaaccent omacron -49 KPX Tcommaaccent oslash -49 KPX Tcommaaccent otilde -49 KPX Tcommaaccent period -71 KPX Tcommaaccent r -30 KPX Tcommaaccent racute -30 KPX Tcommaaccent rcaron -30 KPX Tcommaaccent rcommaaccent -30 KPX Tcommaaccent s -23 KPX Tcommaaccent sacute -23 KPX Tcommaaccent scedilla -23 KPX Tcommaaccent scommaaccent -23 KPX Tcommaaccent semicolon -29 KPX Tcommaaccent u -46 KPX Tcommaaccent uacute -46 KPX Tcommaaccent ucircumflex -46 KPX Tcommaaccent udieresis -46 KPX Tcommaaccent ugrave -46 KPX Tcommaaccent uhungarumlaut -46 KPX Tcommaaccent umacron -46 KPX Tcommaaccent uogonek -46 KPX Tcommaaccent uring -46 KPX Tcommaaccent w 7 KPX Tcommaaccent y 5 KPX Tcommaaccent yacute 5 KPX Tcommaaccent ydieresis 5 KPX V A -122 KPX V Aacute -122 KPX V Abreve -122 KPX V Acircumflex -122 KPX V Adieresis -122 KPX V Agrave -122 KPX V Amacron -122 KPX V Aogonek -122 KPX V Aring -122 KPX V Atilde -122 KPX V a -104 KPX V aacute -104 KPX V abreve -104 KPX V acircumflex -104 KPX V adieresis -104 KPX V agrave -104 KPX V amacron -104 KPX V aogonek -104 KPX V aring -104 KPX V atilde -104 KPX V colon -1 KPX V comma -106 KPX V e -101 KPX V eacute -101 KPX V ecaron -101 KPX V ecircumflex -101 KPX V edieresis -101 KPX V edotaccent -101 KPX V egrave -101 KPX V emacron -101 KPX V eogonek -101 KPX V i 5 KPX V iacute 5 KPX V iogonek 5 KPX V o -101 KPX V oacute -101 KPX V ocircumflex -101 KPX V odieresis -101 KPX V ograve -101 KPX V ohungarumlaut -101 KPX V omacron -101 KPX V oslash -101 KPX V otilde -101 KPX V period -75 KPX V r -40 KPX V racute -40 KPX V rcaron -40 KPX V rcommaaccent -40 KPX V semicolon -33 KPX V u -40 KPX V uacute -40 KPX V ucircumflex -40 KPX V udieresis -40 KPX V ugrave -40 KPX V uhungarumlaut -40 KPX V umacron -40 KPX V uogonek -40 KPX V uring -40 KPX V y -25 KPX V yacute -25 KPX V ydieresis -25 KPX W A -73 KPX W Aacute -73 KPX W Abreve -73 KPX W Acircumflex -73 KPX W Adieresis -73 KPX W Agrave -73 KPX W Amacron -73 KPX W Aogonek -73 KPX W Aring -73 KPX W Atilde -73 KPX W a -50 KPX W aacute -50 KPX W abreve -50 KPX W acircumflex -50 KPX W adieresis -50 KPX W agrave -50 KPX W amacron -50 KPX W aogonek -50 KPX W aring -50 KPX W atilde -50 KPX W colon -1 KPX W comma -106 KPX W e -47 KPX W eacute -47 KPX W ecaron -47 KPX W ecircumflex -47 KPX W edieresis -47 KPX W edotaccent -47 KPX W egrave -47 KPX W emacron -47 KPX W eogonek -47 KPX W i 6 KPX W iacute 6 KPX W icircumflex 16 KPX W idieresis 16 KPX W igrave 16 KPX W imacron 16 KPX W iogonek 6 KPX W o -46 KPX W oacute -46 KPX W ocircumflex -46 KPX W odieresis -46 KPX W ograve -46 KPX W ohungarumlaut -46 KPX W omacron -46 KPX W oslash -46 KPX W otilde -46 KPX W period -74 KPX W r -29 KPX W racute -29 KPX W rcaron -29 KPX W rcommaaccent -29 KPX W semicolon -33 KPX W u -30 KPX W uacute -30 KPX W ucircumflex -30 KPX W udieresis -30 KPX W ugrave -30 KPX W uhungarumlaut -30 KPX W umacron -30 KPX W uogonek -30 KPX W uring -30 KPX W y -2 KPX W yacute -2 KPX W ydieresis -2 KPX Y A -122 KPX Y Aacute -122 KPX Y Abreve -122 KPX Y Acircumflex -122 KPX Y Adieresis -122 KPX Y Agrave -122 KPX Y Amacron -122 KPX Y Aogonek -122 KPX Y Aring -122 KPX Y Atilde -122 KPX Y a -93 KPX Y aacute -93 KPX Y abreve -93 KPX Y acircumflex -93 KPX Y adieresis -93 KPX Y agrave -93 KPX Y amacron -93 KPX Y aogonek -93 KPX Y aring -93 KPX Y atilde -93 KPX Y colon 9 KPX Y comma -97 KPX Y e -89 KPX Y eacute -89 KPX Y ecaron -89 KPX Y ecircumflex -89 KPX Y edieresis -89 KPX Y edotaccent -89 KPX Y egrave -89 KPX Y emacron -89 KPX Y eogonek -89 KPX Y i 13 KPX Y iacute 13 KPX Y icircumflex 23 KPX Y idieresis 23 KPX Y igrave 23 KPX Y imacron 23 KPX Y iogonek 13 KPX Y o -89 KPX Y oacute -89 KPX Y ocircumflex -89 KPX Y odieresis -89 KPX Y ograve -89 KPX Y ohungarumlaut -89 KPX Y omacron -89 KPX Y oslash -89 KPX Y otilde -89 KPX Y p -67 KPX Y period -65 KPX Y q -93 KPX Y semicolon -23 KPX Y u -69 KPX Y uacute -69 KPX Y ucircumflex -69 KPX Y udieresis -69 KPX Y ugrave -69 KPX Y uhungarumlaut -69 KPX Y umacron -69 KPX Y uogonek -69 KPX Y uring -69 KPX Y v -17 KPX Yacute A -122 KPX Yacute Aacute -122 KPX Yacute Abreve -122 KPX Yacute Acircumflex -122 KPX Yacute Adieresis -122 KPX Yacute Agrave -122 KPX Yacute Amacron -122 KPX Yacute Aogonek -122 KPX Yacute Aring -122 KPX Yacute Atilde -122 KPX Yacute a -93 KPX Yacute aacute -93 KPX Yacute abreve -93 KPX Yacute acircumflex -93 KPX Yacute adieresis -93 KPX Yacute agrave -93 KPX Yacute amacron -93 KPX Yacute aogonek -93 KPX Yacute aring -93 KPX Yacute atilde -93 KPX Yacute colon 9 KPX Yacute comma -97 KPX Yacute e -89 KPX Yacute eacute -89 KPX Yacute ecaron -89 KPX Yacute ecircumflex -89 KPX Yacute edieresis -89 KPX Yacute edotaccent -89 KPX Yacute egrave -89 KPX Yacute emacron -89 KPX Yacute eogonek -89 KPX Yacute i 13 KPX Yacute iacute 13 KPX Yacute icircumflex 23 KPX Yacute idieresis 23 KPX Yacute igrave 23 KPX Yacute imacron 23 KPX Yacute iogonek 13 KPX Yacute o -89 KPX Yacute oacute -89 KPX Yacute ocircumflex -89 KPX Yacute odieresis -89 KPX Yacute ograve -89 KPX Yacute ohungarumlaut -89 KPX Yacute omacron -89 KPX Yacute oslash -89 KPX Yacute otilde -89 KPX Yacute p -67 KPX Yacute period -65 KPX Yacute q -93 KPX Yacute semicolon -23 KPX Yacute u -69 KPX Yacute uacute -69 KPX Yacute ucircumflex -69 KPX Yacute udieresis -69 KPX Yacute ugrave -69 KPX Yacute uhungarumlaut -69 KPX Yacute umacron -69 KPX Yacute uogonek -69 KPX Yacute uring -69 KPX Yacute v -17 KPX Ydieresis A -122 KPX Ydieresis Aacute -122 KPX Ydieresis Abreve -122 KPX Ydieresis Acircumflex -122 KPX Ydieresis Adieresis -122 KPX Ydieresis Agrave -122 KPX Ydieresis Amacron -122 KPX Ydieresis Aogonek -122 KPX Ydieresis Aring -122 KPX Ydieresis Atilde -122 KPX Ydieresis a -93 KPX Ydieresis aacute -93 KPX Ydieresis abreve -93 KPX Ydieresis acircumflex -93 KPX Ydieresis adieresis -93 KPX Ydieresis agrave -93 KPX Ydieresis amacron -93 KPX Ydieresis aogonek -93 KPX Ydieresis aring -93 KPX Ydieresis atilde -93 KPX Ydieresis colon 9 KPX Ydieresis comma -97 KPX Ydieresis e -89 KPX Ydieresis eacute -89 KPX Ydieresis ecaron -89 KPX Ydieresis ecircumflex -89 KPX Ydieresis edieresis -89 KPX Ydieresis edotaccent -89 KPX Ydieresis egrave -89 KPX Ydieresis emacron -89 KPX Ydieresis eogonek -89 KPX Ydieresis i 13 KPX Ydieresis iacute 13 KPX Ydieresis icircumflex 23 KPX Ydieresis idieresis 23 KPX Ydieresis igrave 23 KPX Ydieresis imacron 23 KPX Ydieresis iogonek 13 KPX Ydieresis o -89 KPX Ydieresis oacute -89 KPX Ydieresis ocircumflex -89 KPX Ydieresis odieresis -89 KPX Ydieresis ograve -89 KPX Ydieresis ohungarumlaut -89 KPX Ydieresis omacron -89 KPX Ydieresis oslash -89 KPX Ydieresis otilde -89 KPX Ydieresis p -67 KPX Ydieresis period -65 KPX Ydieresis q -93 KPX Ydieresis semicolon -23 KPX Ydieresis u -69 KPX Ydieresis uacute -69 KPX Ydieresis ucircumflex -69 KPX Ydieresis udieresis -69 KPX Ydieresis ugrave -69 KPX Ydieresis uhungarumlaut -69 KPX Ydieresis umacron -69 KPX Ydieresis uogonek -69 KPX Ydieresis uring -69 KPX Ydieresis v -17 KPX f f 3 KPX r c -7 KPX r cacute -7 KPX r ccaron -7 KPX r ccedilla -7 KPX r comma -105 KPX r d -6 KPX r dcroat -6 KPX r e -4 KPX r eacute -4 KPX r ecaron -4 KPX r ecircumflex -4 KPX r edieresis -4 KPX r edotaccent -4 KPX r egrave -4 KPX r emacron -4 KPX r eogonek -4 KPX r f 48 KPX r g 1 KPX r gbreve 1 KPX r gcommaaccent 1 KPX r h 29 KPX r m 28 KPX r n 21 KPX r nacute 21 KPX r ncaron 21 KPX r ncommaaccent 21 KPX r ntilde 21 KPX r o -4 KPX r oacute -4 KPX r ocircumflex -4 KPX r odieresis -4 KPX r ograve -4 KPX r ohungarumlaut -4 KPX r omacron -4 KPX r oslash -4 KPX r otilde -4 KPX r period -73 KPX r q -8 KPX racute c -7 KPX racute cacute -7 KPX racute ccaron -7 KPX racute ccedilla -7 KPX racute comma -105 KPX racute d -6 KPX racute dcroat -6 KPX racute e -4 KPX racute eacute -4 KPX racute ecaron -4 KPX racute ecircumflex -4 KPX racute edieresis -4 KPX racute edotaccent -4 KPX racute egrave -4 KPX racute emacron -4 KPX racute eogonek -4 KPX racute f 48 KPX racute g 1 KPX racute gbreve 1 KPX racute gcommaaccent 1 KPX racute h 29 KPX racute m 28 KPX racute n 21 KPX racute nacute 21 KPX racute ncaron 21 KPX racute ncommaaccent 21 KPX racute ntilde 21 KPX racute o -4 KPX racute oacute -4 KPX racute ocircumflex -4 KPX racute odieresis -4 KPX racute ograve -4 KPX racute ohungarumlaut -4 KPX racute omacron -4 KPX racute oslash -4 KPX racute otilde -4 KPX racute period -73 KPX racute q -8 KPX rcaron c -7 KPX rcaron cacute -7 KPX rcaron ccaron -7 KPX rcaron ccedilla -7 KPX rcaron comma -105 KPX rcaron d -6 KPX rcaron dcroat -6 KPX rcaron e -4 KPX rcaron eacute -4 KPX rcaron ecaron -4 KPX rcaron ecircumflex -4 KPX rcaron edieresis -4 KPX rcaron edotaccent -4 KPX rcaron egrave -4 KPX rcaron emacron -4 KPX rcaron eogonek -4 KPX rcaron f 48 KPX rcaron g 1 KPX rcaron gbreve 1 KPX rcaron gcommaaccent 1 KPX rcaron h 29 KPX rcaron m 28 KPX rcaron n 21 KPX rcaron nacute 21 KPX rcaron ncaron 21 KPX rcaron ncommaaccent 21 KPX rcaron ntilde 21 KPX rcaron o -4 KPX rcaron oacute -4 KPX rcaron ocircumflex -4 KPX rcaron odieresis -4 KPX rcaron ograve -4 KPX rcaron ohungarumlaut -4 KPX rcaron omacron -4 KPX rcaron oslash -4 KPX rcaron otilde -4 KPX rcaron period -73 KPX rcaron q -8 KPX rcommaaccent c -7 KPX rcommaaccent cacute -7 KPX rcommaaccent ccaron -7 KPX rcommaaccent ccedilla -7 KPX rcommaaccent comma -105 KPX rcommaaccent d -6 KPX rcommaaccent dcroat -6 KPX rcommaaccent e -4 KPX rcommaaccent eacute -4 KPX rcommaaccent ecaron -4 KPX rcommaaccent ecircumflex -4 KPX rcommaaccent edieresis -4 KPX rcommaaccent edotaccent -4 KPX rcommaaccent egrave -4 KPX rcommaaccent emacron -4 KPX rcommaaccent eogonek -4 KPX rcommaaccent f 48 KPX rcommaaccent g 1 KPX rcommaaccent gbreve 1 KPX rcommaaccent gcommaaccent 1 KPX rcommaaccent h 29 KPX rcommaaccent m 28 KPX rcommaaccent n 21 KPX rcommaaccent nacute 21 KPX rcommaaccent ncaron 21 KPX rcommaaccent ncommaaccent 21 KPX rcommaaccent ntilde 21 KPX rcommaaccent o -4 KPX rcommaaccent oacute -4 KPX rcommaaccent ocircumflex -4 KPX rcommaaccent odieresis -4 KPX rcommaaccent ograve -4 KPX rcommaaccent ohungarumlaut -4 KPX rcommaaccent omacron -4 KPX rcommaaccent oslash -4 KPX rcommaaccent otilde -4 KPX rcommaaccent period -73 KPX rcommaaccent q -8 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Utopia-Bold.afm0000644000222100022210000005217714541067540015516 0ustar ph10ph10StartFontMetrics 2.0 Comment Copyright (c) 1989, 1991 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Fri Jan 17 15:08:52 1992 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 37705 Comment VMusage 33078 39970 FontName Utopia-Bold FullName Utopia Bold FamilyName Utopia Weight Bold ItalicAngle 0 IsFixedPitch false FontBBox -155 -250 1249 916 UnderlinePosition -100 UnderlineThickness 50 Version 001.002 Notice Copyright (c) 1989, 1991 Adobe Systems Incorporated. All Rights Reserved.Utopia is a registered trademark of Adobe Systems Incorporated. EncodingScheme AdobeStandardEncoding CapHeight 692 XHeight 490 Ascender 742 Descender -230 StartCharMetrics 228 C 32 ; WX 210 ; N space ; B 0 0 0 0 ; C 33 ; WX 278 ; N exclam ; B 47 -12 231 707 ; C 34 ; WX 473 ; N quotedbl ; B 71 407 402 707 ; C 35 ; WX 560 ; N numbersign ; B 14 0 547 668 ; C 36 ; WX 560 ; N dollar ; B 38 -104 524 748 ; C 37 ; WX 887 ; N percent ; B 40 -31 847 701 ; C 38 ; WX 748 ; N ampersand ; B 45 -12 734 680 ; C 39 ; WX 252 ; N quoteright ; B 40 387 212 707 ; C 40 ; WX 365 ; N parenleft ; B 99 -135 344 699 ; C 41 ; WX 365 ; N parenright ; B 21 -135 266 699 ; C 42 ; WX 442 ; N asterisk ; B 40 315 402 707 ; C 43 ; WX 600 ; N plus ; B 58 0 542 490 ; C 44 ; WX 280 ; N comma ; B 40 -167 226 180 ; C 45 ; WX 392 ; N hyphen ; B 65 203 328 298 ; C 46 ; WX 280 ; N period ; B 48 -12 232 174 ; C 47 ; WX 378 ; N slash ; B 34 -15 344 707 ; C 48 ; WX 560 ; N zero ; B 31 -12 530 680 ; C 49 ; WX 560 ; N one ; B 102 0 459 680 ; C 50 ; WX 560 ; N two ; B 30 0 539 680 ; C 51 ; WX 560 ; N three ; B 27 -12 519 680 ; C 52 ; WX 560 ; N four ; B 19 0 533 668 ; C 53 ; WX 560 ; N five ; B 43 -12 519 668 ; C 54 ; WX 560 ; N six ; B 30 -12 537 680 ; C 55 ; WX 560 ; N seven ; B 34 -12 530 668 ; C 56 ; WX 560 ; N eight ; B 27 -12 533 680 ; C 57 ; WX 560 ; N nine ; B 34 -12 523 680 ; C 58 ; WX 280 ; N colon ; B 48 -12 232 490 ; C 59 ; WX 280 ; N semicolon ; B 40 -167 232 490 ; C 60 ; WX 600 ; N less ; B 61 5 539 493 ; C 61 ; WX 600 ; N equal ; B 58 103 542 397 ; C 62 ; WX 600 ; N greater ; B 61 5 539 493 ; C 63 ; WX 456 ; N question ; B 20 -12 433 707 ; C 64 ; WX 833 ; N at ; B 45 -15 797 707 ; C 65 ; WX 644 ; N A ; B -28 0 663 692 ; C 66 ; WX 683 ; N B ; B 33 0 645 692 ; C 67 ; WX 689 ; N C ; B 42 -15 654 707 ; C 68 ; WX 777 ; N D ; B 33 0 735 692 ; C 69 ; WX 629 ; N E ; B 33 0 604 692 ; C 70 ; WX 593 ; N F ; B 37 0 568 692 ; C 71 ; WX 726 ; N G ; B 42 -15 709 707 ; C 72 ; WX 807 ; N H ; B 33 0 774 692 ; C 73 ; WX 384 ; N I ; B 33 0 351 692 ; C 74 ; WX 386 ; N J ; B 6 -114 361 692 ; C 75 ; WX 707 ; N K ; B 33 -6 719 692 ; C 76 ; WX 585 ; N L ; B 33 0 584 692 ; C 77 ; WX 918 ; N M ; B 23 0 885 692 ; C 78 ; WX 739 ; N N ; B 25 0 719 692 ; C 79 ; WX 768 ; N O ; B 42 -15 726 707 ; C 80 ; WX 650 ; N P ; B 33 0 623 692 ; C 81 ; WX 768 ; N Q ; B 42 -193 726 707 ; C 82 ; WX 684 ; N R ; B 33 0 686 692 ; C 83 ; WX 561 ; N S ; B 42 -15 533 707 ; C 84 ; WX 624 ; N T ; B 15 0 609 692 ; C 85 ; WX 786 ; N U ; B 29 -15 757 692 ; C 86 ; WX 645 ; N V ; B -16 0 679 692 ; C 87 ; WX 933 ; N W ; B -10 0 960 692 ; C 88 ; WX 634 ; N X ; B -19 0 671 692 ; C 89 ; WX 617 ; N Y ; B -12 0 655 692 ; C 90 ; WX 614 ; N Z ; B 0 0 606 692 ; C 91 ; WX 335 ; N bracketleft ; B 123 -128 308 692 ; C 92 ; WX 379 ; N backslash ; B 34 -15 345 707 ; C 93 ; WX 335 ; N bracketright ; B 27 -128 212 692 ; C 94 ; WX 600 ; N asciicircum ; B 56 215 544 668 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 252 ; N quoteleft ; B 40 399 212 719 ; C 97 ; WX 544 ; N a ; B 41 -12 561 502 ; C 98 ; WX 605 ; N b ; B 15 -12 571 742 ; C 99 ; WX 494 ; N c ; B 34 -12 484 502 ; C 100 ; WX 605 ; N d ; B 34 -12 596 742 ; C 101 ; WX 519 ; N e ; B 34 -12 505 502 ; C 102 ; WX 342 ; N f ; B 27 0 421 742 ; L i fi ; L l fl ; C 103 ; WX 533 ; N g ; B 25 -242 546 512 ; C 104 ; WX 631 ; N h ; B 19 0 622 742 ; C 105 ; WX 316 ; N i ; B 26 0 307 720 ; C 106 ; WX 316 ; N j ; B -12 -232 260 720 ; C 107 ; WX 582 ; N k ; B 19 0 595 742 ; C 108 ; WX 309 ; N l ; B 19 0 300 742 ; C 109 ; WX 948 ; N m ; B 26 0 939 502 ; C 110 ; WX 638 ; N n ; B 26 0 629 502 ; C 111 ; WX 585 ; N o ; B 34 -12 551 502 ; C 112 ; WX 615 ; N p ; B 19 -230 581 502 ; C 113 ; WX 597 ; N q ; B 34 -230 596 502 ; C 114 ; WX 440 ; N r ; B 26 0 442 502 ; C 115 ; WX 446 ; N s ; B 38 -12 425 502 ; C 116 ; WX 370 ; N t ; B 32 -12 373 616 ; C 117 ; WX 629 ; N u ; B 23 -12 620 502 ; C 118 ; WX 520 ; N v ; B -8 0 546 490 ; C 119 ; WX 774 ; N w ; B -10 0 802 490 ; C 120 ; WX 522 ; N x ; B -15 0 550 490 ; C 121 ; WX 524 ; N y ; B -12 -242 557 490 ; C 122 ; WX 483 ; N z ; B -1 0 480 490 ; C 123 ; WX 365 ; N braceleft ; B 74 -128 325 692 ; C 124 ; WX 284 ; N bar ; B 94 -250 190 750 ; C 125 ; WX 365 ; N braceright ; B 40 -128 291 692 ; C 126 ; WX 600 ; N asciitilde ; B 50 158 551 339 ; C 160 ; WX 210 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 278 ; N exclamdown ; B 47 -217 231 502 ; C 162 ; WX 560 ; N cent ; B 39 -15 546 678 ; C 163 ; WX 560 ; N sterling ; B 21 0 555 679 ; C 164 ; WX 100 ; N fraction ; B -155 -27 255 695 ; C 165 ; WX 560 ; N yen ; B 3 0 562 668 ; C 166 ; WX 560 ; N florin ; B -40 -135 562 691 ; C 167 ; WX 566 ; N section ; B 35 -115 531 707 ; C 168 ; WX 560 ; N currency ; B 21 73 539 596 ; C 169 ; WX 252 ; N quotesingle ; B 57 407 196 707 ; C 170 ; WX 473 ; N quotedblleft ; B 40 399 433 719 ; C 171 ; WX 487 ; N guillemotleft ; B 40 37 452 464 ; C 172 ; WX 287 ; N guilsinglleft ; B 40 37 252 464 ; C 173 ; WX 287 ; N guilsinglright ; B 35 37 247 464 ; C 174 ; WX 639 ; N fi ; B 27 0 630 742 ; C 175 ; WX 639 ; N fl ; B 27 0 630 742 ; C 177 ; WX 500 ; N endash ; B 0 209 500 292 ; C 178 ; WX 510 ; N dagger ; B 35 -125 475 707 ; C 179 ; WX 486 ; N daggerdbl ; B 35 -119 451 707 ; C 180 ; WX 280 ; N periodcentered ; B 48 156 232 342 ; C 182 ; WX 552 ; N paragraph ; B 35 -101 527 692 ; C 183 ; WX 455 ; N bullet ; B 50 174 405 529 ; C 184 ; WX 252 ; N quotesinglbase ; B 40 -153 212 167 ; C 185 ; WX 473 ; N quotedblbase ; B 40 -153 433 167 ; C 186 ; WX 473 ; N quotedblright ; B 40 387 433 707 ; C 187 ; WX 487 ; N guillemotright ; B 35 37 447 464 ; C 188 ; WX 1000 ; N ellipsis ; B 75 -12 925 174 ; C 189 ; WX 1289 ; N perthousand ; B 40 -31 1249 701 ; C 191 ; WX 456 ; N questiondown ; B 23 -217 436 502 ; C 193 ; WX 430 ; N grave ; B 40 511 312 740 ; C 194 ; WX 430 ; N acute ; B 119 511 391 740 ; C 195 ; WX 430 ; N circumflex ; B 28 520 402 747 ; C 196 ; WX 430 ; N tilde ; B 2 553 427 706 ; C 197 ; WX 430 ; N macron ; B 60 587 371 674 ; C 198 ; WX 430 ; N breve ; B 56 556 375 716 ; C 199 ; WX 430 ; N dotaccent ; B 136 561 294 710 ; C 200 ; WX 430 ; N dieresis ; B 16 561 414 710 ; C 202 ; WX 430 ; N ring ; B 96 540 334 762 ; C 203 ; WX 430 ; N cedilla ; B 136 -246 335 0 ; C 205 ; WX 430 ; N hungarumlaut ; B 64 521 446 751 ; C 206 ; WX 430 ; N ogonek ; B 105 -246 325 0 ; C 207 ; WX 430 ; N caron ; B 28 520 402 747 ; C 208 ; WX 1000 ; N emdash ; B 0 209 1000 292 ; C 225 ; WX 879 ; N AE ; B -77 0 854 692 ; C 227 ; WX 405 ; N ordfeminine ; B 28 265 395 590 ; C 232 ; WX 591 ; N Lslash ; B 30 0 590 692 ; C 233 ; WX 768 ; N Oslash ; B 42 -61 726 747 ; C 234 ; WX 1049 ; N OE ; B 42 0 1024 692 ; C 235 ; WX 427 ; N ordmasculine ; B 28 265 399 590 ; C 241 ; WX 806 ; N ae ; B 41 -12 792 502 ; C 245 ; WX 316 ; N dotlessi ; B 26 0 307 502 ; C 248 ; WX 321 ; N lslash ; B 16 0 332 742 ; C 249 ; WX 585 ; N oslash ; B 34 -51 551 535 ; C 250 ; WX 866 ; N oe ; B 34 -12 852 502 ; C 251 ; WX 662 ; N germandbls ; B 29 -12 647 742 ; C -1 ; WX 402 ; N onesuperior ; B 71 272 324 680 ; C -1 ; WX 600 ; N minus ; B 58 210 542 290 ; C -1 ; WX 396 ; N degree ; B 35 360 361 680 ; C -1 ; WX 585 ; N oacute ; B 34 -12 551 755 ; C -1 ; WX 768 ; N Odieresis ; B 42 -15 726 881 ; C -1 ; WX 585 ; N odieresis ; B 34 -12 551 710 ; C -1 ; WX 629 ; N Eacute ; B 33 0 604 904 ; C -1 ; WX 629 ; N ucircumflex ; B 23 -12 620 747 ; C -1 ; WX 900 ; N onequarter ; B 73 -27 814 695 ; C -1 ; WX 600 ; N logicalnot ; B 58 95 542 397 ; C -1 ; WX 629 ; N Ecircumflex ; B 33 0 604 905 ; C -1 ; WX 900 ; N onehalf ; B 53 -27 849 695 ; C -1 ; WX 768 ; N Otilde ; B 42 -15 726 876 ; C -1 ; WX 629 ; N uacute ; B 23 -12 620 740 ; C -1 ; WX 519 ; N eacute ; B 34 -12 505 755 ; C -1 ; WX 316 ; N iacute ; B 26 0 369 740 ; C -1 ; WX 629 ; N Egrave ; B 33 0 604 904 ; C -1 ; WX 316 ; N icircumflex ; B -28 0 346 747 ; C -1 ; WX 629 ; N mu ; B 23 -242 620 502 ; C -1 ; WX 284 ; N brokenbar ; B 94 -175 190 675 ; C -1 ; WX 609 ; N thorn ; B 13 -230 575 722 ; C -1 ; WX 644 ; N Aring ; B -28 0 663 872 ; C -1 ; WX 524 ; N yacute ; B -12 -242 557 740 ; C -1 ; WX 617 ; N Ydieresis ; B -12 0 655 881 ; C -1 ; WX 1090 ; N trademark ; B 38 277 1028 692 ; C -1 ; WX 800 ; N registered ; B 36 -15 764 707 ; C -1 ; WX 585 ; N ocircumflex ; B 34 -12 551 747 ; C -1 ; WX 644 ; N Agrave ; B -28 0 663 904 ; C -1 ; WX 561 ; N Scaron ; B 42 -15 533 916 ; C -1 ; WX 786 ; N Ugrave ; B 29 -15 757 904 ; C -1 ; WX 629 ; N Edieresis ; B 33 0 604 881 ; C -1 ; WX 786 ; N Uacute ; B 29 -15 757 904 ; C -1 ; WX 585 ; N otilde ; B 34 -12 551 706 ; C -1 ; WX 638 ; N ntilde ; B 26 0 629 706 ; C -1 ; WX 524 ; N ydieresis ; B -12 -242 557 710 ; C -1 ; WX 644 ; N Aacute ; B -28 0 663 904 ; C -1 ; WX 585 ; N eth ; B 34 -12 551 742 ; C -1 ; WX 544 ; N acircumflex ; B 41 -12 561 747 ; C -1 ; WX 544 ; N aring ; B 41 -12 561 762 ; C -1 ; WX 768 ; N Ograve ; B 42 -15 726 904 ; C -1 ; WX 494 ; N ccedilla ; B 34 -246 484 502 ; C -1 ; WX 600 ; N multiply ; B 75 20 525 476 ; C -1 ; WX 600 ; N divide ; B 58 6 542 494 ; C -1 ; WX 402 ; N twosuperior ; B 29 272 382 680 ; C -1 ; WX 739 ; N Ntilde ; B 25 0 719 876 ; C -1 ; WX 629 ; N ugrave ; B 23 -12 620 740 ; C -1 ; WX 786 ; N Ucircumflex ; B 29 -15 757 905 ; C -1 ; WX 644 ; N Atilde ; B -28 0 663 876 ; C -1 ; WX 483 ; N zcaron ; B -1 0 480 747 ; C -1 ; WX 316 ; N idieresis ; B -37 0 361 710 ; C -1 ; WX 644 ; N Acircumflex ; B -28 0 663 905 ; C -1 ; WX 384 ; N Icircumflex ; B 4 0 380 905 ; C -1 ; WX 617 ; N Yacute ; B -12 0 655 904 ; C -1 ; WX 768 ; N Oacute ; B 42 -15 726 904 ; C -1 ; WX 644 ; N Adieresis ; B -28 0 663 881 ; C -1 ; WX 614 ; N Zcaron ; B 0 0 606 916 ; C -1 ; WX 544 ; N agrave ; B 41 -12 561 755 ; C -1 ; WX 402 ; N threesuperior ; B 30 265 368 680 ; C -1 ; WX 585 ; N ograve ; B 34 -12 551 755 ; C -1 ; WX 900 ; N threequarters ; B 40 -27 842 695 ; C -1 ; WX 783 ; N Eth ; B 35 0 741 692 ; C -1 ; WX 600 ; N plusminus ; B 58 0 542 549 ; C -1 ; WX 629 ; N udieresis ; B 23 -12 620 710 ; C -1 ; WX 519 ; N edieresis ; B 34 -12 505 710 ; C -1 ; WX 544 ; N aacute ; B 41 -12 561 755 ; C -1 ; WX 316 ; N igrave ; B -47 0 307 740 ; C -1 ; WX 384 ; N Idieresis ; B -13 0 397 881 ; C -1 ; WX 544 ; N adieresis ; B 41 -12 561 710 ; C -1 ; WX 384 ; N Iacute ; B 33 0 423 904 ; C -1 ; WX 800 ; N copyright ; B 36 -15 764 707 ; C -1 ; WX 384 ; N Igrave ; B -31 0 351 904 ; C -1 ; WX 689 ; N Ccedilla ; B 42 -246 654 707 ; C -1 ; WX 446 ; N scaron ; B 38 -12 425 747 ; C -1 ; WX 519 ; N egrave ; B 34 -12 505 755 ; C -1 ; WX 768 ; N Ocircumflex ; B 42 -15 726 905 ; C -1 ; WX 640 ; N Thorn ; B 33 0 622 692 ; C -1 ; WX 544 ; N atilde ; B 41 -12 561 706 ; C -1 ; WX 786 ; N Udieresis ; B 29 -15 757 881 ; C -1 ; WX 519 ; N ecircumflex ; B 34 -12 505 747 ; EndCharMetrics StartKernData StartKernPairs 685 KPX A z 25 KPX A y -40 KPX A w -42 KPX A v -48 KPX A u -18 KPX A t -12 KPX A s 6 KPX A quoteright -110 KPX A quotedblright -80 KPX A q -6 KPX A p -18 KPX A o -12 KPX A e -6 KPX A d -12 KPX A c -12 KPX A b -12 KPX A a -6 KPX A Y -64 KPX A X -18 KPX A W -54 KPX A V -70 KPX A U -40 KPX A T -58 KPX A Q -18 KPX A O -18 KPX A G -18 KPX A C -18 KPX B y -18 KPX B u -12 KPX B r -12 KPX B o -6 KPX B l -15 KPX B k -15 KPX B i -12 KPX B h -15 KPX B e -6 KPX B b -10 KPX B a -12 KPX B W -20 KPX B V -20 KPX B U -25 KPX B T -20 KPX C z -5 KPX C y -24 KPX C u -18 KPX C r -6 KPX C o -12 KPX C e -12 KPX C a -16 KPX C Q -6 KPX C O -6 KPX C G -6 KPX C C -6 KPX D u -12 KPX D r -12 KPX D period -40 KPX D o -5 KPX D i -12 KPX D h -18 KPX D e -5 KPX D comma -40 KPX D a -15 KPX D Y -60 KPX D W -40 KPX D V -40 KPX E y -30 KPX E w -24 KPX E v -24 KPX E u -12 KPX E t -18 KPX E s -12 KPX E r -4 KPX E q -6 KPX E period 10 KPX E p -18 KPX E o -6 KPX E n -4 KPX E m -4 KPX E j -6 KPX E i -6 KPX E g -6 KPX E e -6 KPX E d -6 KPX E comma 10 KPX E c -6 KPX E b -5 KPX E a -4 KPX E Y -6 KPX E W -6 KPX E V -6 KPX F y -18 KPX F u -12 KPX F r -36 KPX F quoteright 20 KPX F quotedblright 20 KPX F period -150 KPX F o -36 KPX F l -12 KPX F i -22 KPX F e -36 KPX F comma -150 KPX F a -48 KPX F A -60 KPX G y -12 KPX G u -12 KPX G r -18 KPX G quotedblright -20 KPX G n -18 KPX G l -6 KPX G i -12 KPX G h -12 KPX G a -12 KPX H y -24 KPX H u -26 KPX H o -30 KPX H i -18 KPX H e -30 KPX H a -25 KPX I z -6 KPX I y -6 KPX I x -6 KPX I w -18 KPX I v -24 KPX I u -26 KPX I t -24 KPX I s -18 KPX I r -12 KPX I p -26 KPX I o -30 KPX I n -18 KPX I m -18 KPX I l -6 KPX I k -6 KPX I h -6 KPX I g -6 KPX I f -6 KPX I e -30 KPX I d -30 KPX I c -30 KPX I b -6 KPX I a -24 KPX J y -20 KPX J u -36 KPX J o -35 KPX J i -20 KPX J e -35 KPX J bracketright 15 KPX J braceright 15 KPX J a -36 KPX K y -70 KPX K w -60 KPX K v -80 KPX K u -42 KPX K o -30 KPX K l 10 KPX K i 6 KPX K h 10 KPX K e -18 KPX K a -6 KPX K Q -36 KPX K O -36 KPX K G -36 KPX K C -36 KPX K A 20 KPX L y -52 KPX L w -58 KPX L u -12 KPX L quoteright -130 KPX L quotedblright -130 KPX L l 6 KPX L j -6 KPX L Y -70 KPX L W -78 KPX L V -95 KPX L U -32 KPX L T -80 KPX L Q -12 KPX L O -12 KPX L G -12 KPX L C -12 KPX L A 30 KPX M y -24 KPX M u -36 KPX M o -30 KPX M n -6 KPX M j -12 KPX M i -12 KPX M e -30 KPX M d -30 KPX M c -30 KPX M a -25 KPX N y -24 KPX N u -30 KPX N o -30 KPX N i -24 KPX N e -30 KPX N a -30 KPX O z -6 KPX O u -6 KPX O t -6 KPX O s -6 KPX O r -10 KPX O q -6 KPX O period -40 KPX O p -10 KPX O o -6 KPX O n -10 KPX O m -10 KPX O l -15 KPX O k -15 KPX O i -6 KPX O h -15 KPX O g -6 KPX O e -6 KPX O d -6 KPX O comma -40 KPX O c -6 KPX O b -15 KPX O a -12 KPX O Y -50 KPX O X -40 KPX O W -35 KPX O V -35 KPX O T -40 KPX O A -30 KPX P y 10 KPX P u -18 KPX P t -6 KPX P s -30 KPX P r -12 KPX P quoteright 20 KPX P quotedblright 20 KPX P period -200 KPX P o -36 KPX P n -12 KPX P l -15 KPX P i -6 KPX P hyphen -30 KPX P h -15 KPX P e -36 KPX P comma -200 KPX P a -36 KPX P I -20 KPX P H -20 KPX P E -20 KPX P A -85 KPX Q u -6 KPX Q a -18 KPX Q Y -50 KPX Q X -40 KPX Q W -35 KPX Q V -35 KPX Q U -25 KPX Q T -40 KPX Q A -30 KPX R y -20 KPX R u -12 KPX R t -25 KPX R quoteright -10 KPX R quotedblright -10 KPX R o -12 KPX R e -18 KPX R a -6 KPX R Y -32 KPX R X 20 KPX R W -18 KPX R V -26 KPX R U -30 KPX R T -20 KPX R Q -10 KPX R O -10 KPX R G -10 KPX R C -10 KPX S y -35 KPX S w -30 KPX S v -40 KPX S u -24 KPX S t -24 KPX S r -10 KPX S quoteright -15 KPX S quotedblright -15 KPX S p -24 KPX S n -24 KPX S m -24 KPX S l -18 KPX S k -24 KPX S j -30 KPX S i -12 KPX S h -12 KPX S a -18 KPX T z -64 KPX T y -74 KPX T w -72 KPX T u -74 KPX T semicolon -50 KPX T s -82 KPX T r -74 KPX T quoteright 24 KPX T quotedblright 24 KPX T period -95 KPX T parenright 40 KPX T o -90 KPX T m -72 KPX T i -28 KPX T hyphen -110 KPX T endash -40 KPX T emdash -60 KPX T e -80 KPX T comma -95 KPX T bracketright 40 KPX T braceright 30 KPX T a -90 KPX T Y 12 KPX T X 10 KPX T W 15 KPX T V 6 KPX T T 30 KPX T S -12 KPX T Q -25 KPX T O -25 KPX T G -25 KPX T C -25 KPX T A -52 KPX U z -35 KPX U y -30 KPX U x -30 KPX U v -30 KPX U t -36 KPX U s -45 KPX U r -50 KPX U p -50 KPX U n -50 KPX U m -50 KPX U l -12 KPX U k -12 KPX U i -22 KPX U h -6 KPX U g -40 KPX U f -20 KPX U d -40 KPX U c -40 KPX U b -12 KPX U a -50 KPX U A -50 KPX V y -36 KPX V u -50 KPX V semicolon -45 KPX V r -75 KPX V quoteright 50 KPX V quotedblright 36 KPX V period -135 KPX V parenright 80 KPX V o -70 KPX V i 20 KPX V hyphen -90 KPX V emdash -20 KPX V e -70 KPX V comma -135 KPX V colon -45 KPX V bracketright 80 KPX V braceright 80 KPX V a -70 KPX V Q -20 KPX V O -20 KPX V G -20 KPX V C -20 KPX V A -60 KPX W y -50 KPX W u -46 KPX W t -30 KPX W semicolon -40 KPX W r -50 KPX W quoteright 40 KPX W quotedblright 24 KPX W period -100 KPX W parenright 80 KPX W o -60 KPX W m -50 KPX W i 5 KPX W hyphen -70 KPX W h 20 KPX W e -60 KPX W d -60 KPX W comma -100 KPX W colon -40 KPX W bracketright 80 KPX W braceright 70 KPX W a -75 KPX W T 30 KPX W Q -20 KPX W O -20 KPX W G -20 KPX W C -20 KPX W A -58 KPX X y -40 KPX X u -24 KPX X quoteright 15 KPX X e -6 KPX X a -6 KPX X Q -24 KPX X O -30 KPX X G -30 KPX X C -30 KPX X A 20 KPX Y v -50 KPX Y u -65 KPX Y t -46 KPX Y semicolon -37 KPX Y quoteright 50 KPX Y quotedblright 36 KPX Y q -100 KPX Y period -90 KPX Y parenright 60 KPX Y o -90 KPX Y l 25 KPX Y i 15 KPX Y hyphen -100 KPX Y endash -30 KPX Y emdash -50 KPX Y e -90 KPX Y d -90 KPX Y comma -90 KPX Y colon -60 KPX Y bracketright 80 KPX Y braceright 64 KPX Y a -80 KPX Y Y 12 KPX Y X 12 KPX Y W 12 KPX Y V 12 KPX Y T 30 KPX Y Q -40 KPX Y O -40 KPX Y G -40 KPX Y C -40 KPX Y A -55 KPX Z y -36 KPX Z w -36 KPX Z u -6 KPX Z o -12 KPX Z i -12 KPX Z e -6 KPX Z a -6 KPX Z Q -18 KPX Z O -18 KPX Z G -18 KPX Z C -18 KPX Z A 25 KPX a quoteright -45 KPX a quotedblright -40 KPX b y -15 KPX b w -20 KPX b v -20 KPX b quoteright -45 KPX b quotedblright -40 KPX b period -10 KPX b comma -10 KPX braceleft Y 64 KPX braceleft W 64 KPX braceleft V 64 KPX braceleft T 25 KPX braceleft J 50 KPX bracketleft Y 64 KPX bracketleft W 64 KPX bracketleft V 64 KPX bracketleft T 35 KPX bracketleft J 60 KPX c quoteright -5 KPX colon space -20 KPX comma space -40 KPX comma quoteright -100 KPX comma quotedblright -100 KPX d quoteright -24 KPX d quotedblright -24 KPX e z -4 KPX e quoteright -25 KPX e quotedblright -20 KPX f quotesingle 70 KPX f quoteright 68 KPX f quotedblright 68 KPX f period -10 KPX f parenright 110 KPX f comma -20 KPX f bracketright 100 KPX f braceright 80 KPX g y 20 KPX g p 20 KPX g f 20 KPX g comma 10 KPX h quoteright -60 KPX h quotedblright -60 KPX i quoteright -20 KPX i quotedblright -20 KPX j quoteright -20 KPX j quotedblright -20 KPX j period -10 KPX j comma -10 KPX k quoteright -30 KPX k quotedblright -30 KPX l quoteright -24 KPX l quotedblright -24 KPX m quoteright -60 KPX m quotedblright -60 KPX n quoteright -60 KPX n quotedblright -60 KPX o z -12 KPX o y -25 KPX o x -18 KPX o w -30 KPX o v -30 KPX o quoteright -45 KPX o quotedblright -40 KPX o period -10 KPX o comma -10 KPX p z -10 KPX p y -15 KPX p w -15 KPX p quoteright -45 KPX p quotedblright -60 KPX p period -10 KPX p comma -10 KPX parenleft Y 64 KPX parenleft W 64 KPX parenleft V 64 KPX parenleft T 50 KPX parenleft J 50 KPX period space -40 KPX period quoteright -100 KPX period quotedblright -100 KPX q quoteright -50 KPX q quotedblright -50 KPX q period -10 KPX q comma -10 KPX quotedblleft z -26 KPX quotedblleft w 10 KPX quotedblleft u -40 KPX quotedblleft t -40 KPX quotedblleft s -32 KPX quotedblleft r -40 KPX quotedblleft q -70 KPX quotedblleft p -40 KPX quotedblleft o -70 KPX quotedblleft n -40 KPX quotedblleft m -40 KPX quotedblleft g -50 KPX quotedblleft f -30 KPX quotedblleft e -70 KPX quotedblleft d -70 KPX quotedblleft c -70 KPX quotedblleft a -60 KPX quotedblleft Y 30 KPX quotedblleft X 20 KPX quotedblleft W 40 KPX quotedblleft V 40 KPX quotedblleft T 18 KPX quotedblleft J -24 KPX quotedblleft A -122 KPX quotedblright space -40 KPX quotedblright period -100 KPX quotedblright comma -100 KPX quoteleft z -26 KPX quoteleft y -5 KPX quoteleft x -5 KPX quoteleft w 5 KPX quoteleft v -5 KPX quoteleft u -25 KPX quoteleft t -25 KPX quoteleft s -40 KPX quoteleft r -40 KPX quoteleft quoteleft -30 KPX quoteleft q -70 KPX quoteleft p -40 KPX quoteleft o -70 KPX quoteleft n -40 KPX quoteleft m -40 KPX quoteleft g -50 KPX quoteleft f -10 KPX quoteleft e -70 KPX quoteleft d -70 KPX quoteleft c -70 KPX quoteleft a -60 KPX quoteleft Y 35 KPX quoteleft X 30 KPX quoteleft W 35 KPX quoteleft V 35 KPX quoteleft T 35 KPX quoteleft J -24 KPX quoteleft A -122 KPX quoteright v -20 KPX quoteright t -50 KPX quoteright space -40 KPX quoteright s -70 KPX quoteright r -42 KPX quoteright quoteright -30 KPX quoteright period -100 KPX quoteright m -42 KPX quoteright l -6 KPX quoteright d -100 KPX quoteright comma -100 KPX r z 20 KPX r y 18 KPX r x 12 KPX r w 30 KPX r v 30 KPX r u 8 KPX r t 8 KPX r semicolon 20 KPX r quoteright -20 KPX r quotedblright -10 KPX r q -6 KPX r period -60 KPX r o -6 KPX r n 8 KPX r m 8 KPX r l -10 KPX r k -10 KPX r i 8 KPX r hyphen -60 KPX r h -10 KPX r g 5 KPX r f 8 KPX r emdash -20 KPX r e -20 KPX r d -20 KPX r comma -80 KPX r colon 20 KPX r c -20 KPX s quoteright -40 KPX s quotedblright -40 KPX semicolon space -20 KPX space quotesinglbase -100 KPX space quoteleft -40 KPX space quotedblleft -40 KPX space quotedblbase -100 KPX space Y -60 KPX space W -60 KPX space V -60 KPX space T -40 KPX t period 15 KPX t comma 10 KPX u quoteright -60 KPX u quotedblright -60 KPX v semicolon 20 KPX v quoteright 5 KPX v quotedblright 10 KPX v q -15 KPX v period -75 KPX v o -15 KPX v e -15 KPX v d -15 KPX v comma -90 KPX v colon 20 KPX v c -15 KPX v a -15 KPX w semicolon 20 KPX w quoteright 15 KPX w quotedblright 20 KPX w q -10 KPX w period -60 KPX w o -10 KPX w e -10 KPX w d -10 KPX w comma -68 KPX w colon 20 KPX w c -10 KPX x quoteright -25 KPX x quotedblright -20 KPX x q -6 KPX x o -6 KPX x e -12 KPX x d -12 KPX x c -12 KPX y semicolon 20 KPX y quoteright 5 KPX y quotedblright 10 KPX y period -72 KPX y hyphen -20 KPX y comma -72 KPX y colon 20 KPX z quoteright -20 KPX z quotedblright -20 KPX z o -6 KPX z e -6 KPX z d -6 KPX z c -6 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/PMW-Music.utr0000644000222100022210000001371114541067540015156 0ustar ph10ph10# This file contains translations from Unicode code points to some of the 256 # code points in the PMW-Music PostScript font that is part of the PMW music # typesetting application. Only a subset of the PMW font's characters have # Unicode equivalents. The names in upper case are Unicode names. # It seems that Unicode has code points for notes and their accents only for # notes with stems up and accents below. PMW accents are positioned above, so # mapping the Unicode code points to them isn't strictly correct. # Created by Philip Hazel, June 2020 1D11E 33 MUSICAL SYMBOL G CLEF 1D122 34 MUSICAL SYMBOL F CLEF 1D121 35 MUSICAL SYMBOL C CLEF 1D1AF 36 MUSICAL SYMBOL PEDAL UP MARK 0266F 37 MUSIC SHARP SIGN 1D12A 38 MUSICAL SYMBOL DOUBLE SHARP 0266D 39 MUSIC FLAT SIGN 0266E 40 MUSIC NATURAL SIGN 1D110 41 MUSICAL SYMBOL FERMATA 1D13A 42 MUSICAL SYMBOL MULTI REST (breve rest) 1D13B 43 MUSICAL SYMBOL WHOLE REST (semibreve rest) 1D13C 44 MUSICAL SYMBOL HALF REST (minim rest) 1D13D 45 MUSICAL SYMBOL QUARTER REST (crotchet rest) 1D13E 46 MUSICAL SYMBOL EIGHTH REST (quaver rest) 1D111 47 MUSICAL SYMBOL FERMATA BELOW 1D129 48 MUSICAL SYMBOL MULTIPLE MEASURE REST 1D15C 49 MUSICAL SYMBOL BREVE 1D15D 50 MUSICAL SYMBOL WHOLE NOTE (semibreve) 1D15E 51 MUSICAL SYMBOL HALF NOTE (minim, stem up) # 52 (minim, stem down) 1D15F 53 MUSICAL SYMBOL QUARTER NOTE (crotchet, stem up) # 53 (crotchet, stem down) 1D160 55 MUSICAL SYMBOL EIGHTH NOTE (quaver, stem up) # 56 (quaver, stem down) 1D161 57 MUSICAL SYMBOL SIXTEENTH NOTE (semiquaver, stem up) # 58 (semiquaver, stem down) # 59 (up semiquaver tail) # 60 (down semiquaver tail) # 61 (ledger line) # 62 (dot above note) # 63 (horizontal dot) 1D100 64 MUSICAL SYMBOL SINGLE BARLINE 1D101 65 MUSICAL SYMBOL DOUBLE BARLINE # 66 (thick barline) 1D11A 67 MUSICAL SYMBOL FIVE-LINE STAFF 1D116 68 MUSICAL SYMBOL ONE-LINE STAFF 1D16E 69 MUSICAL SYMBOL COMBINING FLAG-1 (up quaver tail) # 70 (long 5-line stave) # 71 (long 1-line stave) # 72 (down quaver tail) # 73 (repeat dots) 1D165 74 MUSICAL SYMBOL COMBINING STEM (upward note stem) # 75 (downward note stem) 1D158 76 MUSICAL SYMBOL NOTEHEAD BLACK 1D157 77 MUSICAL SYMBOL VOID NOTEHEAD (minim notehead) 1D112 78 MUSICAL SYMBOL BREATH MARK (comma) # 79 (mordent) # 80 (double mordent) # 81 (inverted mordent) # 82 (double inverted mordent) 1D197 83 MUSICAL SYMBOL TURN 1D17D 84 MUSICAL SYMBOL COMBINING TENUTO 1D181 85 MUSICAL SYMBOL COMBINING ACCENT-STACCATO (stress accent) 1D113 86 MUSICAL SYMBOL CAESURA 1D19C 87 MUSICAL SYMBOL ORNAMENT STROKE-2 (hat accent, above) # 88 (inverted hat accent) # 89 (staccatissimo above) 1D17E 90 MUSICAL SYMBOL COMBINING STACCATISSIMO (staccatissimo below) 1D104 91 MUSICAL SYMBOL DASHED BARLINE # 92 (single line caesura) # 93 (small figure 8) 1D134 94 MUSICAL SYMBOL COMMON TIME 1D135 95 MUSICAL SYMBOL CUT TIME # 96 (tilde for following trill) # 97 (cello thumb above) # 98 (cello thumb below) 1D10C 99 MUSICAL SYMBOL CODA 1D10B 100 MUSICAL SYMBOL SEGNO 1D1AA 101 MUSICAL SYMBOL COMBINING DOWN BOW (above note) # 102 (down bow below) 1D1AB 103 MUSICAL SYMBOL COMBINING UP BOW (above note) # 104 (up bow below) 1D199 105 MUSICAL SYMBOL TURN SLASH (inverted turn) # 106 (7 with stroke) # 107 (4 with stroke) 1D1BA 108 MUSICAL SYMBOL SEMIBREVIS BLACK (diamond crotchet notehead) 1D1B9 109 MUSICAL SYMBOL SEMIBREVIS WHITE (diamond minim notehead) # 110 (cross notehead) # 111 (upstem for cross) # 112 (downstem for cross) # 113 (upstem fragment) # 114 (downstem fragment) # 115 (6 with stroke) # 116 (dot for guitar grid) # 117 (circle for guitar grid) # 118-126 effect movement without printing anything # 127 (unassigned) # 128 (tick) # 129 (accaciatura bar for upstem) # 130 (accaciatura bar for downstem) 1D11C 131 MUSICAL SYMBOL SIX-STRING FRETBOARD (guitar grid) 1D1A0 132 MUSICAL SYMBOL ORNAMENT STROKE-6 (very short barline) # 133 (breath) # 134 (vertical ring) # 135 (cross) 1D196 136 MUSICAL SYMBOL TR (trill) # 137 (short vertical caesura) # 138 (long vertical caesura) # 139 (square bra for accidentals) # 140 (square ket for accidentals) # 141 (round bra for accidentals) # 142 (round ket for accidentals) 1D10D 143 MUSICAL SYMBOL REPEATED FIGURE-1 (bar for repetition) # 144 (dots for repetition) # 145 (vertical tilde) 1D167 146 MUSICAL SYMBOL COMBINING TREMOLO-1 (tremelo bar) 1D1C8 147 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA (circle) 1D1C9 148 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1 (cut cirle) # 149 (short slur below) # 150 (longer slur below) # 151 (arrow NE) # 152 (arrow SE) # 153 (inverted common time) # 154 (inverted cut time) # 155 (unison breve) # 156 (short line accent) # 157 (small bra for 8) # 158 (small ket for 8) # 159 (NE corner) # 160 (NW corner) # 161 (SE corner) # 162 (SW corner) 1D1AE 163 MUSICAL SYMBOL PEDAL MARK ("Ped") # 164 (vertical tilde with up arrow) # 165 (vertical tilde with down arrow) # 166 (nail symbol) # 167 (NE corner, long tail) # 168 (SE corner, long tail) 1D117 169 MUSICAL SYMBOL TWO-LINE STAFF 1D118 170 MUSICAL SYMBOL THREE-LINE STAFF 1D119 171 MUSICAL SYMBOL FOUR-LINE STAFF 1D11B 172 MUSICAL SYMBOL SIX-LINE STAFF 1D125 173 MUSICAL SYMBOL DRUM CLEF-1 (H clef) # 174 (old-style F clef) # 175 (old-style C clef) # 176 (top of system bracket) # 177 (bottom of system bracket) # 178 ("direct" symbol) # 179 (5 with stroke) # 180 (major chord sign (jazz) - up pointing triangle) # 181 (diminished chord sign - circle) # 182 (half diminished chord sign - crossed circle) # 183 (small cross for guitar grid) # 184 (thicker ledger line) # 185-188 effect movement without any printing # 189 (half sharp, Egyptian style) # 190 (half sharp, Turkish style) # 191 (half flat, Egyptian style) # 192 (half flat, Turkish style) # 193 (inverted musical comma) # 194 (teardrop accent above) # 195 (teardrop accent below) 1D198 196 MUSICAL SYMBOL INVERTED TURN (reversed turn) # 197 (reversed turn with slash) # 198 (top half circle) # 199 (bottom half circle) # 200-246 are undefined # 247-250 are long versions of 2,3,4,6-staves # 251-255 are undefined # End pmw-5.22/fontmetrics/AvantGarde-Demi.afm0000644000222100022210000011117414541067540016260 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:39:17 1997 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43085 Comment UniqueID 43085 Comment VMusage 35038 46063 FontName AvantGarde-Demi FullName ITC Avant Garde Gothic Demi FamilyName ITC Avant Garde Gothic Weight Demi ItalicAngle 0 IsFixedPitch false FontBBox -123 -251 1222 1021 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 740 XHeight 555 Ascender 740 Descender -192 StdHW 122 StdVW 133 StartCharMetrics 361 C 32 ; WX 280 ; N space ; B 0 0 0 0 ; C 33 ; WX 280 ; N exclam ; B 73 0 206 740 ; C 34 ; WX 360 ; N quotedbl ; B 19 444 341 740 ; C 35 ; WX 560 ; N numbersign ; B 29 0 525 700 ; C 36 ; WX 560 ; N dollar ; B 58 -86 501 857 ; C 37 ; WX 860 ; N percent ; B 36 -15 822 755 ; C 38 ; WX 680 ; N ampersand ; B 34 -15 665 755 ; C 39 ; WX 280 ; N quoteright ; B 72 466 205 740 ; C 40 ; WX 380 ; N parenleft ; B 74 -157 350 754 ; C 41 ; WX 380 ; N parenright ; B 37 -157 313 754 ; C 42 ; WX 440 ; N asterisk ; B 67 457 374 755 ; C 43 ; WX 600 ; N plus ; B 48 0 552 506 ; C 44 ; WX 280 ; N comma ; B 73 -141 206 133 ; C 45 ; WX 420 ; N hyphen ; B 71 230 349 348 ; C 46 ; WX 280 ; N period ; B 73 0 206 133 ; C 47 ; WX 460 ; N slash ; B 6 -100 454 740 ; C 48 ; WX 560 ; N zero ; B 32 -15 529 755 ; C 49 ; WX 560 ; N one ; B 137 0 363 740 ; C 50 ; WX 560 ; N two ; B 36 0 523 755 ; C 51 ; WX 560 ; N three ; B 28 -15 532 755 ; C 52 ; WX 560 ; N four ; B 15 0 545 740 ; C 53 ; WX 560 ; N five ; B 25 -15 535 740 ; C 54 ; WX 560 ; N six ; B 23 -15 536 739 ; C 55 ; WX 560 ; N seven ; B 62 0 498 740 ; C 56 ; WX 560 ; N eight ; B 33 -15 527 755 ; C 57 ; WX 560 ; N nine ; B 24 0 537 754 ; C 58 ; WX 280 ; N colon ; B 73 0 206 555 ; C 59 ; WX 280 ; N semicolon ; B 73 -141 206 555 ; C 60 ; WX 600 ; N less ; B 46 -8 554 514 ; C 61 ; WX 600 ; N equal ; B 48 81 552 425 ; C 62 ; WX 600 ; N greater ; B 46 -8 554 514 ; C 63 ; WX 560 ; N question ; B 38 0 491 755 ; C 64 ; WX 740 ; N at ; B 50 -12 750 712 ; C 65 ; WX 740 ; N A ; B 7 0 732 740 ; C 66 ; WX 580 ; N B ; B 70 0 551 740 ; C 67 ; WX 780 ; N C ; B 34 -15 766 755 ; C 68 ; WX 700 ; N D ; B 63 0 657 740 ; C 69 ; WX 520 ; N E ; B 61 0 459 740 ; C 70 ; WX 480 ; N F ; B 61 0 438 740 ; C 71 ; WX 840 ; N G ; B 27 -15 817 755 ; C 72 ; WX 680 ; N H ; B 71 0 610 740 ; C 73 ; WX 280 ; N I ; B 72 0 209 740 ; C 74 ; WX 480 ; N J ; B 2 -15 409 740 ; C 75 ; WX 620 ; N K ; B 89 0 620 740 ; C 76 ; WX 440 ; N L ; B 72 0 435 740 ; C 77 ; WX 900 ; N M ; B 63 0 837 740 ; C 78 ; WX 740 ; N N ; B 70 0 671 740 ; C 79 ; WX 840 ; N O ; B 33 -15 807 755 ; C 80 ; WX 560 ; N P ; B 72 0 545 740 ; C 81 ; WX 840 ; N Q ; B 32 -15 824 755 ; C 82 ; WX 580 ; N R ; B 64 0 565 740 ; C 83 ; WX 520 ; N S ; B 12 -15 493 755 ; C 84 ; WX 420 ; N T ; B 6 0 418 740 ; C 85 ; WX 640 ; N U ; B 55 -15 585 740 ; C 86 ; WX 700 ; N V ; B 8 0 695 740 ; C 87 ; WX 900 ; N W ; B 7 0 899 740 ; C 88 ; WX 680 ; N X ; B 4 0 676 740 ; C 89 ; WX 620 ; N Y ; B -2 0 622 740 ; C 90 ; WX 500 ; N Z ; B 19 0 481 740 ; C 91 ; WX 320 ; N bracketleft ; B 66 -157 284 754 ; C 92 ; WX 640 ; N backslash ; B 96 -100 544 740 ; C 93 ; WX 320 ; N bracketright ; B 36 -157 254 754 ; C 94 ; WX 600 ; N asciicircum ; B 73 375 527 740 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 280 ; N quoteleft ; B 72 466 205 740 ; C 97 ; WX 660 ; N a ; B 27 -18 613 574 ; C 98 ; WX 660 ; N b ; B 47 -18 632 740 ; C 99 ; WX 640 ; N c ; B 37 -18 610 574 ; C 100 ; WX 660 ; N d ; B 34 -18 618 740 ; C 101 ; WX 640 ; N e ; B 31 -18 610 574 ; C 102 ; WX 280 ; N f ; B 15 0 280 755 ; L i fi ; L l fl ; C 103 ; WX 660 ; N g ; B 32 -226 623 574 ; C 104 ; WX 600 ; N h ; B 54 0 546 740 ; C 105 ; WX 240 ; N i ; B 53 0 186 740 ; C 106 ; WX 260 ; N j ; B 16 -185 205 740 ; C 107 ; WX 580 ; N k ; B 80 0 571 740 ; C 108 ; WX 240 ; N l ; B 54 0 187 740 ; C 109 ; WX 940 ; N m ; B 54 0 887 574 ; C 110 ; WX 600 ; N n ; B 54 0 547 574 ; C 111 ; WX 640 ; N o ; B 25 -18 615 574 ; C 112 ; WX 660 ; N p ; B 47 -185 629 574 ; C 113 ; WX 660 ; N q ; B 31 -185 613 574 ; C 114 ; WX 320 ; N r ; B 63 0 317 574 ; C 115 ; WX 440 ; N s ; B 19 -18 421 574 ; C 116 ; WX 300 ; N t ; B 21 0 299 740 ; C 117 ; WX 600 ; N u ; B 50 -18 544 555 ; C 118 ; WX 560 ; N v ; B 3 0 556 555 ; C 119 ; WX 800 ; N w ; B 11 0 789 555 ; C 120 ; WX 560 ; N x ; B 3 0 556 555 ; C 121 ; WX 580 ; N y ; B 8 -185 571 555 ; C 122 ; WX 460 ; N z ; B 20 0 442 555 ; C 123 ; WX 340 ; N braceleft ; B -3 -191 317 747 ; C 124 ; WX 600 ; N bar ; B 233 -250 366 750 ; C 125 ; WX 340 ; N braceright ; B 23 -191 343 747 ; C 126 ; WX 600 ; N asciitilde ; B 67 160 533 347 ; C 160 ; WX 280 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 280 ; N exclamdown ; B 74 -185 207 555 ; C 162 ; WX 560 ; N cent ; B 43 39 517 715 ; C 163 ; WX 560 ; N sterling ; B -2 0 562 755 ; C 164 ; WX 160 ; N fraction ; B -123 0 282 740 ; C 165 ; WX 560 ; N yen ; B -10 0 570 740 ; C 166 ; WX 560 ; N florin ; B 0 -151 512 824 ; C 167 ; WX 560 ; N section ; B 28 -158 530 755 ; C 168 ; WX 560 ; N currency ; B 27 69 534 577 ; C 169 ; WX 220 ; N quotesingle ; B 44 444 177 740 ; C 170 ; WX 480 ; N quotedblleft ; B 70 466 410 740 ; C 171 ; WX 460 ; N guillemotleft ; B 61 108 400 469 ; C 172 ; WX 240 ; N guilsinglleft ; B 50 108 190 469 ; C 173 ; WX 240 ; N guilsinglright ; B 50 108 190 469 ; C 174 ; WX 520 ; N fi ; B 25 0 461 755 ; C 175 ; WX 520 ; N fl ; B 25 0 461 755 ; C 177 ; WX 500 ; N endash ; B 35 230 465 348 ; C 178 ; WX 560 ; N dagger ; B 51 -142 509 740 ; C 179 ; WX 560 ; N daggerdbl ; B 51 -142 509 740 ; C 180 ; WX 280 ; N periodcentered ; B 73 187 206 320 ; C 182 ; WX 600 ; N paragraph ; B -7 -103 607 740 ; C 183 ; WX 600 ; N bullet ; B 148 222 453 532 ; C 184 ; WX 280 ; N quotesinglbase ; B 72 -141 205 133 ; C 185 ; WX 480 ; N quotedblbase ; B 70 -141 410 133 ; C 186 ; WX 480 ; N quotedblright ; B 70 466 410 740 ; C 187 ; WX 460 ; N guillemotright ; B 61 108 400 469 ; C 188 ; WX 1000 ; N ellipsis ; B 100 0 899 133 ; C 189 ; WX 1280 ; N perthousand ; B 36 -15 1222 755 ; C 191 ; WX 560 ; N questiondown ; B 68 -200 521 555 ; C 193 ; WX 420 ; N grave ; B 50 624 329 851 ; C 194 ; WX 420 ; N acute ; B 89 624 368 851 ; C 195 ; WX 540 ; N circumflex ; B 71 636 470 774 ; C 196 ; WX 480 ; N tilde ; B 44 636 437 767 ; C 197 ; WX 420 ; N macron ; B 72 648 349 759 ; C 198 ; WX 480 ; N breve ; B 42 633 439 770 ; C 199 ; WX 280 ; N dotaccent ; B 74 636 207 769 ; C 200 ; WX 500 ; N dieresis ; B 78 636 422 769 ; C 202 ; WX 360 ; N ring ; B 73 619 288 834 ; C 203 ; WX 340 ; N cedilla ; B 98 -251 298 6 ; C 205 ; WX 700 ; N hungarumlaut ; B 120 610 626 849 ; C 206 ; WX 340 ; N ogonek ; B 79 -195 262 9 ; C 207 ; WX 540 ; N caron ; B 71 636 470 774 ; C 208 ; WX 1000 ; N emdash ; B 35 230 965 348 ; C 225 ; WX 900 ; N AE ; B -5 0 824 740 ; C 227 ; WX 360 ; N ordfeminine ; B 19 438 334 755 ; C 232 ; WX 480 ; N Lslash ; B 26 0 460 740 ; C 233 ; WX 840 ; N Oslash ; B 33 -71 807 814 ; C 234 ; WX 1060 ; N OE ; B 37 -15 1007 755 ; C 235 ; WX 360 ; N ordmasculine ; B 23 438 338 755 ; C 241 ; WX 1080 ; N ae ; B 29 -18 1049 574 ; C 245 ; WX 240 ; N dotlessi ; B 53 0 186 555 ; C 248 ; WX 320 ; N lslash ; B 34 0 305 740 ; C 249 ; WX 660 ; N oslash ; B 35 -50 625 608 ; C 250 ; WX 1080 ; N oe ; B 30 -18 1050 574 ; C 251 ; WX 600 ; N germandbls ; B 51 -18 585 755 ; C -1 ; WX 280 ; N Idieresis ; B -32 0 312 939 ; C -1 ; WX 640 ; N eacute ; B 31 -18 610 851 ; C -1 ; WX 660 ; N abreve ; B 27 -18 613 770 ; C -1 ; WX 600 ; N uhungarumlaut ; B 50 -18 576 849 ; C -1 ; WX 640 ; N ecaron ; B 31 -18 610 774 ; C -1 ; WX 620 ; N Ydieresis ; B -2 0 622 939 ; C -1 ; WX 600 ; N divide ; B 48 -20 552 526 ; C -1 ; WX 620 ; N Yacute ; B -2 0 622 1021 ; C -1 ; WX 740 ; N Acircumflex ; B 7 0 732 944 ; C -1 ; WX 660 ; N aacute ; B 27 -18 613 851 ; C -1 ; WX 640 ; N Ucircumflex ; B 55 -15 585 944 ; C -1 ; WX 580 ; N yacute ; B 8 -185 571 851 ; C -1 ; WX 440 ; N scommaaccent ; B 19 -229 421 574 ; C -1 ; WX 640 ; N ecircumflex ; B 31 -18 610 774 ; C -1 ; WX 640 ; N Uring ; B 55 -15 585 969 ; C -1 ; WX 640 ; N Udieresis ; B 55 -15 585 939 ; C -1 ; WX 660 ; N aogonek ; B 27 -195 613 574 ; C -1 ; WX 640 ; N Uacute ; B 55 -15 585 1021 ; C -1 ; WX 600 ; N uogonek ; B 50 -195 544 555 ; C -1 ; WX 520 ; N Edieresis ; B 61 0 459 939 ; C -1 ; WX 742 ; N Dcroat ; B 25 0 691 740 ; C -1 ; WX 351 ; N commaaccent ; B 48 -229 223 -54 ; C -1 ; WX 740 ; N copyright ; B -12 -12 752 752 ; C -1 ; WX 520 ; N Emacron ; B 61 0 459 944 ; C -1 ; WX 640 ; N ccaron ; B 37 -18 610 774 ; C -1 ; WX 660 ; N aring ; B 27 -18 613 834 ; C -1 ; WX 740 ; N Ncommaaccent ; B 70 -209 671 740 ; C -1 ; WX 240 ; N lacute ; B -1 0 278 1011 ; C -1 ; WX 660 ; N agrave ; B 27 -18 613 851 ; C -1 ; WX 420 ; N Tcommaaccent ; B 6 -229 418 740 ; C -1 ; WX 780 ; N Cacute ; B 34 -15 766 1021 ; C -1 ; WX 660 ; N atilde ; B 27 -18 613 767 ; C -1 ; WX 520 ; N Edotaccent ; B 61 0 459 954 ; C -1 ; WX 440 ; N scaron ; B 19 -18 421 774 ; C -1 ; WX 440 ; N scedilla ; B 19 -251 421 574 ; C -1 ; WX 240 ; N iacute ; B 24 0 303 851 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 580 ; N Rcaron ; B 64 0 565 959 ; C -1 ; WX 840 ; N Gcommaaccent ; B 27 -229 817 755 ; C -1 ; WX 600 ; N ucircumflex ; B 50 -18 544 774 ; C -1 ; WX 660 ; N acircumflex ; B 27 -18 613 774 ; C -1 ; WX 740 ; N Amacron ; B 7 0 732 944 ; C -1 ; WX 320 ; N rcaron ; B -39 0 360 774 ; C -1 ; WX 640 ; N ccedilla ; B 37 -251 610 574 ; C -1 ; WX 500 ; N Zdotaccent ; B 19 0 481 954 ; C -1 ; WX 560 ; N Thorn ; B 72 0 545 740 ; C -1 ; WX 840 ; N Omacron ; B 33 -15 807 944 ; C -1 ; WX 580 ; N Racute ; B 64 0 565 1021 ; C -1 ; WX 520 ; N Sacute ; B 12 -15 493 1021 ; C -1 ; WX 800 ; N dcaron ; B 34 -18 828 740 ; C -1 ; WX 640 ; N Umacron ; B 55 -15 585 944 ; C -1 ; WX 600 ; N uring ; B 50 -18 544 834 ; C -1 ; WX 336 ; N threesuperior ; B 8 287 328 749 ; C -1 ; WX 840 ; N Ograve ; B 33 -15 807 1021 ; C -1 ; WX 740 ; N Agrave ; B 7 0 732 1021 ; C -1 ; WX 740 ; N Abreve ; B 7 0 732 955 ; C -1 ; WX 600 ; N multiply ; B 59 12 541 494 ; C -1 ; WX 600 ; N uacute ; B 50 -18 544 851 ; C -1 ; WX 420 ; N Tcaron ; B 6 0 418 959 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 580 ; N ydieresis ; B 8 -185 571 769 ; C -1 ; WX 740 ; N Nacute ; B 70 0 671 1021 ; C -1 ; WX 240 ; N icircumflex ; B -79 0 320 774 ; C -1 ; WX 520 ; N Ecircumflex ; B 61 0 460 944 ; C -1 ; WX 660 ; N adieresis ; B 27 -18 613 769 ; C -1 ; WX 640 ; N edieresis ; B 31 -18 610 769 ; C -1 ; WX 640 ; N cacute ; B 37 -18 610 851 ; C -1 ; WX 600 ; N nacute ; B 54 0 547 851 ; C -1 ; WX 600 ; N umacron ; B 50 -18 544 759 ; C -1 ; WX 740 ; N Ncaron ; B 70 0 671 959 ; C -1 ; WX 280 ; N Iacute ; B 44 0 323 1021 ; C -1 ; WX 600 ; N plusminus ; B 48 -62 552 556 ; C -1 ; WX 600 ; N brokenbar ; B 233 -175 366 675 ; C -1 ; WX 740 ; N registered ; B -12 -12 752 752 ; C -1 ; WX 840 ; N Gbreve ; B 27 -15 817 955 ; C -1 ; WX 280 ; N Idotaccent ; B 72 0 209 954 ; C -1 ; WX 713 ; N summation ; B 14 -108 695 752 ; C -1 ; WX 520 ; N Egrave ; B 61 0 459 1021 ; C -1 ; WX 320 ; N racute ; B 63 0 348 851 ; C -1 ; WX 640 ; N omacron ; B 25 -18 615 759 ; C -1 ; WX 500 ; N Zacute ; B 19 0 481 1021 ; C -1 ; WX 500 ; N Zcaron ; B 19 0 481 944 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 742 ; N Eth ; B 25 0 691 740 ; C -1 ; WX 780 ; N Ccedilla ; B 34 -251 766 755 ; C -1 ; WX 240 ; N lcommaaccent ; B -7 -229 187 740 ; C -1 ; WX 400 ; N tcaron ; B 21 0 438 786 ; C -1 ; WX 640 ; N eogonek ; B 31 -195 610 574 ; C -1 ; WX 640 ; N Uogonek ; B 55 -195 585 740 ; C -1 ; WX 740 ; N Aacute ; B 7 0 732 1021 ; C -1 ; WX 740 ; N Adieresis ; B 7 0 732 939 ; C -1 ; WX 640 ; N egrave ; B 31 -18 610 851 ; C -1 ; WX 460 ; N zacute ; B 20 0 442 851 ; C -1 ; WX 240 ; N iogonek ; B -14 -195 186 740 ; C -1 ; WX 840 ; N Oacute ; B 33 -15 807 1021 ; C -1 ; WX 640 ; N oacute ; B 25 -18 615 851 ; C -1 ; WX 660 ; N amacron ; B 27 -18 613 759 ; C -1 ; WX 440 ; N sacute ; B 19 -18 421 851 ; C -1 ; WX 240 ; N idieresis ; B -52 0 292 769 ; C -1 ; WX 840 ; N Ocircumflex ; B 33 -15 807 944 ; C -1 ; WX 640 ; N Ugrave ; B 55 -15 585 1021 ; C -1 ; WX 612 ; N Delta ; B 2 0 612 692 ; C -1 ; WX 660 ; N thorn ; B 47 -185 629 740 ; C -1 ; WX 336 ; N twosuperior ; B 13 296 322 749 ; C -1 ; WX 840 ; N Odieresis ; B 33 -15 807 939 ; C -1 ; WX 576 ; N mu ; B 38 -187 539 555 ; C -1 ; WX 240 ; N igrave ; B -65 0 214 851 ; C -1 ; WX 640 ; N ohungarumlaut ; B 25 -18 615 849 ; C -1 ; WX 520 ; N Eogonek ; B 61 -195 459 740 ; C -1 ; WX 660 ; N dcroat ; B 34 -18 700 740 ; C -1 ; WX 840 ; N threequarters ; B 18 0 803 749 ; C -1 ; WX 520 ; N Scedilla ; B 12 -251 493 755 ; C -1 ; WX 380 ; N lcaron ; B 54 0 398 740 ; C -1 ; WX 620 ; N Kcommaaccent ; B 89 -209 620 740 ; C -1 ; WX 440 ; N Lacute ; B 72 0 435 1021 ; C -1 ; WX 1000 ; N trademark ; B 9 296 821 740 ; C -1 ; WX 640 ; N edotaccent ; B 31 -18 610 769 ; C -1 ; WX 280 ; N Igrave ; B -45 0 234 1021 ; C -1 ; WX 280 ; N Imacron ; B 2 0 279 944 ; C -1 ; WX 440 ; N Lcaron ; B 72 0 488 740 ; C -1 ; WX 840 ; N onehalf ; B 62 0 771 740 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 640 ; N ocircumflex ; B 25 -18 615 774 ; C -1 ; WX 600 ; N ntilde ; B 54 0 547 767 ; C -1 ; WX 640 ; N Uhungarumlaut ; B 55 -15 596 1019 ; C -1 ; WX 520 ; N Eacute ; B 61 0 459 1021 ; C -1 ; WX 640 ; N emacron ; B 31 -18 610 759 ; C -1 ; WX 660 ; N gbreve ; B 32 -226 623 770 ; C -1 ; WX 840 ; N onequarter ; B 92 0 746 740 ; C -1 ; WX 520 ; N Scaron ; B 12 -15 493 944 ; C -1 ; WX 520 ; N Scommaaccent ; B 12 -229 493 755 ; C -1 ; WX 840 ; N Ohungarumlaut ; B 33 -15 807 1019 ; C -1 ; WX 400 ; N degree ; B 57 426 343 712 ; C -1 ; WX 640 ; N ograve ; B 25 -18 615 851 ; C -1 ; WX 780 ; N Ccaron ; B 34 -15 766 959 ; C -1 ; WX 600 ; N ugrave ; B 50 -18 544 851 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 700 ; N Dcaron ; B 63 0 657 959 ; C -1 ; WX 320 ; N rcommaaccent ; B -8 -229 317 574 ; C -1 ; WX 740 ; N Ntilde ; B 70 0 671 937 ; C -1 ; WX 640 ; N otilde ; B 25 -18 615 767 ; C -1 ; WX 580 ; N Rcommaaccent ; B 64 -209 565 740 ; C -1 ; WX 440 ; N Lcommaaccent ; B 72 -229 435 740 ; C -1 ; WX 740 ; N Atilde ; B 7 0 732 937 ; C -1 ; WX 740 ; N Aogonek ; B 7 -195 732 740 ; C -1 ; WX 740 ; N Aring ; B 7 0 732 969 ; C -1 ; WX 840 ; N Otilde ; B 33 -15 807 937 ; C -1 ; WX 460 ; N zdotaccent ; B 20 0 442 769 ; C -1 ; WX 520 ; N Ecaron ; B 61 0 460 959 ; C -1 ; WX 280 ; N Iogonek ; B 11 -195 209 740 ; C -1 ; WX 580 ; N kcommaaccent ; B 80 -209 571 740 ; C -1 ; WX 600 ; N minus ; B 48 193 552 313 ; C -1 ; WX 280 ; N Icircumflex ; B -59 0 340 944 ; C -1 ; WX 600 ; N ncaron ; B 54 0 547 774 ; C -1 ; WX 300 ; N tcommaaccent ; B 21 -229 299 740 ; C -1 ; WX 600 ; N logicalnot ; B 48 108 552 425 ; C -1 ; WX 640 ; N odieresis ; B 25 -18 615 769 ; C -1 ; WX 600 ; N udieresis ; B 50 -18 544 769 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 660 ; N gcommaaccent ; B 32 -226 623 800 ; C -1 ; WX 640 ; N eth ; B 27 -18 616 754 ; C -1 ; WX 460 ; N zcaron ; B 20 0 455 774 ; C -1 ; WX 600 ; N ncommaaccent ; B 54 -209 547 574 ; C -1 ; WX 336 ; N onesuperior ; B 72 296 223 740 ; C -1 ; WX 240 ; N imacron ; B -18 0 259 759 ; C -1 ; WX 560 ; N Euro ; B -33 -11 595 750 ; C -1 ; WX 780 ; N Ccircumflex ; B 30 -13 760 950 ; C -1 ; WX 640 ; N ccircumflex ; B 30 -13 601 765 ; C -1 ; WX 780 ; N Cdotaccent ; B 30 -13 760 945 ; C -1 ; WX 640 ; N cdotaccent ; B 30 -13 601 760 ; C -1 ; WX 520 ; N Ebreve ; B 68 0 465 951 ; C -1 ; WX 640 ; N ebreve ; B 30 -13 608 766 ; C -1 ; WX 840 ; N Gcircumflex ; B 30 -13 818 950 ; C -1 ; WX 660 ; N gcircumflex ; B 30 -221 611 765 ; C -1 ; WX 840 ; N Gdotaccent ; B 30 -13 818 945 ; C -1 ; WX 660 ; N gdotaccent ; B 30 -221 611 760 ; C -1 ; WX 680 ; N Hcircumflex ; B 68 0 606 950 ; C -1 ; WX 600 ; N hcircumflex ; B 54 0 545 937 ; C -1 ; WX 680 ; N Hbar ; B 8 0 672 739 ; C -1 ; WX 600 ; N hbar ; B -16 0 545 739 ; C -1 ; WX 280 ; N Itilde ; B -29 0 302 948 ; C -1 ; WX 240 ; N itilde ; B -46 0 285 763 ; C -1 ; WX 280 ; N Ibreve ; B -28 0 302 951 ; C -1 ; WX 240 ; N ibreve ; B -45 0 285 766 ; C -1 ; WX 762 ; N IJ ; B 68 -13 687 739 ; C -1 ; WX 436 ; N ij ; B 54 -185 383 739 ; C -1 ; WX 480 ; N Jcircumflex ; B 9 -13 545 977 ; C -1 ; WX 260 ; N jcircumflex ; B -53 -185 346 768 ; C -1 ; WX 557 ; N kgreenlandic ; B 54 0 555 554 ; C -1 ; WX 440 ; N Ldot ; B 68 0 431 739 ; C -1 ; WX 520 ; N ldot ; B 54 0 445 739 ; C -1 ; WX 600 ; N napostrophe ; B 54 0 546 869 ; C -1 ; WX 740 ; N Eng ; B 68 -200 667 739 ; C -1 ; WX 600 ; N eng ; B 54 -198 546 567 ; C -1 ; WX 840 ; N Obreve ; B 30 -13 800 951 ; C -1 ; WX 640 ; N obreve ; B 30 -13 619 766 ; C -1 ; WX 520 ; N Scircumflex ; B 14 -13 493 950 ; C -1 ; WX 440 ; N scircumflex ; B 19 -13 423 765 ; C -1 ; WX 420 ; N Tbar ; B 7 0 418 739 ; C -1 ; WX 300 ; N tbar ; B 9 0 287 739 ; C -1 ; WX 420 ; N Tcedilla ; B 6 -229 418 740 ; C -1 ; WX 300 ; N tcedilla ; B 21 -229 299 740 ; C -1 ; WX 640 ; N Utilde ; B 68 -13 567 975 ; C -1 ; WX 600 ; N utilde ; B 54 -13 547 790 ; C -1 ; WX 640 ; N Ubreve ; B 68 -13 567 978 ; C -1 ; WX 600 ; N ubreve ; B 54 -13 547 793 ; C -1 ; WX 900 ; N Wcircumflex ; B 7 0 898 977 ; C -1 ; WX 800 ; N wcircumflex ; B 10 0 785 792 ; C -1 ; WX 620 ; N Ycircumflex ; B 3 0 626 977 ; C -1 ; WX 580 ; N ycircumflex ; B 6 -185 568 792 ; C -1 ; WX 280 ; N longs ; B 10 0 274 739 ; C -1 ; WX 746 ; N infinity ; B 32 108 714 513 ; EndCharMetrics StartKernData StartKernPairs 933 KPX A T -73 KPX A Tcaron -73 KPX A Tcommaaccent -73 KPX A V -127 KPX A W -96 KPX A Y -139 KPX A Yacute -139 KPX A Ydieresis -139 KPX A v -50 KPX A w -50 KPX A y -50 KPX A yacute -50 KPX A ydieresis -50 KPX Aacute T -73 KPX Aacute Tcaron -73 KPX Aacute Tcommaaccent -73 KPX Aacute V -127 KPX Aacute W -96 KPX Aacute Y -139 KPX Aacute Yacute -139 KPX Aacute Ydieresis -139 KPX Aacute v -50 KPX Aacute w -50 KPX Aacute y -50 KPX Aacute yacute -50 KPX Aacute ydieresis -50 KPX Abreve T -73 KPX Abreve Tcaron -73 KPX Abreve Tcommaaccent -73 KPX Abreve V -127 KPX Abreve W -96 KPX Abreve Y -139 KPX Abreve Yacute -139 KPX Abreve Ydieresis -139 KPX Abreve v -50 KPX Abreve w -50 KPX Abreve y -50 KPX Abreve yacute -50 KPX Abreve ydieresis -50 KPX Acircumflex T -73 KPX Acircumflex Tcaron -73 KPX Acircumflex Tcommaaccent -73 KPX Acircumflex V -127 KPX Acircumflex W -96 KPX Acircumflex Y -139 KPX Acircumflex Yacute -139 KPX Acircumflex Ydieresis -139 KPX Acircumflex v -50 KPX Acircumflex w -50 KPX Acircumflex y -50 KPX Acircumflex yacute -50 KPX Acircumflex ydieresis -50 KPX Adieresis T -73 KPX Adieresis Tcaron -73 KPX Adieresis Tcommaaccent -73 KPX Adieresis V -127 KPX Adieresis W -96 KPX Adieresis Y -139 KPX Adieresis Yacute -139 KPX Adieresis Ydieresis -139 KPX Adieresis v -50 KPX Adieresis w -50 KPX Adieresis y -50 KPX Adieresis yacute -50 KPX Adieresis ydieresis -50 KPX Agrave T -73 KPX Agrave Tcaron -73 KPX Agrave Tcommaaccent -73 KPX Agrave V -127 KPX Agrave W -96 KPX Agrave Y -139 KPX Agrave Yacute -139 KPX Agrave Ydieresis -139 KPX Agrave v -50 KPX Agrave w -50 KPX Agrave y -50 KPX Agrave yacute -50 KPX Agrave ydieresis -50 KPX Amacron T -73 KPX Amacron Tcaron -73 KPX Amacron Tcommaaccent -73 KPX Amacron V -127 KPX Amacron W -96 KPX Amacron Y -139 KPX Amacron Yacute -139 KPX Amacron Ydieresis -139 KPX Amacron v -50 KPX Amacron w -50 KPX Amacron y -50 KPX Amacron yacute -50 KPX Amacron ydieresis -50 KPX Aogonek T -73 KPX Aogonek Tcaron -73 KPX Aogonek Tcommaaccent -73 KPX Aogonek V -127 KPX Aogonek W -96 KPX Aogonek Y -139 KPX Aogonek Yacute -139 KPX Aogonek Ydieresis -139 KPX Aogonek v -50 KPX Aogonek w -50 KPX Aogonek y -50 KPX Aogonek yacute -50 KPX Aogonek ydieresis -50 KPX Aring T -73 KPX Aring Tcaron -73 KPX Aring Tcommaaccent -73 KPX Aring V -127 KPX Aring W -96 KPX Aring Y -139 KPX Aring Yacute -139 KPX Aring Ydieresis -139 KPX Aring v -50 KPX Aring w -50 KPX Aring y -50 KPX Aring yacute -50 KPX Aring ydieresis -50 KPX Atilde T -73 KPX Atilde Tcaron -73 KPX Atilde Tcommaaccent -73 KPX Atilde V -127 KPX Atilde W -96 KPX Atilde Y -139 KPX Atilde Yacute -139 KPX Atilde Ydieresis -139 KPX Atilde v -50 KPX Atilde w -50 KPX Atilde y -50 KPX Atilde yacute -50 KPX Atilde ydieresis -50 KPX F A -95 KPX F Aacute -95 KPX F Abreve -95 KPX F Acircumflex -95 KPX F Adieresis -95 KPX F Agrave -95 KPX F Amacron -95 KPX F Aogonek -95 KPX F Aring -95 KPX F Atilde -95 KPX F comma -42 KPX F period -42 KPX L T -50 KPX L Tcaron -50 KPX L Tcommaaccent -50 KPX L V -90 KPX L W -90 KPX L Y -90 KPX L Yacute -90 KPX L Ydieresis -90 KPX L y -75 KPX L yacute -75 KPX L ydieresis -75 KPX Lacute T -50 KPX Lacute Tcaron -50 KPX Lacute Tcommaaccent -50 KPX Lacute V -90 KPX Lacute W -90 KPX Lacute Y -90 KPX Lacute Yacute -90 KPX Lacute Ydieresis -90 KPX Lacute y -75 KPX Lacute yacute -75 KPX Lacute ydieresis -75 KPX Lcommaaccent T -50 KPX Lcommaaccent Tcaron -50 KPX Lcommaaccent Tcommaaccent -50 KPX Lcommaaccent V -90 KPX Lcommaaccent W -90 KPX Lcommaaccent Y -90 KPX Lcommaaccent Yacute -90 KPX Lcommaaccent Ydieresis -90 KPX Lcommaaccent y -75 KPX Lcommaaccent yacute -75 KPX Lcommaaccent ydieresis -75 KPX Lslash T -50 KPX Lslash Tcaron -50 KPX Lslash Tcommaaccent -50 KPX Lslash V -90 KPX Lslash W -90 KPX Lslash Y -90 KPX Lslash Yacute -90 KPX Lslash Ydieresis -90 KPX Lslash y -75 KPX Lslash yacute -75 KPX Lslash ydieresis -75 KPX P A -100 KPX P Aacute -100 KPX P Abreve -100 KPX P Acircumflex -100 KPX P Adieresis -100 KPX P Agrave -100 KPX P Amacron -100 KPX P Aogonek -100 KPX P Aring -100 KPX P Atilde -100 KPX P comma -16 KPX P period -16 KPX R T 16 KPX R Tcaron 16 KPX R Tcommaaccent 16 KPX R V -26 KPX R W -20 KPX R Y -20 KPX R Yacute -20 KPX R Ydieresis -20 KPX R y 31 KPX R yacute 31 KPX R ydieresis 31 KPX Racute T 16 KPX Racute Tcaron 16 KPX Racute Tcommaaccent 16 KPX Racute V -26 KPX Racute W -20 KPX Racute Y -20 KPX Racute Yacute -20 KPX Racute Ydieresis -20 KPX Racute y 31 KPX Racute yacute 31 KPX Racute ydieresis 31 KPX Rcaron T 16 KPX Rcaron Tcaron 16 KPX Rcaron Tcommaaccent 16 KPX Rcaron V -26 KPX Rcaron W -20 KPX Rcaron Y -20 KPX Rcaron Yacute -20 KPX Rcaron Ydieresis -20 KPX Rcaron y 31 KPX Rcaron yacute 31 KPX Rcaron ydieresis 31 KPX Rcommaaccent T 16 KPX Rcommaaccent Tcaron 16 KPX Rcommaaccent Tcommaaccent 16 KPX Rcommaaccent V -26 KPX Rcommaaccent W -20 KPX Rcommaaccent Y -20 KPX Rcommaaccent Yacute -20 KPX Rcommaaccent Ydieresis -20 KPX Rcommaaccent y 31 KPX Rcommaaccent yacute 31 KPX Rcommaaccent ydieresis 31 KPX T A -70 KPX T Aacute -70 KPX T Abreve -70 KPX T Acircumflex -70 KPX T Adieresis -70 KPX T Agrave -70 KPX T Amacron -70 KPX T Aogonek -70 KPX T Aring -70 KPX T Atilde -70 KPX T a -40 KPX T aacute -40 KPX T abreve -40 KPX T acircumflex -40 KPX T adieresis -40 KPX T agrave -40 KPX T amacron -40 KPX T aogonek -40 KPX T aring -40 KPX T atilde -40 KPX T c -50 KPX T cacute -50 KPX T ccaron -50 KPX T ccedilla -50 KPX T colon -12 KPX T comma 4 KPX T e -50 KPX T eacute -50 KPX T ecaron -50 KPX T ecircumflex -50 KPX T edieresis -50 KPX T edotaccent -50 KPX T egrave -50 KPX T emacron -50 KPX T eogonek -50 KPX T hyphen -10 KPX T i -5 KPX T iacute 10 KPX T icircumflex 10 KPX T idieresis 10 KPX T igrave 10 KPX T imacron 10 KPX T iogonek -5 KPX T o -50 KPX T oacute -50 KPX T ocircumflex -50 KPX T odieresis -50 KPX T ograve -50 KPX T ohungarumlaut -50 KPX T omacron -50 KPX T oslash -50 KPX T otilde -50 KPX T period 4 KPX T r -42 KPX T rcommaaccent -42 KPX T s -43 KPX T sacute -43 KPX T scedilla -43 KPX T scommaaccent -43 KPX T semicolon -12 KPX T u -56 KPX T uacute -56 KPX T ucircumflex -56 KPX T udieresis -56 KPX T ugrave -56 KPX T uhungarumlaut -56 KPX T umacron -56 KPX T uogonek -56 KPX T uring -56 KPX T w -15 KPX T y -12 KPX T yacute -12 KPX T ydieresis -12 KPX Tcaron A -70 KPX Tcaron Aacute -70 KPX Tcaron Abreve -70 KPX Tcaron Acircumflex -70 KPX Tcaron Adieresis -70 KPX Tcaron Agrave -70 KPX Tcaron Amacron -70 KPX Tcaron Aogonek -70 KPX Tcaron Aring -70 KPX Tcaron Atilde -70 KPX Tcaron a -40 KPX Tcaron aacute -40 KPX Tcaron abreve -40 KPX Tcaron acircumflex -40 KPX Tcaron adieresis -40 KPX Tcaron agrave -40 KPX Tcaron amacron -40 KPX Tcaron aogonek -40 KPX Tcaron aring -40 KPX Tcaron atilde -40 KPX Tcaron c -50 KPX Tcaron cacute -50 KPX Tcaron ccaron -50 KPX Tcaron ccedilla -50 KPX Tcaron colon -12 KPX Tcaron comma 4 KPX Tcaron e -50 KPX Tcaron eacute -50 KPX Tcaron ecaron -50 KPX Tcaron ecircumflex -50 KPX Tcaron edieresis -50 KPX Tcaron edotaccent -50 KPX Tcaron egrave -50 KPX Tcaron emacron -50 KPX Tcaron eogonek -50 KPX Tcaron hyphen -10 KPX Tcaron i -5 KPX Tcaron iacute 10 KPX Tcaron icircumflex 10 KPX Tcaron idieresis 10 KPX Tcaron igrave 10 KPX Tcaron imacron 10 KPX Tcaron iogonek -5 KPX Tcaron o -50 KPX Tcaron oacute -50 KPX Tcaron ocircumflex -50 KPX Tcaron odieresis -50 KPX Tcaron ograve -50 KPX Tcaron ohungarumlaut -50 KPX Tcaron omacron -50 KPX Tcaron oslash -50 KPX Tcaron otilde -50 KPX Tcaron period 4 KPX Tcaron r -42 KPX Tcaron racute -42 KPX Tcaron rcaron -42 KPX Tcaron rcommaaccent -42 KPX Tcaron s -43 KPX Tcaron sacute -43 KPX Tcaron scaron -43 KPX Tcaron scedilla -43 KPX Tcaron scommaaccent -43 KPX Tcaron semicolon -12 KPX Tcaron u -56 KPX Tcaron uacute -56 KPX Tcaron ucircumflex -56 KPX Tcaron udieresis -56 KPX Tcaron ugrave -56 KPX Tcaron uhungarumlaut -56 KPX Tcaron umacron -56 KPX Tcaron uogonek -56 KPX Tcaron uring -56 KPX Tcaron w -15 KPX Tcaron y -12 KPX Tcaron yacute -12 KPX Tcaron ydieresis -12 KPX Tcommaaccent A -70 KPX Tcommaaccent Aacute -70 KPX Tcommaaccent Abreve -70 KPX Tcommaaccent Acircumflex -70 KPX Tcommaaccent Adieresis -70 KPX Tcommaaccent Agrave -70 KPX Tcommaaccent Amacron -70 KPX Tcommaaccent Aogonek -70 KPX Tcommaaccent Aring -70 KPX Tcommaaccent Atilde -70 KPX Tcommaaccent a -40 KPX Tcommaaccent aacute -40 KPX Tcommaaccent abreve -40 KPX Tcommaaccent acircumflex -40 KPX Tcommaaccent adieresis -40 KPX Tcommaaccent agrave -40 KPX Tcommaaccent amacron -40 KPX Tcommaaccent aogonek -40 KPX Tcommaaccent aring -40 KPX Tcommaaccent atilde -40 KPX Tcommaaccent c -50 KPX Tcommaaccent cacute -50 KPX Tcommaaccent ccaron -50 KPX Tcommaaccent ccedilla -50 KPX Tcommaaccent colon -12 KPX Tcommaaccent comma 4 KPX Tcommaaccent e -50 KPX Tcommaaccent eacute -50 KPX Tcommaaccent ecaron -50 KPX Tcommaaccent ecircumflex -50 KPX Tcommaaccent edieresis -50 KPX Tcommaaccent edotaccent -50 KPX Tcommaaccent egrave -50 KPX Tcommaaccent emacron -50 KPX Tcommaaccent eogonek -50 KPX Tcommaaccent hyphen -10 KPX Tcommaaccent i -5 KPX Tcommaaccent iacute 10 KPX Tcommaaccent icircumflex 10 KPX Tcommaaccent idieresis 10 KPX Tcommaaccent igrave 10 KPX Tcommaaccent imacron 10 KPX Tcommaaccent iogonek -5 KPX Tcommaaccent o -50 KPX Tcommaaccent oacute -50 KPX Tcommaaccent ocircumflex -50 KPX Tcommaaccent odieresis -50 KPX Tcommaaccent ograve -50 KPX Tcommaaccent ohungarumlaut -50 KPX Tcommaaccent omacron -50 KPX Tcommaaccent oslash -50 KPX Tcommaaccent otilde -50 KPX Tcommaaccent period 4 KPX Tcommaaccent r -42 KPX Tcommaaccent racute -42 KPX Tcommaaccent rcaron -42 KPX Tcommaaccent rcommaaccent -42 KPX Tcommaaccent s -43 KPX Tcommaaccent sacute -43 KPX Tcommaaccent scaron -43 KPX Tcommaaccent scedilla -43 KPX Tcommaaccent scommaaccent -43 KPX Tcommaaccent semicolon -12 KPX Tcommaaccent u -56 KPX Tcommaaccent uacute -56 KPX Tcommaaccent ucircumflex -56 KPX Tcommaaccent udieresis -56 KPX Tcommaaccent ugrave -56 KPX Tcommaaccent uhungarumlaut -56 KPX Tcommaaccent umacron -56 KPX Tcommaaccent uogonek -56 KPX Tcommaaccent uring -56 KPX Tcommaaccent w -15 KPX Tcommaaccent y -12 KPX Tcommaaccent yacute -12 KPX Tcommaaccent ydieresis -12 KPX V A -125 KPX V Aacute -125 KPX V Abreve -125 KPX V Acircumflex -125 KPX V Adieresis -125 KPX V Agrave -125 KPX V Amacron -125 KPX V Aogonek -125 KPX V Aring -125 KPX V Atilde -125 KPX V a -80 KPX V aacute -80 KPX V abreve -80 KPX V acircumflex -80 KPX V adieresis -80 KPX V agrave -80 KPX V amacron -80 KPX V aogonek -80 KPX V aring -80 KPX V atilde -80 KPX V colon -13 KPX V comma -13 KPX V e -80 KPX V eacute -80 KPX V ecaron -80 KPX V ecircumflex -80 KPX V edieresis -80 KPX V edotaccent -80 KPX V egrave -80 KPX V emacron -80 KPX V eogonek -80 KPX V hyphen -20 KPX V i -9 KPX V iacute -9 KPX V iogonek -9 KPX V o -80 KPX V oacute -80 KPX V ocircumflex -80 KPX V odieresis -80 KPX V ograve -80 KPX V ohungarumlaut -80 KPX V omacron -80 KPX V oslash -80 KPX V otilde -80 KPX V period -13 KPX V r -40 KPX V racute -40 KPX V rcaron -40 KPX V rcommaaccent -40 KPX V semicolon -13 KPX V u -68 KPX V uacute -68 KPX V ucircumflex -68 KPX V udieresis -68 KPX V ugrave -68 KPX V uhungarumlaut -68 KPX V umacron -68 KPX V uogonek -68 KPX V uring -68 KPX V y -15 KPX V yacute -15 KPX V ydieresis -15 KPX W A -94 KPX W Aacute -94 KPX W Abreve -94 KPX W Acircumflex -94 KPX W Adieresis -94 KPX W Agrave -94 KPX W Amacron -94 KPX W Aogonek -94 KPX W Aring -94 KPX W Atilde -94 KPX W a -50 KPX W aacute -50 KPX W abreve -50 KPX W acircumflex -50 KPX W adieresis -50 KPX W agrave -50 KPX W amacron -50 KPX W aogonek -50 KPX W aring -50 KPX W atilde -50 KPX W colon -12 KPX W comma -12 KPX W e -50 KPX W eacute -50 KPX W ecaron -50 KPX W ecircumflex -50 KPX W edieresis -50 KPX W edotaccent -50 KPX W egrave -50 KPX W emacron -50 KPX W eogonek -50 KPX W hyphen -10 KPX W i -7 KPX W iacute 10 KPX W icircumflex 10 KPX W idieresis 10 KPX W igrave 10 KPX W imacron 10 KPX W iogonek -7 KPX W o -50 KPX W oacute -50 KPX W ocircumflex -50 KPX W odieresis -50 KPX W ograve -50 KPX W ohungarumlaut -50 KPX W omacron -50 KPX W oslash -50 KPX W otilde -50 KPX W period -12 KPX W r -39 KPX W racute -39 KPX W rcommaaccent -39 KPX W semicolon -12 KPX W u -40 KPX W uacute -40 KPX W ucircumflex -40 KPX W udieresis -40 KPX W ugrave -40 KPX W uhungarumlaut -40 KPX W umacron -40 KPX W uogonek -40 KPX W uring -40 KPX W y 1 KPX W yacute 1 KPX W ydieresis 1 KPX Y A -138 KPX Y Aacute -138 KPX Y Abreve -138 KPX Y Acircumflex -138 KPX Y Adieresis -138 KPX Y Agrave -138 KPX Y Amacron -138 KPX Y Aogonek -138 KPX Y Aring -138 KPX Y Atilde -138 KPX Y a -100 KPX Y aacute -100 KPX Y abreve -100 KPX Y acircumflex -100 KPX Y adieresis -100 KPX Y agrave -100 KPX Y amacron -100 KPX Y aogonek -100 KPX Y aring -100 KPX Y atilde -100 KPX Y colon -8 KPX Y comma -8 KPX Y e -100 KPX Y eacute -100 KPX Y ecaron -100 KPX Y ecircumflex -100 KPX Y edieresis -100 KPX Y edotaccent -100 KPX Y egrave -100 KPX Y emacron -100 KPX Y eogonek -100 KPX Y hyphen -60 KPX Y i -5 KPX Y iacute -5 KPX Y icircumflex 10 KPX Y idieresis 10 KPX Y igrave 10 KPX Y imacron 10 KPX Y iogonek -5 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -100 KPX Y ograve -100 KPX Y ohungarumlaut -100 KPX Y omacron -100 KPX Y oslash -100 KPX Y otilde -100 KPX Y p -60 KPX Y period -8 KPX Y q -100 KPX Y semicolon -8 KPX Y u -82 KPX Y uacute -82 KPX Y ucircumflex -82 KPX Y udieresis -82 KPX Y ugrave -82 KPX Y uhungarumlaut -82 KPX Y umacron -82 KPX Y uogonek -82 KPX Y uring -82 KPX Y v -25 KPX Yacute A -138 KPX Yacute Aacute -138 KPX Yacute Abreve -138 KPX Yacute Acircumflex -138 KPX Yacute Adieresis -138 KPX Yacute Agrave -138 KPX Yacute Amacron -138 KPX Yacute Aogonek -138 KPX Yacute Aring -138 KPX Yacute Atilde -138 KPX Yacute a -100 KPX Yacute aacute -100 KPX Yacute abreve -100 KPX Yacute acircumflex -100 KPX Yacute adieresis -100 KPX Yacute agrave -100 KPX Yacute amacron -100 KPX Yacute aogonek -100 KPX Yacute aring -100 KPX Yacute atilde -100 KPX Yacute colon -8 KPX Yacute comma -8 KPX Yacute e -100 KPX Yacute eacute -100 KPX Yacute ecaron -100 KPX Yacute ecircumflex -100 KPX Yacute edieresis -100 KPX Yacute edotaccent -100 KPX Yacute egrave -100 KPX Yacute emacron -100 KPX Yacute eogonek -100 KPX Yacute hyphen -60 KPX Yacute i -5 KPX Yacute iacute -5 KPX Yacute icircumflex 10 KPX Yacute idieresis 10 KPX Yacute igrave 10 KPX Yacute imacron 10 KPX Yacute iogonek -5 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -100 KPX Yacute ograve -100 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -100 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute p -60 KPX Yacute period -8 KPX Yacute q -100 KPX Yacute semicolon -8 KPX Yacute u -82 KPX Yacute uacute -82 KPX Yacute ucircumflex -82 KPX Yacute udieresis -82 KPX Yacute ugrave -82 KPX Yacute uhungarumlaut -82 KPX Yacute umacron -82 KPX Yacute uogonek -82 KPX Yacute uring -82 KPX Yacute v -25 KPX Ydieresis A -138 KPX Ydieresis Aacute -138 KPX Ydieresis Abreve -138 KPX Ydieresis Acircumflex -138 KPX Ydieresis Adieresis -138 KPX Ydieresis Agrave -138 KPX Ydieresis Amacron -138 KPX Ydieresis Aogonek -138 KPX Ydieresis Aring -138 KPX Ydieresis Atilde -138 KPX Ydieresis a -100 KPX Ydieresis aacute -100 KPX Ydieresis abreve -100 KPX Ydieresis acircumflex -100 KPX Ydieresis adieresis -100 KPX Ydieresis agrave -100 KPX Ydieresis amacron -100 KPX Ydieresis aogonek -100 KPX Ydieresis aring -100 KPX Ydieresis atilde -100 KPX Ydieresis colon -8 KPX Ydieresis comma -8 KPX Ydieresis e -100 KPX Ydieresis eacute -100 KPX Ydieresis ecaron -100 KPX Ydieresis ecircumflex -100 KPX Ydieresis edieresis -100 KPX Ydieresis edotaccent -100 KPX Ydieresis egrave -100 KPX Ydieresis emacron -100 KPX Ydieresis eogonek -100 KPX Ydieresis hyphen -60 KPX Ydieresis i -5 KPX Ydieresis iacute -5 KPX Ydieresis icircumflex 10 KPX Ydieresis idieresis 10 KPX Ydieresis igrave 10 KPX Ydieresis imacron 10 KPX Ydieresis iogonek -5 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -100 KPX Ydieresis ograve -100 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -100 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis p -60 KPX Ydieresis period -8 KPX Ydieresis q -100 KPX Ydieresis semicolon -8 KPX Ydieresis u -82 KPX Ydieresis uacute -82 KPX Ydieresis ucircumflex -82 KPX Ydieresis udieresis -82 KPX Ydieresis ugrave -82 KPX Ydieresis uhungarumlaut -82 KPX Ydieresis umacron -82 KPX Ydieresis uogonek -82 KPX Ydieresis uring -82 KPX Ydieresis v -25 KPX f f 38 KPX r c -27 KPX r cacute -27 KPX r ccaron -27 KPX r ccedilla -27 KPX r comma 9 KPX r d -8 KPX r dcroat -8 KPX r e -8 KPX r eacute -8 KPX r ecaron -8 KPX r ecircumflex -8 KPX r edieresis -8 KPX r edotaccent -8 KPX r egrave -8 KPX r emacron -8 KPX r eogonek -8 KPX r f 38 KPX r g -8 KPX r gbreve -8 KPX r gcommaaccent -8 KPX r hyphen -10 KPX r m 5 KPX r n 5 KPX r nacute 5 KPX r ncaron 5 KPX r ncommaaccent 5 KPX r ntilde 5 KPX r o -18 KPX r oacute -18 KPX r ocircumflex -18 KPX r odieresis -18 KPX r ograve -18 KPX r ohungarumlaut -18 KPX r omacron -18 KPX r oslash -18 KPX r otilde -18 KPX r period 9 KPX r q -18 KPX racute c -27 KPX racute cacute -27 KPX racute ccaron -27 KPX racute ccedilla -27 KPX racute comma 9 KPX racute d -8 KPX racute dcroat -8 KPX racute e -8 KPX racute eacute -8 KPX racute ecaron -8 KPX racute ecircumflex -8 KPX racute edieresis -8 KPX racute edotaccent -8 KPX racute egrave -8 KPX racute emacron -8 KPX racute eogonek -8 KPX racute f 38 KPX racute g -8 KPX racute gbreve -8 KPX racute gcommaaccent -8 KPX racute hyphen -10 KPX racute m 5 KPX racute n 5 KPX racute nacute 5 KPX racute ncaron 5 KPX racute ncommaaccent 5 KPX racute ntilde 5 KPX racute o -18 KPX racute oacute -18 KPX racute ocircumflex -18 KPX racute odieresis -18 KPX racute ograve -18 KPX racute ohungarumlaut -18 KPX racute omacron -18 KPX racute oslash -18 KPX racute otilde -18 KPX racute period 9 KPX racute q -18 KPX rcaron c -27 KPX rcaron cacute -27 KPX rcaron ccaron -27 KPX rcaron ccedilla -27 KPX rcaron comma 9 KPX rcaron d -8 KPX rcaron dcroat -8 KPX rcaron e -8 KPX rcaron eacute -8 KPX rcaron ecaron -8 KPX rcaron ecircumflex -8 KPX rcaron edieresis -8 KPX rcaron edotaccent -8 KPX rcaron egrave -8 KPX rcaron emacron -8 KPX rcaron eogonek -8 KPX rcaron f 38 KPX rcaron g -8 KPX rcaron gbreve -8 KPX rcaron gcommaaccent -8 KPX rcaron hyphen -10 KPX rcaron m 5 KPX rcaron n 5 KPX rcaron nacute 5 KPX rcaron ncaron 5 KPX rcaron ncommaaccent 5 KPX rcaron ntilde 5 KPX rcaron o -18 KPX rcaron oacute -18 KPX rcaron ocircumflex -18 KPX rcaron odieresis -18 KPX rcaron ograve -18 KPX rcaron ohungarumlaut -18 KPX rcaron omacron -18 KPX rcaron oslash -18 KPX rcaron otilde -18 KPX rcaron period 9 KPX rcaron q -18 KPX rcommaaccent c -27 KPX rcommaaccent cacute -27 KPX rcommaaccent ccaron -27 KPX rcommaaccent ccedilla -27 KPX rcommaaccent comma 9 KPX rcommaaccent d -8 KPX rcommaaccent dcroat -8 KPX rcommaaccent e -8 KPX rcommaaccent eacute -8 KPX rcommaaccent ecaron -8 KPX rcommaaccent ecircumflex -8 KPX rcommaaccent edieresis -8 KPX rcommaaccent edotaccent -8 KPX rcommaaccent egrave -8 KPX rcommaaccent emacron -8 KPX rcommaaccent eogonek -8 KPX rcommaaccent f 38 KPX rcommaaccent g -8 KPX rcommaaccent gbreve -8 KPX rcommaaccent gcommaaccent -8 KPX rcommaaccent hyphen -10 KPX rcommaaccent m 5 KPX rcommaaccent n 5 KPX rcommaaccent nacute 5 KPX rcommaaccent ncaron 5 KPX rcommaaccent ncommaaccent 5 KPX rcommaaccent ntilde 5 KPX rcommaaccent o -18 KPX rcommaaccent oacute -18 KPX rcommaaccent ocircumflex -18 KPX rcommaaccent odieresis -18 KPX rcommaaccent ograve -18 KPX rcommaaccent ohungarumlaut -18 KPX rcommaaccent omacron -18 KPX rcommaaccent oslash -18 KPX rcommaaccent otilde -18 KPX rcommaaccent period 9 KPX rcommaaccent q -18 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Helvetica-Bold.afm0000644000222100022210000021376014541067540016156 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:43:52 1997 Comment PH added entry for Euro character, copied from a different version, 19 July 2009. Comment PH added additional characters (after Euro) 18 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43052 Comment VMusage 37169 48194 FontName Helvetica-Bold FullName Helvetica Bold FamilyName Helvetica Weight Bold ItalicAngle 0 IsFixedPitch false FontBBox -170 -228 1003 962 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 718 XHeight 532 Ascender 718 Descender -207 StdHW 118 StdVW 140 StartCharMetrics 361 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 90 0 244 718 ; C 34 ; WX 474 ; N quotedbl ; B 98 447 376 718 ; C 35 ; WX 556 ; N numbersign ; B 18 0 538 698 ; C 36 ; WX 556 ; N dollar ; B 30 -115 523 775 ; C 37 ; WX 889 ; N percent ; B 28 -19 861 710 ; C 38 ; WX 722 ; N ampersand ; B 54 -19 701 718 ; C 39 ; WX 278 ; N quoteright ; B 69 445 209 718 ; C 40 ; WX 333 ; N parenleft ; B 35 -208 314 734 ; C 41 ; WX 333 ; N parenright ; B 19 -208 298 734 ; C 42 ; WX 389 ; N asterisk ; B 27 387 362 718 ; C 43 ; WX 584 ; N plus ; B 40 0 544 506 ; C 44 ; WX 278 ; N comma ; B 64 -168 214 146 ; C 45 ; WX 333 ; N hyphen ; B 27 215 306 345 ; C 46 ; WX 278 ; N period ; B 64 0 214 146 ; C 47 ; WX 278 ; N slash ; B -33 -19 311 737 ; C 48 ; WX 556 ; N zero ; B 32 -19 524 710 ; C 49 ; WX 556 ; N one ; B 69 0 378 710 ; C 50 ; WX 556 ; N two ; B 26 0 511 710 ; C 51 ; WX 556 ; N three ; B 27 -19 516 710 ; C 52 ; WX 556 ; N four ; B 27 0 526 710 ; C 53 ; WX 556 ; N five ; B 27 -19 516 698 ; C 54 ; WX 556 ; N six ; B 31 -19 520 710 ; C 55 ; WX 556 ; N seven ; B 25 0 528 698 ; C 56 ; WX 556 ; N eight ; B 32 -19 524 710 ; C 57 ; WX 556 ; N nine ; B 30 -19 522 710 ; C 58 ; WX 333 ; N colon ; B 92 0 242 512 ; C 59 ; WX 333 ; N semicolon ; B 92 -168 242 512 ; C 60 ; WX 584 ; N less ; B 38 -8 546 514 ; C 61 ; WX 584 ; N equal ; B 40 87 544 419 ; C 62 ; WX 584 ; N greater ; B 38 -8 546 514 ; C 63 ; WX 611 ; N question ; B 60 0 556 727 ; C 64 ; WX 975 ; N at ; B 118 -19 856 737 ; C 65 ; WX 722 ; N A ; B 20 0 702 718 ; C 66 ; WX 722 ; N B ; B 76 0 669 718 ; C 67 ; WX 722 ; N C ; B 44 -19 684 737 ; C 68 ; WX 722 ; N D ; B 76 0 685 718 ; C 69 ; WX 667 ; N E ; B 76 0 621 718 ; C 70 ; WX 611 ; N F ; B 76 0 587 718 ; C 71 ; WX 778 ; N G ; B 44 -19 713 737 ; C 72 ; WX 722 ; N H ; B 71 0 651 718 ; C 73 ; WX 278 ; N I ; B 64 0 214 718 ; C 74 ; WX 556 ; N J ; B 22 -18 484 718 ; C 75 ; WX 722 ; N K ; B 87 0 722 718 ; C 76 ; WX 611 ; N L ; B 76 0 583 718 ; C 77 ; WX 833 ; N M ; B 69 0 765 718 ; C 78 ; WX 722 ; N N ; B 69 0 654 718 ; C 79 ; WX 778 ; N O ; B 44 -19 734 737 ; C 80 ; WX 667 ; N P ; B 76 0 627 718 ; C 81 ; WX 778 ; N Q ; B 44 -52 737 737 ; C 82 ; WX 722 ; N R ; B 76 0 677 718 ; C 83 ; WX 667 ; N S ; B 39 -19 629 737 ; C 84 ; WX 611 ; N T ; B 14 0 598 718 ; C 85 ; WX 722 ; N U ; B 72 -19 651 718 ; C 86 ; WX 667 ; N V ; B 19 0 648 718 ; C 87 ; WX 944 ; N W ; B 16 0 929 718 ; C 88 ; WX 667 ; N X ; B 14 0 653 718 ; C 89 ; WX 667 ; N Y ; B 15 0 653 718 ; C 90 ; WX 611 ; N Z ; B 25 0 586 718 ; C 91 ; WX 333 ; N bracketleft ; B 63 -196 309 722 ; C 92 ; WX 278 ; N backslash ; B -33 -19 311 737 ; C 93 ; WX 333 ; N bracketright ; B 24 -196 270 722 ; C 94 ; WX 584 ; N asciicircum ; B 62 323 522 698 ; C 95 ; WX 556 ; N underscore ; B 0 -125 556 -75 ; C 96 ; WX 278 ; N quoteleft ; B 69 454 209 727 ; C 97 ; WX 556 ; N a ; B 29 -14 527 546 ; C 98 ; WX 611 ; N b ; B 61 -14 578 718 ; C 99 ; WX 556 ; N c ; B 34 -14 524 546 ; C 100 ; WX 611 ; N d ; B 34 -14 551 718 ; C 101 ; WX 556 ; N e ; B 23 -14 528 546 ; C 102 ; WX 333 ; N f ; B 10 0 318 727 ; L i fi ; L l fl ; C 103 ; WX 611 ; N g ; B 40 -217 553 546 ; C 104 ; WX 611 ; N h ; B 65 0 546 718 ; C 105 ; WX 278 ; N i ; B 69 0 209 725 ; C 106 ; WX 278 ; N j ; B 3 -214 209 725 ; C 107 ; WX 556 ; N k ; B 69 0 562 718 ; C 108 ; WX 278 ; N l ; B 69 0 209 718 ; C 109 ; WX 889 ; N m ; B 64 0 826 546 ; C 110 ; WX 611 ; N n ; B 65 0 546 546 ; C 111 ; WX 611 ; N o ; B 34 -14 578 546 ; C 112 ; WX 611 ; N p ; B 62 -207 578 546 ; C 113 ; WX 611 ; N q ; B 34 -207 552 546 ; C 114 ; WX 389 ; N r ; B 64 0 373 546 ; C 115 ; WX 556 ; N s ; B 30 -14 519 546 ; C 116 ; WX 333 ; N t ; B 10 -6 309 676 ; C 117 ; WX 611 ; N u ; B 66 -14 545 532 ; C 118 ; WX 556 ; N v ; B 13 0 543 532 ; C 119 ; WX 778 ; N w ; B 10 0 769 532 ; C 120 ; WX 556 ; N x ; B 15 0 541 532 ; C 121 ; WX 556 ; N y ; B 10 -214 539 532 ; C 122 ; WX 500 ; N z ; B 20 0 480 532 ; C 123 ; WX 389 ; N braceleft ; B 48 -196 365 722 ; C 124 ; WX 280 ; N bar ; B 84 -225 196 775 ; C 125 ; WX 389 ; N braceright ; B 24 -196 341 722 ; C 126 ; WX 584 ; N asciitilde ; B 61 163 523 343 ; C 160 ; WX 278 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 333 ; N exclamdown ; B 90 -186 244 532 ; C 162 ; WX 556 ; N cent ; B 34 -118 524 628 ; C 163 ; WX 556 ; N sterling ; B 28 -16 541 718 ; C 164 ; WX 167 ; N fraction ; B -170 -19 336 710 ; C 165 ; WX 556 ; N yen ; B -9 0 565 698 ; C 166 ; WX 556 ; N florin ; B -10 -210 516 737 ; C 167 ; WX 556 ; N section ; B 34 -184 522 727 ; C 168 ; WX 556 ; N currency ; B -3 76 559 636 ; C 169 ; WX 238 ; N quotesingle ; B 70 447 168 718 ; C 170 ; WX 500 ; N quotedblleft ; B 64 454 436 727 ; C 171 ; WX 556 ; N guillemotleft ; B 88 76 468 484 ; C 172 ; WX 333 ; N guilsinglleft ; B 83 76 250 484 ; C 173 ; WX 333 ; N guilsinglright ; B 83 76 250 484 ; C 174 ; WX 611 ; N fi ; B 10 0 542 727 ; C 175 ; WX 611 ; N fl ; B 10 0 542 727 ; C 177 ; WX 556 ; N endash ; B 0 227 556 333 ; C 178 ; WX 556 ; N dagger ; B 36 -171 520 718 ; C 179 ; WX 556 ; N daggerdbl ; B 36 -171 520 718 ; C 180 ; WX 278 ; N periodcentered ; B 58 172 220 334 ; C 182 ; WX 556 ; N paragraph ; B -8 -191 539 700 ; C 183 ; WX 350 ; N bullet ; B 10 194 340 524 ; C 184 ; WX 278 ; N quotesinglbase ; B 69 -146 209 127 ; C 185 ; WX 500 ; N quotedblbase ; B 64 -146 436 127 ; C 186 ; WX 500 ; N quotedblright ; B 64 445 436 718 ; C 187 ; WX 556 ; N guillemotright ; B 88 76 468 484 ; C 188 ; WX 1000 ; N ellipsis ; B 92 0 908 146 ; C 189 ; WX 1000 ; N perthousand ; B -3 -19 1003 710 ; C 191 ; WX 611 ; N questiondown ; B 55 -195 551 532 ; C 193 ; WX 333 ; N grave ; B -23 604 225 750 ; C 194 ; WX 333 ; N acute ; B 108 604 356 750 ; C 195 ; WX 333 ; N circumflex ; B -10 604 343 750 ; C 196 ; WX 333 ; N tilde ; B -17 610 350 737 ; C 197 ; WX 333 ; N macron ; B -6 604 339 678 ; C 198 ; WX 333 ; N breve ; B -2 604 335 750 ; C 199 ; WX 333 ; N dotaccent ; B 104 614 230 729 ; C 200 ; WX 333 ; N dieresis ; B 6 614 327 729 ; C 202 ; WX 333 ; N ring ; B 59 568 275 776 ; C 203 ; WX 333 ; N cedilla ; B 6 -228 245 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 9 604 486 750 ; C 206 ; WX 333 ; N ogonek ; B 71 -228 304 0 ; C 207 ; WX 333 ; N caron ; B -10 604 343 750 ; C 208 ; WX 1000 ; N emdash ; B 0 227 1000 333 ; C 225 ; WX 1000 ; N AE ; B 5 0 954 718 ; C 227 ; WX 370 ; N ordfeminine ; B 22 401 347 737 ; C 232 ; WX 611 ; N Lslash ; B -20 0 583 718 ; C 233 ; WX 778 ; N Oslash ; B 33 -27 744 745 ; C 234 ; WX 1000 ; N OE ; B 37 -19 961 737 ; C 235 ; WX 365 ; N ordmasculine ; B 6 401 360 737 ; C 241 ; WX 889 ; N ae ; B 29 -14 858 546 ; C 245 ; WX 278 ; N dotlessi ; B 69 0 209 532 ; C 248 ; WX 278 ; N lslash ; B -18 0 296 718 ; C 249 ; WX 611 ; N oslash ; B 22 -29 589 560 ; C 250 ; WX 944 ; N oe ; B 34 -14 912 546 ; C 251 ; WX 611 ; N germandbls ; B 69 -14 579 731 ; C -1 ; WX 278 ; N Idieresis ; B -21 0 300 915 ; C -1 ; WX 556 ; N eacute ; B 23 -14 528 750 ; C -1 ; WX 556 ; N abreve ; B 29 -14 527 750 ; C -1 ; WX 611 ; N uhungarumlaut ; B 66 -14 625 750 ; C -1 ; WX 556 ; N ecaron ; B 23 -14 528 750 ; C -1 ; WX 667 ; N Ydieresis ; B 15 0 653 915 ; C -1 ; WX 584 ; N divide ; B 40 -42 544 548 ; C -1 ; WX 667 ; N Yacute ; B 15 0 653 936 ; C -1 ; WX 722 ; N Acircumflex ; B 20 0 702 936 ; C -1 ; WX 556 ; N aacute ; B 29 -14 527 750 ; C -1 ; WX 722 ; N Ucircumflex ; B 72 -19 651 936 ; C -1 ; WX 556 ; N yacute ; B 10 -214 539 750 ; C -1 ; WX 556 ; N scommaaccent ; B 30 -228 519 546 ; C -1 ; WX 556 ; N ecircumflex ; B 23 -14 528 750 ; C -1 ; WX 722 ; N Uring ; B 72 -19 651 962 ; C -1 ; WX 722 ; N Udieresis ; B 72 -19 651 915 ; C -1 ; WX 556 ; N aogonek ; B 29 -224 545 546 ; C -1 ; WX 722 ; N Uacute ; B 72 -19 651 936 ; C -1 ; WX 611 ; N uogonek ; B 66 -228 545 532 ; C -1 ; WX 667 ; N Edieresis ; B 76 0 621 915 ; C -1 ; WX 722 ; N Dcroat ; B -5 0 685 718 ; C -1 ; WX 250 ; N commaaccent ; B 64 -228 199 -50 ; C -1 ; WX 737 ; N copyright ; B -11 -19 749 737 ; C -1 ; WX 667 ; N Emacron ; B 76 0 621 864 ; C -1 ; WX 556 ; N ccaron ; B 34 -14 524 750 ; C -1 ; WX 556 ; N aring ; B 29 -14 527 776 ; C -1 ; WX 722 ; N Ncommaaccent ; B 69 -228 654 718 ; C -1 ; WX 278 ; N lacute ; B 69 0 329 936 ; C -1 ; WX 556 ; N agrave ; B 29 -14 527 750 ; C -1 ; WX 611 ; N Tcommaaccent ; B 14 -228 598 718 ; C -1 ; WX 722 ; N Cacute ; B 44 -19 684 936 ; C -1 ; WX 556 ; N atilde ; B 29 -14 527 737 ; C -1 ; WX 667 ; N Edotaccent ; B 76 0 621 915 ; C -1 ; WX 556 ; N scaron ; B 30 -14 519 750 ; C -1 ; WX 556 ; N scedilla ; B 30 -228 519 546 ; C -1 ; WX 278 ; N iacute ; B 69 0 329 750 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 722 ; N Rcaron ; B 76 0 677 936 ; C -1 ; WX 778 ; N Gcommaaccent ; B 44 -228 713 737 ; C -1 ; WX 611 ; N ucircumflex ; B 66 -14 545 750 ; C -1 ; WX 556 ; N acircumflex ; B 29 -14 527 750 ; C -1 ; WX 722 ; N Amacron ; B 20 0 702 864 ; C -1 ; WX 389 ; N rcaron ; B 18 0 373 750 ; C -1 ; WX 556 ; N ccedilla ; B 34 -228 524 546 ; C -1 ; WX 611 ; N Zdotaccent ; B 25 0 586 915 ; C -1 ; WX 667 ; N Thorn ; B 76 0 627 718 ; C -1 ; WX 778 ; N Omacron ; B 44 -19 734 864 ; C -1 ; WX 722 ; N Racute ; B 76 0 677 936 ; C -1 ; WX 667 ; N Sacute ; B 39 -19 629 936 ; C -1 ; WX 743 ; N dcaron ; B 34 -14 750 718 ; C -1 ; WX 722 ; N Umacron ; B 72 -19 651 864 ; C -1 ; WX 611 ; N uring ; B 66 -14 545 776 ; C -1 ; WX 333 ; N threesuperior ; B 8 271 326 710 ; C -1 ; WX 778 ; N Ograve ; B 44 -19 734 936 ; C -1 ; WX 722 ; N Agrave ; B 20 0 702 936 ; C -1 ; WX 722 ; N Abreve ; B 20 0 702 936 ; C -1 ; WX 584 ; N multiply ; B 40 1 545 505 ; C -1 ; WX 611 ; N uacute ; B 66 -14 545 750 ; C -1 ; WX 611 ; N Tcaron ; B 14 0 598 936 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 556 ; N ydieresis ; B 10 -214 539 729 ; C -1 ; WX 722 ; N Nacute ; B 69 0 654 936 ; C -1 ; WX 278 ; N icircumflex ; B -37 0 316 750 ; C -1 ; WX 667 ; N Ecircumflex ; B 76 0 621 936 ; C -1 ; WX 556 ; N adieresis ; B 29 -14 527 729 ; C -1 ; WX 556 ; N edieresis ; B 23 -14 528 729 ; C -1 ; WX 556 ; N cacute ; B 34 -14 524 750 ; C -1 ; WX 611 ; N nacute ; B 65 0 546 750 ; C -1 ; WX 611 ; N umacron ; B 66 -14 545 678 ; C -1 ; WX 722 ; N Ncaron ; B 69 0 654 936 ; C -1 ; WX 278 ; N Iacute ; B 64 0 329 936 ; C -1 ; WX 584 ; N plusminus ; B 40 0 544 506 ; C -1 ; WX 280 ; N brokenbar ; B 84 -150 196 700 ; C -1 ; WX 737 ; N registered ; B -11 -19 748 737 ; C -1 ; WX 778 ; N Gbreve ; B 44 -19 713 936 ; C -1 ; WX 278 ; N Idotaccent ; B 64 0 214 915 ; C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 667 ; N Egrave ; B 76 0 621 936 ; C -1 ; WX 389 ; N racute ; B 64 0 384 750 ; C -1 ; WX 611 ; N omacron ; B 34 -14 578 678 ; C -1 ; WX 611 ; N Zacute ; B 25 0 586 936 ; C -1 ; WX 611 ; N Zcaron ; B 25 0 586 936 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 722 ; N Eth ; B -5 0 685 718 ; C -1 ; WX 722 ; N Ccedilla ; B 44 -228 684 737 ; C -1 ; WX 278 ; N lcommaaccent ; B 69 -228 213 718 ; C -1 ; WX 389 ; N tcaron ; B 10 -6 421 878 ; C -1 ; WX 556 ; N eogonek ; B 23 -228 528 546 ; C -1 ; WX 722 ; N Uogonek ; B 72 -228 651 718 ; C -1 ; WX 722 ; N Aacute ; B 20 0 702 936 ; C -1 ; WX 722 ; N Adieresis ; B 20 0 702 915 ; C -1 ; WX 556 ; N egrave ; B 23 -14 528 750 ; C -1 ; WX 500 ; N zacute ; B 20 0 480 750 ; C -1 ; WX 278 ; N iogonek ; B 16 -224 249 725 ; C -1 ; WX 778 ; N Oacute ; B 44 -19 734 936 ; C -1 ; WX 611 ; N oacute ; B 34 -14 578 750 ; C -1 ; WX 556 ; N amacron ; B 29 -14 527 678 ; C -1 ; WX 556 ; N sacute ; B 30 -14 519 750 ; C -1 ; WX 278 ; N idieresis ; B -21 0 300 729 ; C -1 ; WX 778 ; N Ocircumflex ; B 44 -19 734 936 ; C -1 ; WX 722 ; N Ugrave ; B 72 -19 651 936 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 611 ; N thorn ; B 62 -208 578 718 ; C -1 ; WX 333 ; N twosuperior ; B 9 283 324 710 ; C -1 ; WX 778 ; N Odieresis ; B 44 -19 734 915 ; C -1 ; WX 611 ; N mu ; B 66 -207 545 532 ; C -1 ; WX 278 ; N igrave ; B -50 0 209 750 ; C -1 ; WX 611 ; N ohungarumlaut ; B 34 -14 625 750 ; C -1 ; WX 667 ; N Eogonek ; B 76 -224 639 718 ; C -1 ; WX 611 ; N dcroat ; B 34 -14 650 718 ; C -1 ; WX 834 ; N threequarters ; B 16 -19 799 710 ; C -1 ; WX 667 ; N Scedilla ; B 39 -228 629 737 ; C -1 ; WX 400 ; N lcaron ; B 69 0 408 718 ; C -1 ; WX 722 ; N Kcommaaccent ; B 87 -228 722 718 ; C -1 ; WX 611 ; N Lacute ; B 76 0 583 936 ; C -1 ; WX 1000 ; N trademark ; B 44 306 956 718 ; C -1 ; WX 556 ; N edotaccent ; B 23 -14 528 729 ; C -1 ; WX 278 ; N Igrave ; B -50 0 214 936 ; C -1 ; WX 278 ; N Imacron ; B -33 0 312 864 ; C -1 ; WX 611 ; N Lcaron ; B 76 0 583 718 ; C -1 ; WX 834 ; N onehalf ; B 26 -19 794 710 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 611 ; N ocircumflex ; B 34 -14 578 750 ; C -1 ; WX 611 ; N ntilde ; B 65 0 546 737 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 72 -19 681 936 ; C -1 ; WX 667 ; N Eacute ; B 76 0 621 936 ; C -1 ; WX 556 ; N emacron ; B 23 -14 528 678 ; C -1 ; WX 611 ; N gbreve ; B 40 -217 553 750 ; C -1 ; WX 834 ; N onequarter ; B 26 -19 766 710 ; C -1 ; WX 667 ; N Scaron ; B 39 -19 629 936 ; C -1 ; WX 667 ; N Scommaaccent ; B 39 -228 629 737 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 44 -19 734 936 ; C -1 ; WX 400 ; N degree ; B 57 426 343 712 ; C -1 ; WX 611 ; N ograve ; B 34 -14 578 750 ; C -1 ; WX 722 ; N Ccaron ; B 44 -19 684 936 ; C -1 ; WX 611 ; N ugrave ; B 66 -14 545 750 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 722 ; N Dcaron ; B 76 0 685 936 ; C -1 ; WX 389 ; N rcommaaccent ; B 64 -228 373 546 ; C -1 ; WX 722 ; N Ntilde ; B 69 0 654 923 ; C -1 ; WX 611 ; N otilde ; B 34 -14 578 737 ; C -1 ; WX 722 ; N Rcommaaccent ; B 76 -228 677 718 ; C -1 ; WX 611 ; N Lcommaaccent ; B 76 -228 583 718 ; C -1 ; WX 722 ; N Atilde ; B 20 0 702 923 ; C -1 ; WX 722 ; N Aogonek ; B 20 -224 742 718 ; C -1 ; WX 722 ; N Aring ; B 20 0 702 962 ; C -1 ; WX 778 ; N Otilde ; B 44 -19 734 923 ; C -1 ; WX 500 ; N zdotaccent ; B 20 0 480 729 ; C -1 ; WX 667 ; N Ecaron ; B 76 0 621 936 ; C -1 ; WX 278 ; N Iogonek ; B -11 -228 222 718 ; C -1 ; WX 556 ; N kcommaaccent ; B 69 -228 562 718 ; C -1 ; WX 584 ; N minus ; B 40 197 544 309 ; C -1 ; WX 278 ; N Icircumflex ; B -37 0 316 936 ; C -1 ; WX 611 ; N ncaron ; B 65 0 546 750 ; C -1 ; WX 333 ; N tcommaaccent ; B 10 -228 309 676 ; C -1 ; WX 584 ; N logicalnot ; B 40 108 544 419 ; C -1 ; WX 611 ; N odieresis ; B 34 -14 578 729 ; C -1 ; WX 611 ; N udieresis ; B 66 -14 545 729 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 611 ; N gcommaaccent ; B 40 -217 553 850 ; C -1 ; WX 611 ; N eth ; B 34 -14 578 737 ; C -1 ; WX 500 ; N zcaron ; B 20 0 480 750 ; C -1 ; WX 611 ; N ncommaaccent ; B 65 -228 546 546 ; C -1 ; WX 333 ; N onesuperior ; B 26 283 237 710 ; C -1 ; WX 278 ; N imacron ; B -8 0 285 678 ; C -1 ; WX 556 ; N Euro ; B 0 0 0 0 ; C -1 ; WX 722 ; N Ccircumflex ; B 44 -23 685 979 ; C -1 ; WX 556 ; N ccircumflex ; B 34 -23 522 790 ; C -1 ; WX 722 ; N Cdotaccent ; B 44 -23 685 951 ; C -1 ; WX 556 ; N cdotaccent ; B 34 -23 522 762 ; C -1 ; WX 667 ; N Ebreve ; B 79 0 624 972 ; C -1 ; WX 556 ; N ebreve ; B 22 -23 525 783 ; C -1 ; WX 778 ; N Gcircumflex ; B 42 -23 711 979 ; C -1 ; WX 611 ; N gcircumflex ; B 34 -218 541 790 ; C -1 ; WX 778 ; N Gdotaccent ; B 42 -23 711 951 ; C -1 ; WX 611 ; N gdotaccent ; B 34 -218 541 762 ; C -1 ; WX 722 ; N Hcircumflex ; B 68 0 657 979 ; C -1 ; WX 611 ; N hcircumflex ; B 67 0 541 979 ; C -1 ; WX 752 ; N Hbar ; B 26 0 726 729 ; C -1 ; WX 611 ; N hbar ; B 16 0 541 729 ; C -1 ; WX 278 ; N Itilde ; B -39 0 315 957 ; C -1 ; WX 278 ; N itilde ; B -40 0 314 768 ; C -1 ; WX 278 ; N Ibreve ; B 6 0 270 972 ; C -1 ; WX 278 ; N ibreve ; B 5 0 269 783 ; C -1 ; WX 808 ; N IJ ; B 63 -23 740 729 ; C -1 ; WX 492 ; N ij ; B 67 -218 418 729 ; C -1 ; WX 556 ; N Jcircumflex ; B 24 -23 570 979 ; C -1 ; WX 278 ; N jcircumflex ; B -19 -218 299 783 ; C -1 ; WX 573 ; N kgreenlandic ; B 59 0 548 540 ; C -1 ; WX 611 ; N Ldot ; B 80 0 579 729 ; C -1 ; WX 556 ; N ldot ; B 67 0 444 729 ; C -1 ; WX 611 ; N napostrophe ; B 63 0 546 849 ; C -1 ; WX 722 ; N Eng ; B 68 -172 661 729 ; C -1 ; WX 611 ; N eng ; B 63 -187 546 549 ; C -1 ; WX 778 ; N Obreve ; B 40 -23 742 972 ; C -1 ; WX 611 ; N obreve ; B 35 -23 569 783 ; C -1 ; WX 667 ; N Scircumflex ; B 32 -23 633 979 ; C -1 ; WX 556 ; N scircumflex ; B 29 -23 520 790 ; C -1 ; WX 611 ; N Tbar ; B 14 0 598 729 ; C -1 ; WX 333 ; N tbar ; B 14 -23 302 674 ; C -1 ; WX 611 ; N Tcedilla ; B 14 -228 598 718 ; C -1 ; WX 333 ; N tcedilla ; B 10 -228 309 676 ; C -1 ; WX 722 ; N Utilde ; B 76 -23 654 957 ; C -1 ; WX 611 ; N utilde ; B 58 -23 541 768 ; C -1 ; WX 722 ; N Ubreve ; B 76 -23 654 972 ; C -1 ; WX 611 ; N ubreve ; B 58 -23 541 783 ; C -1 ; WX 944 ; N Wcircumflex ; B 13 0 932 979 ; C -1 ; WX 778 ; N wcircumflex ; B 5 0 766 790 ; C -1 ; WX 667 ; N Ycircumflex ; B 27 0 650 979 ; C -1 ; WX 556 ; N ycircumflex ; B 9 -219 538 790 ; C -1 ; WX 333 ; N longs ; B 14 0 308 729 ; C -1 ; WX 871 ; N infinity ; B 29 109 847 592 ; EndCharMetrics StartKernData StartKernPairs 2481 KPX A C -40 KPX A Cacute -40 KPX A Ccaron -40 KPX A Ccedilla -40 KPX A G -50 KPX A Gbreve -50 KPX A Gcommaaccent -50 KPX A O -40 KPX A Oacute -40 KPX A Ocircumflex -40 KPX A Odieresis -40 KPX A Ograve -40 KPX A Ohungarumlaut -40 KPX A Omacron -40 KPX A Oslash -40 KPX A Otilde -40 KPX A Q -40 KPX A T -90 KPX A Tcaron -90 KPX A Tcommaaccent -90 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -80 KPX A W -60 KPX A Y -110 KPX A Yacute -110 KPX A Ydieresis -110 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -40 KPX A w -30 KPX A y -30 KPX A yacute -30 KPX A ydieresis -30 KPX Aacute C -40 KPX Aacute Cacute -40 KPX Aacute Ccaron -40 KPX Aacute Ccedilla -40 KPX Aacute G -50 KPX Aacute Gbreve -50 KPX Aacute Gcommaaccent -50 KPX Aacute O -40 KPX Aacute Oacute -40 KPX Aacute Ocircumflex -40 KPX Aacute Odieresis -40 KPX Aacute Ograve -40 KPX Aacute Ohungarumlaut -40 KPX Aacute Omacron -40 KPX Aacute Oslash -40 KPX Aacute Otilde -40 KPX Aacute Q -40 KPX Aacute T -90 KPX Aacute Tcaron -90 KPX Aacute Tcommaaccent -90 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -80 KPX Aacute W -60 KPX Aacute Y -110 KPX Aacute Yacute -110 KPX Aacute Ydieresis -110 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -40 KPX Aacute w -30 KPX Aacute y -30 KPX Aacute yacute -30 KPX Aacute ydieresis -30 KPX Abreve C -40 KPX Abreve Cacute -40 KPX Abreve Ccaron -40 KPX Abreve Ccedilla -40 KPX Abreve G -50 KPX Abreve Gbreve -50 KPX Abreve Gcommaaccent -50 KPX Abreve O -40 KPX Abreve Oacute -40 KPX Abreve Ocircumflex -40 KPX Abreve Odieresis -40 KPX Abreve Ograve -40 KPX Abreve Ohungarumlaut -40 KPX Abreve Omacron -40 KPX Abreve Oslash -40 KPX Abreve Otilde -40 KPX Abreve Q -40 KPX Abreve T -90 KPX Abreve Tcaron -90 KPX Abreve Tcommaaccent -90 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -80 KPX Abreve W -60 KPX Abreve Y -110 KPX Abreve Yacute -110 KPX Abreve Ydieresis -110 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -40 KPX Abreve w -30 KPX Abreve y -30 KPX Abreve yacute -30 KPX Abreve ydieresis -30 KPX Acircumflex C -40 KPX Acircumflex Cacute -40 KPX Acircumflex Ccaron -40 KPX Acircumflex Ccedilla -40 KPX Acircumflex G -50 KPX Acircumflex Gbreve -50 KPX Acircumflex Gcommaaccent -50 KPX Acircumflex O -40 KPX Acircumflex Oacute -40 KPX Acircumflex Ocircumflex -40 KPX Acircumflex Odieresis -40 KPX Acircumflex Ograve -40 KPX Acircumflex Ohungarumlaut -40 KPX Acircumflex Omacron -40 KPX Acircumflex Oslash -40 KPX Acircumflex Otilde -40 KPX Acircumflex Q -40 KPX Acircumflex T -90 KPX Acircumflex Tcaron -90 KPX Acircumflex Tcommaaccent -90 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -80 KPX Acircumflex W -60 KPX Acircumflex Y -110 KPX Acircumflex Yacute -110 KPX Acircumflex Ydieresis -110 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -40 KPX Acircumflex w -30 KPX Acircumflex y -30 KPX Acircumflex yacute -30 KPX Acircumflex ydieresis -30 KPX Adieresis C -40 KPX Adieresis Cacute -40 KPX Adieresis Ccaron -40 KPX Adieresis Ccedilla -40 KPX Adieresis G -50 KPX Adieresis Gbreve -50 KPX Adieresis Gcommaaccent -50 KPX Adieresis O -40 KPX Adieresis Oacute -40 KPX Adieresis Ocircumflex -40 KPX Adieresis Odieresis -40 KPX Adieresis Ograve -40 KPX Adieresis Ohungarumlaut -40 KPX Adieresis Omacron -40 KPX Adieresis Oslash -40 KPX Adieresis Otilde -40 KPX Adieresis Q -40 KPX Adieresis T -90 KPX Adieresis Tcaron -90 KPX Adieresis Tcommaaccent -90 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -80 KPX Adieresis W -60 KPX Adieresis Y -110 KPX Adieresis Yacute -110 KPX Adieresis Ydieresis -110 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -40 KPX Adieresis w -30 KPX Adieresis y -30 KPX Adieresis yacute -30 KPX Adieresis ydieresis -30 KPX Agrave C -40 KPX Agrave Cacute -40 KPX Agrave Ccaron -40 KPX Agrave Ccedilla -40 KPX Agrave G -50 KPX Agrave Gbreve -50 KPX Agrave Gcommaaccent -50 KPX Agrave O -40 KPX Agrave Oacute -40 KPX Agrave Ocircumflex -40 KPX Agrave Odieresis -40 KPX Agrave Ograve -40 KPX Agrave Ohungarumlaut -40 KPX Agrave Omacron -40 KPX Agrave Oslash -40 KPX Agrave Otilde -40 KPX Agrave Q -40 KPX Agrave T -90 KPX Agrave Tcaron -90 KPX Agrave Tcommaaccent -90 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -80 KPX Agrave W -60 KPX Agrave Y -110 KPX Agrave Yacute -110 KPX Agrave Ydieresis -110 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -40 KPX Agrave w -30 KPX Agrave y -30 KPX Agrave yacute -30 KPX Agrave ydieresis -30 KPX Amacron C -40 KPX Amacron Cacute -40 KPX Amacron Ccaron -40 KPX Amacron Ccedilla -40 KPX Amacron G -50 KPX Amacron Gbreve -50 KPX Amacron Gcommaaccent -50 KPX Amacron O -40 KPX Amacron Oacute -40 KPX Amacron Ocircumflex -40 KPX Amacron Odieresis -40 KPX Amacron Ograve -40 KPX Amacron Ohungarumlaut -40 KPX Amacron Omacron -40 KPX Amacron Oslash -40 KPX Amacron Otilde -40 KPX Amacron Q -40 KPX Amacron T -90 KPX Amacron Tcaron -90 KPX Amacron Tcommaaccent -90 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -80 KPX Amacron W -60 KPX Amacron Y -110 KPX Amacron Yacute -110 KPX Amacron Ydieresis -110 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -40 KPX Amacron w -30 KPX Amacron y -30 KPX Amacron yacute -30 KPX Amacron ydieresis -30 KPX Aogonek C -40 KPX Aogonek Cacute -40 KPX Aogonek Ccaron -40 KPX Aogonek Ccedilla -40 KPX Aogonek G -50 KPX Aogonek Gbreve -50 KPX Aogonek Gcommaaccent -50 KPX Aogonek O -40 KPX Aogonek Oacute -40 KPX Aogonek Ocircumflex -40 KPX Aogonek Odieresis -40 KPX Aogonek Ograve -40 KPX Aogonek Ohungarumlaut -40 KPX Aogonek Omacron -40 KPX Aogonek Oslash -40 KPX Aogonek Otilde -40 KPX Aogonek Q -40 KPX Aogonek T -90 KPX Aogonek Tcaron -90 KPX Aogonek Tcommaaccent -90 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -80 KPX Aogonek W -60 KPX Aogonek Y -110 KPX Aogonek Yacute -110 KPX Aogonek Ydieresis -110 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -40 KPX Aogonek w -30 KPX Aogonek y -30 KPX Aogonek yacute -30 KPX Aogonek ydieresis -30 KPX Aring C -40 KPX Aring Cacute -40 KPX Aring Ccaron -40 KPX Aring Ccedilla -40 KPX Aring G -50 KPX Aring Gbreve -50 KPX Aring Gcommaaccent -50 KPX Aring O -40 KPX Aring Oacute -40 KPX Aring Ocircumflex -40 KPX Aring Odieresis -40 KPX Aring Ograve -40 KPX Aring Ohungarumlaut -40 KPX Aring Omacron -40 KPX Aring Oslash -40 KPX Aring Otilde -40 KPX Aring Q -40 KPX Aring T -90 KPX Aring Tcaron -90 KPX Aring Tcommaaccent -90 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -80 KPX Aring W -60 KPX Aring Y -110 KPX Aring Yacute -110 KPX Aring Ydieresis -110 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -40 KPX Aring w -30 KPX Aring y -30 KPX Aring yacute -30 KPX Aring ydieresis -30 KPX Atilde C -40 KPX Atilde Cacute -40 KPX Atilde Ccaron -40 KPX Atilde Ccedilla -40 KPX Atilde G -50 KPX Atilde Gbreve -50 KPX Atilde Gcommaaccent -50 KPX Atilde O -40 KPX Atilde Oacute -40 KPX Atilde Ocircumflex -40 KPX Atilde Odieresis -40 KPX Atilde Ograve -40 KPX Atilde Ohungarumlaut -40 KPX Atilde Omacron -40 KPX Atilde Oslash -40 KPX Atilde Otilde -40 KPX Atilde Q -40 KPX Atilde T -90 KPX Atilde Tcaron -90 KPX Atilde Tcommaaccent -90 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -80 KPX Atilde W -60 KPX Atilde Y -110 KPX Atilde Yacute -110 KPX Atilde Ydieresis -110 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -40 KPX Atilde w -30 KPX Atilde y -30 KPX Atilde yacute -30 KPX Atilde ydieresis -30 KPX B A -30 KPX B Aacute -30 KPX B Abreve -30 KPX B Acircumflex -30 KPX B Adieresis -30 KPX B Agrave -30 KPX B Amacron -30 KPX B Aogonek -30 KPX B Aring -30 KPX B Atilde -30 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -40 KPX D W -40 KPX D Y -70 KPX D Yacute -70 KPX D Ydieresis -70 KPX D comma -30 KPX D period -30 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -40 KPX Dcaron W -40 KPX Dcaron Y -70 KPX Dcaron Yacute -70 KPX Dcaron Ydieresis -70 KPX Dcaron comma -30 KPX Dcaron period -30 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -40 KPX Dcroat W -40 KPX Dcroat Y -70 KPX Dcroat Yacute -70 KPX Dcroat Ydieresis -70 KPX Dcroat comma -30 KPX Dcroat period -30 KPX F A -80 KPX F Aacute -80 KPX F Abreve -80 KPX F Acircumflex -80 KPX F Adieresis -80 KPX F Agrave -80 KPX F Amacron -80 KPX F Aogonek -80 KPX F Aring -80 KPX F Atilde -80 KPX F a -20 KPX F aacute -20 KPX F abreve -20 KPX F acircumflex -20 KPX F adieresis -20 KPX F agrave -20 KPX F amacron -20 KPX F aogonek -20 KPX F aring -20 KPX F atilde -20 KPX F comma -100 KPX F period -100 KPX J A -20 KPX J Aacute -20 KPX J Abreve -20 KPX J Acircumflex -20 KPX J Adieresis -20 KPX J Agrave -20 KPX J Amacron -20 KPX J Aogonek -20 KPX J Aring -20 KPX J Atilde -20 KPX J comma -20 KPX J period -20 KPX J u -20 KPX J uacute -20 KPX J ucircumflex -20 KPX J udieresis -20 KPX J ugrave -20 KPX J uhungarumlaut -20 KPX J umacron -20 KPX J uogonek -20 KPX J uring -20 KPX K O -30 KPX K Oacute -30 KPX K Ocircumflex -30 KPX K Odieresis -30 KPX K Ograve -30 KPX K Ohungarumlaut -30 KPX K Omacron -30 KPX K Oslash -30 KPX K Otilde -30 KPX K e -15 KPX K eacute -15 KPX K ecaron -15 KPX K ecircumflex -15 KPX K edieresis -15 KPX K edotaccent -15 KPX K egrave -15 KPX K emacron -15 KPX K eogonek -15 KPX K o -35 KPX K oacute -35 KPX K ocircumflex -35 KPX K odieresis -35 KPX K ograve -35 KPX K ohungarumlaut -35 KPX K omacron -35 KPX K oslash -35 KPX K otilde -35 KPX K u -30 KPX K uacute -30 KPX K ucircumflex -30 KPX K udieresis -30 KPX K ugrave -30 KPX K uhungarumlaut -30 KPX K umacron -30 KPX K uogonek -30 KPX K uring -30 KPX K y -40 KPX K yacute -40 KPX K ydieresis -40 KPX Kcommaaccent O -30 KPX Kcommaaccent Oacute -30 KPX Kcommaaccent Ocircumflex -30 KPX Kcommaaccent Odieresis -30 KPX Kcommaaccent Ograve -30 KPX Kcommaaccent Ohungarumlaut -30 KPX Kcommaaccent Omacron -30 KPX Kcommaaccent Oslash -30 KPX Kcommaaccent Otilde -30 KPX Kcommaaccent e -15 KPX Kcommaaccent eacute -15 KPX Kcommaaccent ecaron -15 KPX Kcommaaccent ecircumflex -15 KPX Kcommaaccent edieresis -15 KPX Kcommaaccent edotaccent -15 KPX Kcommaaccent egrave -15 KPX Kcommaaccent emacron -15 KPX Kcommaaccent eogonek -15 KPX Kcommaaccent o -35 KPX Kcommaaccent oacute -35 KPX Kcommaaccent ocircumflex -35 KPX Kcommaaccent odieresis -35 KPX Kcommaaccent ograve -35 KPX Kcommaaccent ohungarumlaut -35 KPX Kcommaaccent omacron -35 KPX Kcommaaccent oslash -35 KPX Kcommaaccent otilde -35 KPX Kcommaaccent u -30 KPX Kcommaaccent uacute -30 KPX Kcommaaccent ucircumflex -30 KPX Kcommaaccent udieresis -30 KPX Kcommaaccent ugrave -30 KPX Kcommaaccent uhungarumlaut -30 KPX Kcommaaccent umacron -30 KPX Kcommaaccent uogonek -30 KPX Kcommaaccent uring -30 KPX Kcommaaccent y -40 KPX Kcommaaccent yacute -40 KPX Kcommaaccent ydieresis -40 KPX L T -90 KPX L Tcaron -90 KPX L Tcommaaccent -90 KPX L V -110 KPX L W -80 KPX L Y -120 KPX L Yacute -120 KPX L Ydieresis -120 KPX L quotedblright -140 KPX L quoteright -140 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -90 KPX Lacute Tcaron -90 KPX Lacute Tcommaaccent -90 KPX Lacute V -110 KPX Lacute W -80 KPX Lacute Y -120 KPX Lacute Yacute -120 KPX Lacute Ydieresis -120 KPX Lacute quotedblright -140 KPX Lacute quoteright -140 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcommaaccent T -90 KPX Lcommaaccent Tcaron -90 KPX Lcommaaccent Tcommaaccent -90 KPX Lcommaaccent V -110 KPX Lcommaaccent W -80 KPX Lcommaaccent Y -120 KPX Lcommaaccent Yacute -120 KPX Lcommaaccent Ydieresis -120 KPX Lcommaaccent quotedblright -140 KPX Lcommaaccent quoteright -140 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -90 KPX Lslash Tcaron -90 KPX Lslash Tcommaaccent -90 KPX Lslash V -110 KPX Lslash W -80 KPX Lslash Y -120 KPX Lslash Yacute -120 KPX Lslash Ydieresis -120 KPX Lslash quotedblright -140 KPX Lslash quoteright -140 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX O A -50 KPX O Aacute -50 KPX O Abreve -50 KPX O Acircumflex -50 KPX O Adieresis -50 KPX O Agrave -50 KPX O Amacron -50 KPX O Aogonek -50 KPX O Aring -50 KPX O Atilde -50 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -50 KPX O X -50 KPX O Y -70 KPX O Yacute -70 KPX O Ydieresis -70 KPX O comma -40 KPX O period -40 KPX Oacute A -50 KPX Oacute Aacute -50 KPX Oacute Abreve -50 KPX Oacute Acircumflex -50 KPX Oacute Adieresis -50 KPX Oacute Agrave -50 KPX Oacute Amacron -50 KPX Oacute Aogonek -50 KPX Oacute Aring -50 KPX Oacute Atilde -50 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -50 KPX Oacute X -50 KPX Oacute Y -70 KPX Oacute Yacute -70 KPX Oacute Ydieresis -70 KPX Oacute comma -40 KPX Oacute period -40 KPX Ocircumflex A -50 KPX Ocircumflex Aacute -50 KPX Ocircumflex Abreve -50 KPX Ocircumflex Acircumflex -50 KPX Ocircumflex Adieresis -50 KPX Ocircumflex Agrave -50 KPX Ocircumflex Amacron -50 KPX Ocircumflex Aogonek -50 KPX Ocircumflex Aring -50 KPX Ocircumflex Atilde -50 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -50 KPX Ocircumflex X -50 KPX Ocircumflex Y -70 KPX Ocircumflex Yacute -70 KPX Ocircumflex Ydieresis -70 KPX Ocircumflex comma -40 KPX Ocircumflex period -40 KPX Odieresis A -50 KPX Odieresis Aacute -50 KPX Odieresis Abreve -50 KPX Odieresis Acircumflex -50 KPX Odieresis Adieresis -50 KPX Odieresis Agrave -50 KPX Odieresis Amacron -50 KPX Odieresis Aogonek -50 KPX Odieresis Aring -50 KPX Odieresis Atilde -50 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -50 KPX Odieresis X -50 KPX Odieresis Y -70 KPX Odieresis Yacute -70 KPX Odieresis Ydieresis -70 KPX Odieresis comma -40 KPX Odieresis period -40 KPX Ograve A -50 KPX Ograve Aacute -50 KPX Ograve Abreve -50 KPX Ograve Acircumflex -50 KPX Ograve Adieresis -50 KPX Ograve Agrave -50 KPX Ograve Amacron -50 KPX Ograve Aogonek -50 KPX Ograve Aring -50 KPX Ograve Atilde -50 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -50 KPX Ograve X -50 KPX Ograve Y -70 KPX Ograve Yacute -70 KPX Ograve Ydieresis -70 KPX Ograve comma -40 KPX Ograve period -40 KPX Ohungarumlaut A -50 KPX Ohungarumlaut Aacute -50 KPX Ohungarumlaut Abreve -50 KPX Ohungarumlaut Acircumflex -50 KPX Ohungarumlaut Adieresis -50 KPX Ohungarumlaut Agrave -50 KPX Ohungarumlaut Amacron -50 KPX Ohungarumlaut Aogonek -50 KPX Ohungarumlaut Aring -50 KPX Ohungarumlaut Atilde -50 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -50 KPX Ohungarumlaut X -50 KPX Ohungarumlaut Y -70 KPX Ohungarumlaut Yacute -70 KPX Ohungarumlaut Ydieresis -70 KPX Ohungarumlaut comma -40 KPX Ohungarumlaut period -40 KPX Omacron A -50 KPX Omacron Aacute -50 KPX Omacron Abreve -50 KPX Omacron Acircumflex -50 KPX Omacron Adieresis -50 KPX Omacron Agrave -50 KPX Omacron Amacron -50 KPX Omacron Aogonek -50 KPX Omacron Aring -50 KPX Omacron Atilde -50 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -50 KPX Omacron X -50 KPX Omacron Y -70 KPX Omacron Yacute -70 KPX Omacron Ydieresis -70 KPX Omacron comma -40 KPX Omacron period -40 KPX Oslash A -50 KPX Oslash Aacute -50 KPX Oslash Abreve -50 KPX Oslash Acircumflex -50 KPX Oslash Adieresis -50 KPX Oslash Agrave -50 KPX Oslash Amacron -50 KPX Oslash Aogonek -50 KPX Oslash Aring -50 KPX Oslash Atilde -50 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -50 KPX Oslash X -50 KPX Oslash Y -70 KPX Oslash Yacute -70 KPX Oslash Ydieresis -70 KPX Oslash comma -40 KPX Oslash period -40 KPX Otilde A -50 KPX Otilde Aacute -50 KPX Otilde Abreve -50 KPX Otilde Acircumflex -50 KPX Otilde Adieresis -50 KPX Otilde Agrave -50 KPX Otilde Amacron -50 KPX Otilde Aogonek -50 KPX Otilde Aring -50 KPX Otilde Atilde -50 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -50 KPX Otilde X -50 KPX Otilde Y -70 KPX Otilde Yacute -70 KPX Otilde Ydieresis -70 KPX Otilde comma -40 KPX Otilde period -40 KPX P A -100 KPX P Aacute -100 KPX P Abreve -100 KPX P Acircumflex -100 KPX P Adieresis -100 KPX P Agrave -100 KPX P Amacron -100 KPX P Aogonek -100 KPX P Aring -100 KPX P Atilde -100 KPX P a -30 KPX P aacute -30 KPX P abreve -30 KPX P acircumflex -30 KPX P adieresis -30 KPX P agrave -30 KPX P amacron -30 KPX P aogonek -30 KPX P aring -30 KPX P atilde -30 KPX P comma -120 KPX P e -30 KPX P eacute -30 KPX P ecaron -30 KPX P ecircumflex -30 KPX P edieresis -30 KPX P edotaccent -30 KPX P egrave -30 KPX P emacron -30 KPX P eogonek -30 KPX P o -40 KPX P oacute -40 KPX P ocircumflex -40 KPX P odieresis -40 KPX P ograve -40 KPX P ohungarumlaut -40 KPX P omacron -40 KPX P oslash -40 KPX P otilde -40 KPX P period -120 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX Q comma 20 KPX Q period 20 KPX R O -20 KPX R Oacute -20 KPX R Ocircumflex -20 KPX R Odieresis -20 KPX R Ograve -20 KPX R Ohungarumlaut -20 KPX R Omacron -20 KPX R Oslash -20 KPX R Otilde -20 KPX R T -20 KPX R Tcaron -20 KPX R Tcommaaccent -20 KPX R U -20 KPX R Uacute -20 KPX R Ucircumflex -20 KPX R Udieresis -20 KPX R Ugrave -20 KPX R Uhungarumlaut -20 KPX R Umacron -20 KPX R Uogonek -20 KPX R Uring -20 KPX R V -50 KPX R W -40 KPX R Y -50 KPX R Yacute -50 KPX R Ydieresis -50 KPX Racute O -20 KPX Racute Oacute -20 KPX Racute Ocircumflex -20 KPX Racute Odieresis -20 KPX Racute Ograve -20 KPX Racute Ohungarumlaut -20 KPX Racute Omacron -20 KPX Racute Oslash -20 KPX Racute Otilde -20 KPX Racute T -20 KPX Racute Tcaron -20 KPX Racute Tcommaaccent -20 KPX Racute U -20 KPX Racute Uacute -20 KPX Racute Ucircumflex -20 KPX Racute Udieresis -20 KPX Racute Ugrave -20 KPX Racute Uhungarumlaut -20 KPX Racute Umacron -20 KPX Racute Uogonek -20 KPX Racute Uring -20 KPX Racute V -50 KPX Racute W -40 KPX Racute Y -50 KPX Racute Yacute -50 KPX Racute Ydieresis -50 KPX Rcaron O -20 KPX Rcaron Oacute -20 KPX Rcaron Ocircumflex -20 KPX Rcaron Odieresis -20 KPX Rcaron Ograve -20 KPX Rcaron Ohungarumlaut -20 KPX Rcaron Omacron -20 KPX Rcaron Oslash -20 KPX Rcaron Otilde -20 KPX Rcaron T -20 KPX Rcaron Tcaron -20 KPX Rcaron Tcommaaccent -20 KPX Rcaron U -20 KPX Rcaron Uacute -20 KPX Rcaron Ucircumflex -20 KPX Rcaron Udieresis -20 KPX Rcaron Ugrave -20 KPX Rcaron Uhungarumlaut -20 KPX Rcaron Umacron -20 KPX Rcaron Uogonek -20 KPX Rcaron Uring -20 KPX Rcaron V -50 KPX Rcaron W -40 KPX Rcaron Y -50 KPX Rcaron Yacute -50 KPX Rcaron Ydieresis -50 KPX Rcommaaccent O -20 KPX Rcommaaccent Oacute -20 KPX Rcommaaccent Ocircumflex -20 KPX Rcommaaccent Odieresis -20 KPX Rcommaaccent Ograve -20 KPX Rcommaaccent Ohungarumlaut -20 KPX Rcommaaccent Omacron -20 KPX Rcommaaccent Oslash -20 KPX Rcommaaccent Otilde -20 KPX Rcommaaccent T -20 KPX Rcommaaccent Tcaron -20 KPX Rcommaaccent Tcommaaccent -20 KPX Rcommaaccent U -20 KPX Rcommaaccent Uacute -20 KPX Rcommaaccent Ucircumflex -20 KPX Rcommaaccent Udieresis -20 KPX Rcommaaccent Ugrave -20 KPX Rcommaaccent Uhungarumlaut -20 KPX Rcommaaccent Umacron -20 KPX Rcommaaccent Uogonek -20 KPX Rcommaaccent Uring -20 KPX Rcommaaccent V -50 KPX Rcommaaccent W -40 KPX Rcommaaccent Y -50 KPX Rcommaaccent Yacute -50 KPX Rcommaaccent Ydieresis -50 KPX T A -90 KPX T Aacute -90 KPX T Abreve -90 KPX T Acircumflex -90 KPX T Adieresis -90 KPX T Agrave -90 KPX T Amacron -90 KPX T Aogonek -90 KPX T Aring -90 KPX T Atilde -90 KPX T O -40 KPX T Oacute -40 KPX T Ocircumflex -40 KPX T Odieresis -40 KPX T Ograve -40 KPX T Ohungarumlaut -40 KPX T Omacron -40 KPX T Oslash -40 KPX T Otilde -40 KPX T a -80 KPX T aacute -80 KPX T abreve -80 KPX T acircumflex -80 KPX T adieresis -80 KPX T agrave -80 KPX T amacron -80 KPX T aogonek -80 KPX T aring -80 KPX T atilde -80 KPX T colon -40 KPX T comma -80 KPX T e -60 KPX T eacute -60 KPX T ecaron -60 KPX T ecircumflex -60 KPX T edieresis -60 KPX T edotaccent -60 KPX T egrave -60 KPX T emacron -60 KPX T eogonek -60 KPX T hyphen -120 KPX T o -80 KPX T oacute -80 KPX T ocircumflex -80 KPX T odieresis -80 KPX T ograve -80 KPX T ohungarumlaut -80 KPX T omacron -80 KPX T oslash -80 KPX T otilde -80 KPX T period -80 KPX T r -80 KPX T racute -80 KPX T rcommaaccent -80 KPX T semicolon -40 KPX T u -90 KPX T uacute -90 KPX T ucircumflex -90 KPX T udieresis -90 KPX T ugrave -90 KPX T uhungarumlaut -90 KPX T umacron -90 KPX T uogonek -90 KPX T uring -90 KPX T w -60 KPX T y -60 KPX T yacute -60 KPX T ydieresis -60 KPX Tcaron A -90 KPX Tcaron Aacute -90 KPX Tcaron Abreve -90 KPX Tcaron Acircumflex -90 KPX Tcaron Adieresis -90 KPX Tcaron Agrave -90 KPX Tcaron Amacron -90 KPX Tcaron Aogonek -90 KPX Tcaron Aring -90 KPX Tcaron Atilde -90 KPX Tcaron O -40 KPX Tcaron Oacute -40 KPX Tcaron Ocircumflex -40 KPX Tcaron Odieresis -40 KPX Tcaron Ograve -40 KPX Tcaron Ohungarumlaut -40 KPX Tcaron Omacron -40 KPX Tcaron Oslash -40 KPX Tcaron Otilde -40 KPX Tcaron a -80 KPX Tcaron aacute -80 KPX Tcaron abreve -80 KPX Tcaron acircumflex -80 KPX Tcaron adieresis -80 KPX Tcaron agrave -80 KPX Tcaron amacron -80 KPX Tcaron aogonek -80 KPX Tcaron aring -80 KPX Tcaron atilde -80 KPX Tcaron colon -40 KPX Tcaron comma -80 KPX Tcaron e -60 KPX Tcaron eacute -60 KPX Tcaron ecaron -60 KPX Tcaron ecircumflex -60 KPX Tcaron edieresis -60 KPX Tcaron edotaccent -60 KPX Tcaron egrave -60 KPX Tcaron emacron -60 KPX Tcaron eogonek -60 KPX Tcaron hyphen -120 KPX Tcaron o -80 KPX Tcaron oacute -80 KPX Tcaron ocircumflex -80 KPX Tcaron odieresis -80 KPX Tcaron ograve -80 KPX Tcaron ohungarumlaut -80 KPX Tcaron omacron -80 KPX Tcaron oslash -80 KPX Tcaron otilde -80 KPX Tcaron period -80 KPX Tcaron r -80 KPX Tcaron racute -80 KPX Tcaron rcommaaccent -80 KPX Tcaron semicolon -40 KPX Tcaron u -90 KPX Tcaron uacute -90 KPX Tcaron ucircumflex -90 KPX Tcaron udieresis -90 KPX Tcaron ugrave -90 KPX Tcaron uhungarumlaut -90 KPX Tcaron umacron -90 KPX Tcaron uogonek -90 KPX Tcaron uring -90 KPX Tcaron w -60 KPX Tcaron y -60 KPX Tcaron yacute -60 KPX Tcaron ydieresis -60 KPX Tcommaaccent A -90 KPX Tcommaaccent Aacute -90 KPX Tcommaaccent Abreve -90 KPX Tcommaaccent Acircumflex -90 KPX Tcommaaccent Adieresis -90 KPX Tcommaaccent Agrave -90 KPX Tcommaaccent Amacron -90 KPX Tcommaaccent Aogonek -90 KPX Tcommaaccent Aring -90 KPX Tcommaaccent Atilde -90 KPX Tcommaaccent O -40 KPX Tcommaaccent Oacute -40 KPX Tcommaaccent Ocircumflex -40 KPX Tcommaaccent Odieresis -40 KPX Tcommaaccent Ograve -40 KPX Tcommaaccent Ohungarumlaut -40 KPX Tcommaaccent Omacron -40 KPX Tcommaaccent Oslash -40 KPX Tcommaaccent Otilde -40 KPX Tcommaaccent a -80 KPX Tcommaaccent aacute -80 KPX Tcommaaccent abreve -80 KPX Tcommaaccent acircumflex -80 KPX Tcommaaccent adieresis -80 KPX Tcommaaccent agrave -80 KPX Tcommaaccent amacron -80 KPX Tcommaaccent aogonek -80 KPX Tcommaaccent aring -80 KPX Tcommaaccent atilde -80 KPX Tcommaaccent colon -40 KPX Tcommaaccent comma -80 KPX Tcommaaccent e -60 KPX Tcommaaccent eacute -60 KPX Tcommaaccent ecaron -60 KPX Tcommaaccent ecircumflex -60 KPX Tcommaaccent edieresis -60 KPX Tcommaaccent edotaccent -60 KPX Tcommaaccent egrave -60 KPX Tcommaaccent emacron -60 KPX Tcommaaccent eogonek -60 KPX Tcommaaccent hyphen -120 KPX Tcommaaccent o -80 KPX Tcommaaccent oacute -80 KPX Tcommaaccent ocircumflex -80 KPX Tcommaaccent odieresis -80 KPX Tcommaaccent ograve -80 KPX Tcommaaccent ohungarumlaut -80 KPX Tcommaaccent omacron -80 KPX Tcommaaccent oslash -80 KPX Tcommaaccent otilde -80 KPX Tcommaaccent period -80 KPX Tcommaaccent r -80 KPX Tcommaaccent racute -80 KPX Tcommaaccent rcommaaccent -80 KPX Tcommaaccent semicolon -40 KPX Tcommaaccent u -90 KPX Tcommaaccent uacute -90 KPX Tcommaaccent ucircumflex -90 KPX Tcommaaccent udieresis -90 KPX Tcommaaccent ugrave -90 KPX Tcommaaccent uhungarumlaut -90 KPX Tcommaaccent umacron -90 KPX Tcommaaccent uogonek -90 KPX Tcommaaccent uring -90 KPX Tcommaaccent w -60 KPX Tcommaaccent y -60 KPX Tcommaaccent yacute -60 KPX Tcommaaccent ydieresis -60 KPX U A -50 KPX U Aacute -50 KPX U Abreve -50 KPX U Acircumflex -50 KPX U Adieresis -50 KPX U Agrave -50 KPX U Amacron -50 KPX U Aogonek -50 KPX U Aring -50 KPX U Atilde -50 KPX U comma -30 KPX U period -30 KPX Uacute A -50 KPX Uacute Aacute -50 KPX Uacute Abreve -50 KPX Uacute Acircumflex -50 KPX Uacute Adieresis -50 KPX Uacute Agrave -50 KPX Uacute Amacron -50 KPX Uacute Aogonek -50 KPX Uacute Aring -50 KPX Uacute Atilde -50 KPX Uacute comma -30 KPX Uacute period -30 KPX Ucircumflex A -50 KPX Ucircumflex Aacute -50 KPX Ucircumflex Abreve -50 KPX Ucircumflex Acircumflex -50 KPX Ucircumflex Adieresis -50 KPX Ucircumflex Agrave -50 KPX Ucircumflex Amacron -50 KPX Ucircumflex Aogonek -50 KPX Ucircumflex Aring -50 KPX Ucircumflex Atilde -50 KPX Ucircumflex comma -30 KPX Ucircumflex period -30 KPX Udieresis A -50 KPX Udieresis Aacute -50 KPX Udieresis Abreve -50 KPX Udieresis Acircumflex -50 KPX Udieresis Adieresis -50 KPX Udieresis Agrave -50 KPX Udieresis Amacron -50 KPX Udieresis Aogonek -50 KPX Udieresis Aring -50 KPX Udieresis Atilde -50 KPX Udieresis comma -30 KPX Udieresis period -30 KPX Ugrave A -50 KPX Ugrave Aacute -50 KPX Ugrave Abreve -50 KPX Ugrave Acircumflex -50 KPX Ugrave Adieresis -50 KPX Ugrave Agrave -50 KPX Ugrave Amacron -50 KPX Ugrave Aogonek -50 KPX Ugrave Aring -50 KPX Ugrave Atilde -50 KPX Ugrave comma -30 KPX Ugrave period -30 KPX Uhungarumlaut A -50 KPX Uhungarumlaut Aacute -50 KPX Uhungarumlaut Abreve -50 KPX Uhungarumlaut Acircumflex -50 KPX Uhungarumlaut Adieresis -50 KPX Uhungarumlaut Agrave -50 KPX Uhungarumlaut Amacron -50 KPX Uhungarumlaut Aogonek -50 KPX Uhungarumlaut Aring -50 KPX Uhungarumlaut Atilde -50 KPX Uhungarumlaut comma -30 KPX Uhungarumlaut period -30 KPX Umacron A -50 KPX Umacron Aacute -50 KPX Umacron Abreve -50 KPX Umacron Acircumflex -50 KPX Umacron Adieresis -50 KPX Umacron Agrave -50 KPX Umacron Amacron -50 KPX Umacron Aogonek -50 KPX Umacron Aring -50 KPX Umacron Atilde -50 KPX Umacron comma -30 KPX Umacron period -30 KPX Uogonek A -50 KPX Uogonek Aacute -50 KPX Uogonek Abreve -50 KPX Uogonek Acircumflex -50 KPX Uogonek Adieresis -50 KPX Uogonek Agrave -50 KPX Uogonek Amacron -50 KPX Uogonek Aogonek -50 KPX Uogonek Aring -50 KPX Uogonek Atilde -50 KPX Uogonek comma -30 KPX Uogonek period -30 KPX Uring A -50 KPX Uring Aacute -50 KPX Uring Abreve -50 KPX Uring Acircumflex -50 KPX Uring Adieresis -50 KPX Uring Agrave -50 KPX Uring Amacron -50 KPX Uring Aogonek -50 KPX Uring Aring -50 KPX Uring Atilde -50 KPX Uring comma -30 KPX Uring period -30 KPX V A -80 KPX V Aacute -80 KPX V Abreve -80 KPX V Acircumflex -80 KPX V Adieresis -80 KPX V Agrave -80 KPX V Amacron -80 KPX V Aogonek -80 KPX V Aring -80 KPX V Atilde -80 KPX V G -50 KPX V Gbreve -50 KPX V Gcommaaccent -50 KPX V O -50 KPX V Oacute -50 KPX V Ocircumflex -50 KPX V Odieresis -50 KPX V Ograve -50 KPX V Ohungarumlaut -50 KPX V Omacron -50 KPX V Oslash -50 KPX V Otilde -50 KPX V a -60 KPX V aacute -60 KPX V abreve -60 KPX V acircumflex -60 KPX V adieresis -60 KPX V agrave -60 KPX V amacron -60 KPX V aogonek -60 KPX V aring -60 KPX V atilde -60 KPX V colon -40 KPX V comma -120 KPX V e -50 KPX V eacute -50 KPX V ecaron -50 KPX V ecircumflex -50 KPX V edieresis -50 KPX V edotaccent -50 KPX V egrave -50 KPX V emacron -50 KPX V eogonek -50 KPX V hyphen -80 KPX V o -90 KPX V oacute -90 KPX V ocircumflex -90 KPX V odieresis -90 KPX V ograve -90 KPX V ohungarumlaut -90 KPX V omacron -90 KPX V oslash -90 KPX V otilde -90 KPX V period -120 KPX V semicolon -40 KPX V u -60 KPX V uacute -60 KPX V ucircumflex -60 KPX V udieresis -60 KPX V ugrave -60 KPX V uhungarumlaut -60 KPX V umacron -60 KPX V uogonek -60 KPX V uring -60 KPX W A -60 KPX W Aacute -60 KPX W Abreve -60 KPX W Acircumflex -60 KPX W Adieresis -60 KPX W Agrave -60 KPX W Amacron -60 KPX W Aogonek -60 KPX W Aring -60 KPX W Atilde -60 KPX W O -20 KPX W Oacute -20 KPX W Ocircumflex -20 KPX W Odieresis -20 KPX W Ograve -20 KPX W Ohungarumlaut -20 KPX W Omacron -20 KPX W Oslash -20 KPX W Otilde -20 KPX W a -40 KPX W aacute -40 KPX W abreve -40 KPX W acircumflex -40 KPX W adieresis -40 KPX W agrave -40 KPX W amacron -40 KPX W aogonek -40 KPX W aring -40 KPX W atilde -40 KPX W colon -10 KPX W comma -80 KPX W e -35 KPX W eacute -35 KPX W ecaron -35 KPX W ecircumflex -35 KPX W edieresis -35 KPX W edotaccent -35 KPX W egrave -35 KPX W emacron -35 KPX W eogonek -35 KPX W hyphen -40 KPX W o -60 KPX W oacute -60 KPX W ocircumflex -60 KPX W odieresis -60 KPX W ograve -60 KPX W ohungarumlaut -60 KPX W omacron -60 KPX W oslash -60 KPX W otilde -60 KPX W period -80 KPX W semicolon -10 KPX W u -45 KPX W uacute -45 KPX W ucircumflex -45 KPX W udieresis -45 KPX W ugrave -45 KPX W uhungarumlaut -45 KPX W umacron -45 KPX W uogonek -45 KPX W uring -45 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -70 KPX Y Oacute -70 KPX Y Ocircumflex -70 KPX Y Odieresis -70 KPX Y Ograve -70 KPX Y Ohungarumlaut -70 KPX Y Omacron -70 KPX Y Oslash -70 KPX Y Otilde -70 KPX Y a -90 KPX Y aacute -90 KPX Y abreve -90 KPX Y acircumflex -90 KPX Y adieresis -90 KPX Y agrave -90 KPX Y amacron -90 KPX Y aogonek -90 KPX Y aring -90 KPX Y atilde -90 KPX Y colon -50 KPX Y comma -100 KPX Y e -80 KPX Y eacute -80 KPX Y ecaron -80 KPX Y ecircumflex -80 KPX Y edieresis -80 KPX Y edotaccent -80 KPX Y egrave -80 KPX Y emacron -80 KPX Y eogonek -80 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -100 KPX Y ograve -100 KPX Y ohungarumlaut -100 KPX Y omacron -100 KPX Y oslash -100 KPX Y otilde -100 KPX Y period -100 KPX Y semicolon -50 KPX Y u -100 KPX Y uacute -100 KPX Y ucircumflex -100 KPX Y udieresis -100 KPX Y ugrave -100 KPX Y uhungarumlaut -100 KPX Y umacron -100 KPX Y uogonek -100 KPX Y uring -100 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -70 KPX Yacute Oacute -70 KPX Yacute Ocircumflex -70 KPX Yacute Odieresis -70 KPX Yacute Ograve -70 KPX Yacute Ohungarumlaut -70 KPX Yacute Omacron -70 KPX Yacute Oslash -70 KPX Yacute Otilde -70 KPX Yacute a -90 KPX Yacute aacute -90 KPX Yacute abreve -90 KPX Yacute acircumflex -90 KPX Yacute adieresis -90 KPX Yacute agrave -90 KPX Yacute amacron -90 KPX Yacute aogonek -90 KPX Yacute aring -90 KPX Yacute atilde -90 KPX Yacute colon -50 KPX Yacute comma -100 KPX Yacute e -80 KPX Yacute eacute -80 KPX Yacute ecaron -80 KPX Yacute ecircumflex -80 KPX Yacute edieresis -80 KPX Yacute edotaccent -80 KPX Yacute egrave -80 KPX Yacute emacron -80 KPX Yacute eogonek -80 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -100 KPX Yacute ograve -100 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -100 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute period -100 KPX Yacute semicolon -50 KPX Yacute u -100 KPX Yacute uacute -100 KPX Yacute ucircumflex -100 KPX Yacute udieresis -100 KPX Yacute ugrave -100 KPX Yacute uhungarumlaut -100 KPX Yacute umacron -100 KPX Yacute uogonek -100 KPX Yacute uring -100 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -70 KPX Ydieresis Oacute -70 KPX Ydieresis Ocircumflex -70 KPX Ydieresis Odieresis -70 KPX Ydieresis Ograve -70 KPX Ydieresis Ohungarumlaut -70 KPX Ydieresis Omacron -70 KPX Ydieresis Oslash -70 KPX Ydieresis Otilde -70 KPX Ydieresis a -90 KPX Ydieresis aacute -90 KPX Ydieresis abreve -90 KPX Ydieresis acircumflex -90 KPX Ydieresis adieresis -90 KPX Ydieresis agrave -90 KPX Ydieresis amacron -90 KPX Ydieresis aogonek -90 KPX Ydieresis aring -90 KPX Ydieresis atilde -90 KPX Ydieresis colon -50 KPX Ydieresis comma -100 KPX Ydieresis e -80 KPX Ydieresis eacute -80 KPX Ydieresis ecaron -80 KPX Ydieresis ecircumflex -80 KPX Ydieresis edieresis -80 KPX Ydieresis edotaccent -80 KPX Ydieresis egrave -80 KPX Ydieresis emacron -80 KPX Ydieresis eogonek -80 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -100 KPX Ydieresis ograve -100 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -100 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis period -100 KPX Ydieresis semicolon -50 KPX Ydieresis u -100 KPX Ydieresis uacute -100 KPX Ydieresis ucircumflex -100 KPX Ydieresis udieresis -100 KPX Ydieresis ugrave -100 KPX Ydieresis uhungarumlaut -100 KPX Ydieresis umacron -100 KPX Ydieresis uogonek -100 KPX Ydieresis uring -100 KPX a g -10 KPX a gbreve -10 KPX a gcommaaccent -10 KPX a v -15 KPX a w -15 KPX a y -20 KPX a yacute -20 KPX a ydieresis -20 KPX aacute g -10 KPX aacute gbreve -10 KPX aacute gcommaaccent -10 KPX aacute v -15 KPX aacute w -15 KPX aacute y -20 KPX aacute yacute -20 KPX aacute ydieresis -20 KPX abreve g -10 KPX abreve gbreve -10 KPX abreve gcommaaccent -10 KPX abreve v -15 KPX abreve w -15 KPX abreve y -20 KPX abreve yacute -20 KPX abreve ydieresis -20 KPX acircumflex g -10 KPX acircumflex gbreve -10 KPX acircumflex gcommaaccent -10 KPX acircumflex v -15 KPX acircumflex w -15 KPX acircumflex y -20 KPX acircumflex yacute -20 KPX acircumflex ydieresis -20 KPX adieresis g -10 KPX adieresis gbreve -10 KPX adieresis gcommaaccent -10 KPX adieresis v -15 KPX adieresis w -15 KPX adieresis y -20 KPX adieresis yacute -20 KPX adieresis ydieresis -20 KPX agrave g -10 KPX agrave gbreve -10 KPX agrave gcommaaccent -10 KPX agrave v -15 KPX agrave w -15 KPX agrave y -20 KPX agrave yacute -20 KPX agrave ydieresis -20 KPX amacron g -10 KPX amacron gbreve -10 KPX amacron gcommaaccent -10 KPX amacron v -15 KPX amacron w -15 KPX amacron y -20 KPX amacron yacute -20 KPX amacron ydieresis -20 KPX aogonek g -10 KPX aogonek gbreve -10 KPX aogonek gcommaaccent -10 KPX aogonek v -15 KPX aogonek w -15 KPX aogonek y -20 KPX aogonek yacute -20 KPX aogonek ydieresis -20 KPX aring g -10 KPX aring gbreve -10 KPX aring gcommaaccent -10 KPX aring v -15 KPX aring w -15 KPX aring y -20 KPX aring yacute -20 KPX aring ydieresis -20 KPX atilde g -10 KPX atilde gbreve -10 KPX atilde gcommaaccent -10 KPX atilde v -15 KPX atilde w -15 KPX atilde y -20 KPX atilde yacute -20 KPX atilde ydieresis -20 KPX b l -10 KPX b lacute -10 KPX b lcommaaccent -10 KPX b lslash -10 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -20 KPX b y -20 KPX b yacute -20 KPX b ydieresis -20 KPX c h -10 KPX c k -20 KPX c kcommaaccent -20 KPX c l -20 KPX c lacute -20 KPX c lcommaaccent -20 KPX c lslash -20 KPX c y -10 KPX c yacute -10 KPX c ydieresis -10 KPX cacute h -10 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX cacute l -20 KPX cacute lacute -20 KPX cacute lcommaaccent -20 KPX cacute lslash -20 KPX cacute y -10 KPX cacute yacute -10 KPX cacute ydieresis -10 KPX ccaron h -10 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccaron l -20 KPX ccaron lacute -20 KPX ccaron lcommaaccent -20 KPX ccaron lslash -20 KPX ccaron y -10 KPX ccaron yacute -10 KPX ccaron ydieresis -10 KPX ccedilla h -10 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX ccedilla l -20 KPX ccedilla lacute -20 KPX ccedilla lcommaaccent -20 KPX ccedilla lslash -20 KPX ccedilla y -10 KPX ccedilla yacute -10 KPX ccedilla ydieresis -10 KPX colon space -40 KPX comma quotedblright -120 KPX comma quoteright -120 KPX comma space -40 KPX d d -10 KPX d dcroat -10 KPX d v -15 KPX d w -15 KPX d y -15 KPX d yacute -15 KPX d ydieresis -15 KPX dcroat d -10 KPX dcroat dcroat -10 KPX dcroat v -15 KPX dcroat w -15 KPX dcroat y -15 KPX dcroat yacute -15 KPX dcroat ydieresis -15 KPX e comma 10 KPX e period 20 KPX e v -15 KPX e w -15 KPX e x -15 KPX e y -15 KPX e yacute -15 KPX e ydieresis -15 KPX eacute comma 10 KPX eacute period 20 KPX eacute v -15 KPX eacute w -15 KPX eacute x -15 KPX eacute y -15 KPX eacute yacute -15 KPX eacute ydieresis -15 KPX ecaron comma 10 KPX ecaron period 20 KPX ecaron v -15 KPX ecaron w -15 KPX ecaron x -15 KPX ecaron y -15 KPX ecaron yacute -15 KPX ecaron ydieresis -15 KPX ecircumflex comma 10 KPX ecircumflex period 20 KPX ecircumflex v -15 KPX ecircumflex w -15 KPX ecircumflex x -15 KPX ecircumflex y -15 KPX ecircumflex yacute -15 KPX ecircumflex ydieresis -15 KPX edieresis comma 10 KPX edieresis period 20 KPX edieresis v -15 KPX edieresis w -15 KPX edieresis x -15 KPX edieresis y -15 KPX edieresis yacute -15 KPX edieresis ydieresis -15 KPX edotaccent comma 10 KPX edotaccent period 20 KPX edotaccent v -15 KPX edotaccent w -15 KPX edotaccent x -15 KPX edotaccent y -15 KPX edotaccent yacute -15 KPX edotaccent ydieresis -15 KPX egrave comma 10 KPX egrave period 20 KPX egrave v -15 KPX egrave w -15 KPX egrave x -15 KPX egrave y -15 KPX egrave yacute -15 KPX egrave ydieresis -15 KPX emacron comma 10 KPX emacron period 20 KPX emacron v -15 KPX emacron w -15 KPX emacron x -15 KPX emacron y -15 KPX emacron yacute -15 KPX emacron ydieresis -15 KPX eogonek comma 10 KPX eogonek period 20 KPX eogonek v -15 KPX eogonek w -15 KPX eogonek x -15 KPX eogonek y -15 KPX eogonek yacute -15 KPX eogonek ydieresis -15 KPX f comma -10 KPX f e -10 KPX f eacute -10 KPX f ecaron -10 KPX f ecircumflex -10 KPX f edieresis -10 KPX f edotaccent -10 KPX f egrave -10 KPX f emacron -10 KPX f eogonek -10 KPX f o -20 KPX f oacute -20 KPX f ocircumflex -20 KPX f odieresis -20 KPX f ograve -20 KPX f ohungarumlaut -20 KPX f omacron -20 KPX f oslash -20 KPX f otilde -20 KPX f period -10 KPX f quotedblright 30 KPX f quoteright 30 KPX g e 10 KPX g eacute 10 KPX g ecaron 10 KPX g ecircumflex 10 KPX g edieresis 10 KPX g edotaccent 10 KPX g egrave 10 KPX g emacron 10 KPX g eogonek 10 KPX g g -10 KPX g gbreve -10 KPX g gcommaaccent -10 KPX gbreve e 10 KPX gbreve eacute 10 KPX gbreve ecaron 10 KPX gbreve ecircumflex 10 KPX gbreve edieresis 10 KPX gbreve edotaccent 10 KPX gbreve egrave 10 KPX gbreve emacron 10 KPX gbreve eogonek 10 KPX gbreve g -10 KPX gbreve gbreve -10 KPX gbreve gcommaaccent -10 KPX gcommaaccent e 10 KPX gcommaaccent eacute 10 KPX gcommaaccent ecaron 10 KPX gcommaaccent ecircumflex 10 KPX gcommaaccent edieresis 10 KPX gcommaaccent edotaccent 10 KPX gcommaaccent egrave 10 KPX gcommaaccent emacron 10 KPX gcommaaccent eogonek 10 KPX gcommaaccent g -10 KPX gcommaaccent gbreve -10 KPX gcommaaccent gcommaaccent -10 KPX h y -20 KPX h yacute -20 KPX h ydieresis -20 KPX k o -15 KPX k oacute -15 KPX k ocircumflex -15 KPX k odieresis -15 KPX k ograve -15 KPX k ohungarumlaut -15 KPX k omacron -15 KPX k oslash -15 KPX k otilde -15 KPX kcommaaccent o -15 KPX kcommaaccent oacute -15 KPX kcommaaccent ocircumflex -15 KPX kcommaaccent odieresis -15 KPX kcommaaccent ograve -15 KPX kcommaaccent ohungarumlaut -15 KPX kcommaaccent omacron -15 KPX kcommaaccent oslash -15 KPX kcommaaccent otilde -15 KPX l w -15 KPX l y -15 KPX l yacute -15 KPX l ydieresis -15 KPX lacute w -15 KPX lacute y -15 KPX lacute yacute -15 KPX lacute ydieresis -15 KPX lcommaaccent w -15 KPX lcommaaccent y -15 KPX lcommaaccent yacute -15 KPX lcommaaccent ydieresis -15 KPX lslash w -15 KPX lslash y -15 KPX lslash yacute -15 KPX lslash ydieresis -15 KPX m u -20 KPX m uacute -20 KPX m ucircumflex -20 KPX m udieresis -20 KPX m ugrave -20 KPX m uhungarumlaut -20 KPX m umacron -20 KPX m uogonek -20 KPX m uring -20 KPX m y -30 KPX m yacute -30 KPX m ydieresis -30 KPX n u -10 KPX n uacute -10 KPX n ucircumflex -10 KPX n udieresis -10 KPX n ugrave -10 KPX n uhungarumlaut -10 KPX n umacron -10 KPX n uogonek -10 KPX n uring -10 KPX n v -40 KPX n y -20 KPX n yacute -20 KPX n ydieresis -20 KPX nacute u -10 KPX nacute uacute -10 KPX nacute ucircumflex -10 KPX nacute udieresis -10 KPX nacute ugrave -10 KPX nacute uhungarumlaut -10 KPX nacute umacron -10 KPX nacute uogonek -10 KPX nacute uring -10 KPX nacute v -40 KPX nacute y -20 KPX nacute yacute -20 KPX nacute ydieresis -20 KPX ncaron u -10 KPX ncaron uacute -10 KPX ncaron ucircumflex -10 KPX ncaron udieresis -10 KPX ncaron ugrave -10 KPX ncaron uhungarumlaut -10 KPX ncaron umacron -10 KPX ncaron uogonek -10 KPX ncaron uring -10 KPX ncaron v -40 KPX ncaron y -20 KPX ncaron yacute -20 KPX ncaron ydieresis -20 KPX ncommaaccent u -10 KPX ncommaaccent uacute -10 KPX ncommaaccent ucircumflex -10 KPX ncommaaccent udieresis -10 KPX ncommaaccent ugrave -10 KPX ncommaaccent uhungarumlaut -10 KPX ncommaaccent umacron -10 KPX ncommaaccent uogonek -10 KPX ncommaaccent uring -10 KPX ncommaaccent v -40 KPX ncommaaccent y -20 KPX ncommaaccent yacute -20 KPX ncommaaccent ydieresis -20 KPX ntilde u -10 KPX ntilde uacute -10 KPX ntilde ucircumflex -10 KPX ntilde udieresis -10 KPX ntilde ugrave -10 KPX ntilde uhungarumlaut -10 KPX ntilde umacron -10 KPX ntilde uogonek -10 KPX ntilde uring -10 KPX ntilde v -40 KPX ntilde y -20 KPX ntilde yacute -20 KPX ntilde ydieresis -20 KPX o v -20 KPX o w -15 KPX o x -30 KPX o y -20 KPX o yacute -20 KPX o ydieresis -20 KPX oacute v -20 KPX oacute w -15 KPX oacute x -30 KPX oacute y -20 KPX oacute yacute -20 KPX oacute ydieresis -20 KPX ocircumflex v -20 KPX ocircumflex w -15 KPX ocircumflex x -30 KPX ocircumflex y -20 KPX ocircumflex yacute -20 KPX ocircumflex ydieresis -20 KPX odieresis v -20 KPX odieresis w -15 KPX odieresis x -30 KPX odieresis y -20 KPX odieresis yacute -20 KPX odieresis ydieresis -20 KPX ograve v -20 KPX ograve w -15 KPX ograve x -30 KPX ograve y -20 KPX ograve yacute -20 KPX ograve ydieresis -20 KPX ohungarumlaut v -20 KPX ohungarumlaut w -15 KPX ohungarumlaut x -30 KPX ohungarumlaut y -20 KPX ohungarumlaut yacute -20 KPX ohungarumlaut ydieresis -20 KPX omacron v -20 KPX omacron w -15 KPX omacron x -30 KPX omacron y -20 KPX omacron yacute -20 KPX omacron ydieresis -20 KPX oslash v -20 KPX oslash w -15 KPX oslash x -30 KPX oslash y -20 KPX oslash yacute -20 KPX oslash ydieresis -20 KPX otilde v -20 KPX otilde w -15 KPX otilde x -30 KPX otilde y -20 KPX otilde yacute -20 KPX otilde ydieresis -20 KPX p y -15 KPX p yacute -15 KPX p ydieresis -15 KPX period quotedblright -120 KPX period quoteright -120 KPX period space -40 KPX quotedblright space -80 KPX quoteleft quoteleft -46 KPX quoteright d -80 KPX quoteright dcroat -80 KPX quoteright l -20 KPX quoteright lacute -20 KPX quoteright lcommaaccent -20 KPX quoteright lslash -20 KPX quoteright quoteright -46 KPX quoteright r -40 KPX quoteright racute -40 KPX quoteright rcaron -40 KPX quoteright rcommaaccent -40 KPX quoteright s -60 KPX quoteright sacute -60 KPX quoteright scaron -60 KPX quoteright scedilla -60 KPX quoteright scommaaccent -60 KPX quoteright space -80 KPX quoteright v -20 KPX r c -20 KPX r cacute -20 KPX r ccaron -20 KPX r ccedilla -20 KPX r comma -60 KPX r d -20 KPX r dcroat -20 KPX r g -15 KPX r gbreve -15 KPX r gcommaaccent -15 KPX r hyphen -20 KPX r o -20 KPX r oacute -20 KPX r ocircumflex -20 KPX r odieresis -20 KPX r ograve -20 KPX r ohungarumlaut -20 KPX r omacron -20 KPX r oslash -20 KPX r otilde -20 KPX r period -60 KPX r q -20 KPX r s -15 KPX r sacute -15 KPX r scaron -15 KPX r scedilla -15 KPX r scommaaccent -15 KPX r t 20 KPX r tcommaaccent 20 KPX r v 10 KPX r y 10 KPX r yacute 10 KPX r ydieresis 10 KPX racute c -20 KPX racute cacute -20 KPX racute ccaron -20 KPX racute ccedilla -20 KPX racute comma -60 KPX racute d -20 KPX racute dcroat -20 KPX racute g -15 KPX racute gbreve -15 KPX racute gcommaaccent -15 KPX racute hyphen -20 KPX racute o -20 KPX racute oacute -20 KPX racute ocircumflex -20 KPX racute odieresis -20 KPX racute ograve -20 KPX racute ohungarumlaut -20 KPX racute omacron -20 KPX racute oslash -20 KPX racute otilde -20 KPX racute period -60 KPX racute q -20 KPX racute s -15 KPX racute sacute -15 KPX racute scaron -15 KPX racute scedilla -15 KPX racute scommaaccent -15 KPX racute t 20 KPX racute tcommaaccent 20 KPX racute v 10 KPX racute y 10 KPX racute yacute 10 KPX racute ydieresis 10 KPX rcaron c -20 KPX rcaron cacute -20 KPX rcaron ccaron -20 KPX rcaron ccedilla -20 KPX rcaron comma -60 KPX rcaron d -20 KPX rcaron dcroat -20 KPX rcaron g -15 KPX rcaron gbreve -15 KPX rcaron gcommaaccent -15 KPX rcaron hyphen -20 KPX rcaron o -20 KPX rcaron oacute -20 KPX rcaron ocircumflex -20 KPX rcaron odieresis -20 KPX rcaron ograve -20 KPX rcaron ohungarumlaut -20 KPX rcaron omacron -20 KPX rcaron oslash -20 KPX rcaron otilde -20 KPX rcaron period -60 KPX rcaron q -20 KPX rcaron s -15 KPX rcaron sacute -15 KPX rcaron scaron -15 KPX rcaron scedilla -15 KPX rcaron scommaaccent -15 KPX rcaron t 20 KPX rcaron tcommaaccent 20 KPX rcaron v 10 KPX rcaron y 10 KPX rcaron yacute 10 KPX rcaron ydieresis 10 KPX rcommaaccent c -20 KPX rcommaaccent cacute -20 KPX rcommaaccent ccaron -20 KPX rcommaaccent ccedilla -20 KPX rcommaaccent comma -60 KPX rcommaaccent d -20 KPX rcommaaccent dcroat -20 KPX rcommaaccent g -15 KPX rcommaaccent gbreve -15 KPX rcommaaccent gcommaaccent -15 KPX rcommaaccent hyphen -20 KPX rcommaaccent o -20 KPX rcommaaccent oacute -20 KPX rcommaaccent ocircumflex -20 KPX rcommaaccent odieresis -20 KPX rcommaaccent ograve -20 KPX rcommaaccent ohungarumlaut -20 KPX rcommaaccent omacron -20 KPX rcommaaccent oslash -20 KPX rcommaaccent otilde -20 KPX rcommaaccent period -60 KPX rcommaaccent q -20 KPX rcommaaccent s -15 KPX rcommaaccent sacute -15 KPX rcommaaccent scaron -15 KPX rcommaaccent scedilla -15 KPX rcommaaccent scommaaccent -15 KPX rcommaaccent t 20 KPX rcommaaccent tcommaaccent 20 KPX rcommaaccent v 10 KPX rcommaaccent y 10 KPX rcommaaccent yacute 10 KPX rcommaaccent ydieresis 10 KPX s w -15 KPX sacute w -15 KPX scaron w -15 KPX scedilla w -15 KPX scommaaccent w -15 KPX semicolon space -40 KPX space T -100 KPX space Tcaron -100 KPX space Tcommaaccent -100 KPX space V -80 KPX space W -80 KPX space Y -120 KPX space Yacute -120 KPX space Ydieresis -120 KPX space quotedblleft -80 KPX space quoteleft -60 KPX v a -20 KPX v aacute -20 KPX v abreve -20 KPX v acircumflex -20 KPX v adieresis -20 KPX v agrave -20 KPX v amacron -20 KPX v aogonek -20 KPX v aring -20 KPX v atilde -20 KPX v comma -80 KPX v o -30 KPX v oacute -30 KPX v ocircumflex -30 KPX v odieresis -30 KPX v ograve -30 KPX v ohungarumlaut -30 KPX v omacron -30 KPX v oslash -30 KPX v otilde -30 KPX v period -80 KPX w comma -40 KPX w o -20 KPX w oacute -20 KPX w ocircumflex -20 KPX w odieresis -20 KPX w ograve -20 KPX w ohungarumlaut -20 KPX w omacron -20 KPX w oslash -20 KPX w otilde -20 KPX w period -40 KPX x e -10 KPX x eacute -10 KPX x ecaron -10 KPX x ecircumflex -10 KPX x edieresis -10 KPX x edotaccent -10 KPX x egrave -10 KPX x emacron -10 KPX x eogonek -10 KPX y a -30 KPX y aacute -30 KPX y abreve -30 KPX y acircumflex -30 KPX y adieresis -30 KPX y agrave -30 KPX y amacron -30 KPX y aogonek -30 KPX y aring -30 KPX y atilde -30 KPX y comma -80 KPX y e -10 KPX y eacute -10 KPX y ecaron -10 KPX y ecircumflex -10 KPX y edieresis -10 KPX y edotaccent -10 KPX y egrave -10 KPX y emacron -10 KPX y eogonek -10 KPX y o -25 KPX y oacute -25 KPX y ocircumflex -25 KPX y odieresis -25 KPX y ograve -25 KPX y ohungarumlaut -25 KPX y omacron -25 KPX y oslash -25 KPX y otilde -25 KPX y period -80 KPX yacute a -30 KPX yacute aacute -30 KPX yacute abreve -30 KPX yacute acircumflex -30 KPX yacute adieresis -30 KPX yacute agrave -30 KPX yacute amacron -30 KPX yacute aogonek -30 KPX yacute aring -30 KPX yacute atilde -30 KPX yacute comma -80 KPX yacute e -10 KPX yacute eacute -10 KPX yacute ecaron -10 KPX yacute ecircumflex -10 KPX yacute edieresis -10 KPX yacute edotaccent -10 KPX yacute egrave -10 KPX yacute emacron -10 KPX yacute eogonek -10 KPX yacute o -25 KPX yacute oacute -25 KPX yacute ocircumflex -25 KPX yacute odieresis -25 KPX yacute ograve -25 KPX yacute ohungarumlaut -25 KPX yacute omacron -25 KPX yacute oslash -25 KPX yacute otilde -25 KPX yacute period -80 KPX ydieresis a -30 KPX ydieresis aacute -30 KPX ydieresis abreve -30 KPX ydieresis acircumflex -30 KPX ydieresis adieresis -30 KPX ydieresis agrave -30 KPX ydieresis amacron -30 KPX ydieresis aogonek -30 KPX ydieresis aring -30 KPX ydieresis atilde -30 KPX ydieresis comma -80 KPX ydieresis e -10 KPX ydieresis eacute -10 KPX ydieresis ecaron -10 KPX ydieresis ecircumflex -10 KPX ydieresis edieresis -10 KPX ydieresis edotaccent -10 KPX ydieresis egrave -10 KPX ydieresis emacron -10 KPX ydieresis eogonek -10 KPX ydieresis o -25 KPX ydieresis oacute -25 KPX ydieresis ocircumflex -25 KPX ydieresis odieresis -25 KPX ydieresis ograve -25 KPX ydieresis ohungarumlaut -25 KPX ydieresis omacron -25 KPX ydieresis oslash -25 KPX ydieresis otilde -25 KPX ydieresis period -80 KPX z e 10 KPX z eacute 10 KPX z ecaron 10 KPX z ecircumflex 10 KPX z edieresis 10 KPX z edotaccent 10 KPX z egrave 10 KPX z emacron 10 KPX z eogonek 10 KPX zacute e 10 KPX zacute eacute 10 KPX zacute ecaron 10 KPX zacute ecircumflex 10 KPX zacute edieresis 10 KPX zacute edotaccent 10 KPX zacute egrave 10 KPX zacute emacron 10 KPX zacute eogonek 10 KPX zcaron e 10 KPX zcaron eacute 10 KPX zcaron ecaron 10 KPX zcaron ecircumflex 10 KPX zcaron edieresis 10 KPX zcaron edotaccent 10 KPX zcaron egrave 10 KPX zcaron emacron 10 KPX zcaron eogonek 10 KPX zdotaccent e 10 KPX zdotaccent eacute 10 KPX zdotaccent ecaron 10 KPX zdotaccent ecircumflex 10 KPX zdotaccent edieresis 10 KPX zdotaccent edotaccent 10 KPX zdotaccent egrave 10 KPX zdotaccent emacron 10 KPX zdotaccent eogonek 10 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Courier-Oblique.afm0000644000222100022210000004247714541067540016407 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 17:37:52 1997 Comment PH added entry for Euro character, copied from a different version, 19 July 2009. Comment PH added additional characters (after Euro) 18 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43051 Comment VMusage 16248 75829 FontName Courier-Oblique FullName Courier Oblique FamilyName Courier Weight Medium ItalicAngle -12 IsFixedPitch true FontBBox -27 -250 849 805 UnderlinePosition -100 UnderlineThickness 50 Version 003.000 Notice Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 562 XHeight 426 Ascender 629 Descender -157 StdHW 51 StdVW 51 StartCharMetrics 358 C 32 ; WX 600 ; N space ; B 0 0 0 0 ; C 33 ; WX 600 ; N exclam ; B 243 -15 464 572 ; C 34 ; WX 600 ; N quotedbl ; B 273 328 532 562 ; C 35 ; WX 600 ; N numbersign ; B 133 -32 596 639 ; C 36 ; WX 600 ; N dollar ; B 108 -126 596 662 ; C 37 ; WX 600 ; N percent ; B 134 -15 599 622 ; C 38 ; WX 600 ; N ampersand ; B 87 -15 580 543 ; C 39 ; WX 600 ; N quoteright ; B 283 328 495 562 ; C 40 ; WX 600 ; N parenleft ; B 313 -108 572 622 ; C 41 ; WX 600 ; N parenright ; B 137 -108 396 622 ; C 42 ; WX 600 ; N asterisk ; B 212 257 580 607 ; C 43 ; WX 600 ; N plus ; B 129 44 580 470 ; C 44 ; WX 600 ; N comma ; B 157 -112 370 122 ; C 45 ; WX 600 ; N hyphen ; B 152 231 558 285 ; C 46 ; WX 600 ; N period ; B 238 -15 382 109 ; C 47 ; WX 600 ; N slash ; B 112 -80 604 629 ; C 48 ; WX 600 ; N zero ; B 154 -15 575 622 ; C 49 ; WX 600 ; N one ; B 98 0 515 622 ; C 50 ; WX 600 ; N two ; B 70 0 568 622 ; C 51 ; WX 600 ; N three ; B 82 -15 538 622 ; C 52 ; WX 600 ; N four ; B 108 0 541 622 ; C 53 ; WX 600 ; N five ; B 99 -15 589 607 ; C 54 ; WX 600 ; N six ; B 155 -15 629 622 ; C 55 ; WX 600 ; N seven ; B 182 0 612 607 ; C 56 ; WX 600 ; N eight ; B 132 -15 588 622 ; C 57 ; WX 600 ; N nine ; B 93 -15 574 622 ; C 58 ; WX 600 ; N colon ; B 238 -15 441 385 ; C 59 ; WX 600 ; N semicolon ; B 157 -112 441 385 ; C 60 ; WX 600 ; N less ; B 96 42 610 472 ; C 61 ; WX 600 ; N equal ; B 109 138 600 376 ; C 62 ; WX 600 ; N greater ; B 85 42 599 472 ; C 63 ; WX 600 ; N question ; B 222 -15 583 572 ; C 64 ; WX 600 ; N at ; B 127 -15 582 622 ; C 65 ; WX 600 ; N A ; B 3 0 607 562 ; C 66 ; WX 600 ; N B ; B 43 0 616 562 ; C 67 ; WX 600 ; N C ; B 93 -18 655 580 ; C 68 ; WX 600 ; N D ; B 43 0 645 562 ; C 69 ; WX 600 ; N E ; B 53 0 660 562 ; C 70 ; WX 600 ; N F ; B 53 0 660 562 ; C 71 ; WX 600 ; N G ; B 83 -18 645 580 ; C 72 ; WX 600 ; N H ; B 32 0 687 562 ; C 73 ; WX 600 ; N I ; B 96 0 623 562 ; C 74 ; WX 600 ; N J ; B 52 -18 685 562 ; C 75 ; WX 600 ; N K ; B 38 0 671 562 ; C 76 ; WX 600 ; N L ; B 47 0 607 562 ; C 77 ; WX 600 ; N M ; B 4 0 715 562 ; C 78 ; WX 600 ; N N ; B 7 -13 712 562 ; C 79 ; WX 600 ; N O ; B 94 -18 625 580 ; C 80 ; WX 600 ; N P ; B 79 0 644 562 ; C 81 ; WX 600 ; N Q ; B 95 -138 625 580 ; C 82 ; WX 600 ; N R ; B 38 0 598 562 ; C 83 ; WX 600 ; N S ; B 76 -20 650 580 ; C 84 ; WX 600 ; N T ; B 108 0 665 562 ; C 85 ; WX 600 ; N U ; B 125 -18 702 562 ; C 86 ; WX 600 ; N V ; B 105 -13 723 562 ; C 87 ; WX 600 ; N W ; B 106 -13 722 562 ; C 88 ; WX 600 ; N X ; B 23 0 675 562 ; C 89 ; WX 600 ; N Y ; B 133 0 695 562 ; C 90 ; WX 600 ; N Z ; B 86 0 610 562 ; C 91 ; WX 600 ; N bracketleft ; B 246 -108 574 622 ; C 92 ; WX 600 ; N backslash ; B 249 -80 468 629 ; C 93 ; WX 600 ; N bracketright ; B 135 -108 463 622 ; C 94 ; WX 600 ; N asciicircum ; B 175 354 587 622 ; C 95 ; WX 600 ; N underscore ; B -27 -125 584 -75 ; C 96 ; WX 600 ; N quoteleft ; B 343 328 457 562 ; C 97 ; WX 600 ; N a ; B 76 -15 569 441 ; C 98 ; WX 600 ; N b ; B 29 -15 625 629 ; C 99 ; WX 600 ; N c ; B 106 -15 608 441 ; C 100 ; WX 600 ; N d ; B 85 -15 640 629 ; C 101 ; WX 600 ; N e ; B 106 -15 598 441 ; C 102 ; WX 600 ; N f ; B 114 0 662 629 ; L i fi ; L l fl ; C 103 ; WX 600 ; N g ; B 61 -157 657 441 ; C 104 ; WX 600 ; N h ; B 33 0 592 629 ; C 105 ; WX 600 ; N i ; B 95 0 515 657 ; C 106 ; WX 600 ; N j ; B 52 -157 550 657 ; C 107 ; WX 600 ; N k ; B 58 0 633 629 ; C 108 ; WX 600 ; N l ; B 95 0 515 629 ; C 109 ; WX 600 ; N m ; B -5 0 615 441 ; C 110 ; WX 600 ; N n ; B 26 0 585 441 ; C 111 ; WX 600 ; N o ; B 102 -15 588 441 ; C 112 ; WX 600 ; N p ; B -24 -157 605 441 ; C 113 ; WX 600 ; N q ; B 85 -157 682 441 ; C 114 ; WX 600 ; N r ; B 60 0 636 441 ; C 115 ; WX 600 ; N s ; B 78 -15 584 441 ; C 116 ; WX 600 ; N t ; B 167 -15 561 561 ; C 117 ; WX 600 ; N u ; B 101 -15 572 426 ; C 118 ; WX 600 ; N v ; B 90 -10 681 426 ; C 119 ; WX 600 ; N w ; B 76 -10 695 426 ; C 120 ; WX 600 ; N x ; B 20 0 655 426 ; C 121 ; WX 600 ; N y ; B -4 -157 683 426 ; C 122 ; WX 600 ; N z ; B 99 0 593 426 ; C 123 ; WX 600 ; N braceleft ; B 233 -108 569 622 ; C 124 ; WX 600 ; N bar ; B 222 -250 485 750 ; C 125 ; WX 600 ; N braceright ; B 140 -108 477 622 ; C 126 ; WX 600 ; N asciitilde ; B 116 197 600 320 ; C 160 ; WX 600 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 600 ; N exclamdown ; B 225 -157 445 430 ; C 162 ; WX 600 ; N cent ; B 151 -49 588 614 ; C 163 ; WX 600 ; N sterling ; B 124 -21 621 611 ; C 164 ; WX 600 ; N fraction ; B 84 -57 646 665 ; C 165 ; WX 600 ; N yen ; B 120 0 693 562 ; C 166 ; WX 600 ; N florin ; B -26 -143 671 622 ; C 167 ; WX 600 ; N section ; B 104 -78 590 580 ; C 168 ; WX 600 ; N currency ; B 94 58 628 506 ; C 169 ; WX 600 ; N quotesingle ; B 345 328 460 562 ; C 170 ; WX 600 ; N quotedblleft ; B 262 328 541 562 ; C 171 ; WX 600 ; N guillemotleft ; B 92 70 652 446 ; C 172 ; WX 600 ; N guilsinglleft ; B 204 70 540 446 ; C 173 ; WX 600 ; N guilsinglright ; B 170 70 506 446 ; C 174 ; WX 600 ; N fi ; B 3 0 619 629 ; C 175 ; WX 600 ; N fl ; B 3 0 619 629 ; C 177 ; WX 600 ; N endash ; B 124 231 586 285 ; C 178 ; WX 600 ; N dagger ; B 217 -78 546 580 ; C 179 ; WX 600 ; N daggerdbl ; B 163 -78 546 580 ; C 180 ; WX 600 ; N periodcentered ; B 275 189 434 327 ; C 182 ; WX 600 ; N paragraph ; B 100 -78 630 562 ; C 183 ; WX 600 ; N bullet ; B 224 130 485 383 ; C 184 ; WX 600 ; N quotesinglbase ; B 185 -134 397 100 ; C 185 ; WX 600 ; N quotedblbase ; B 115 -134 478 100 ; C 186 ; WX 600 ; N quotedblright ; B 213 328 576 562 ; C 187 ; WX 600 ; N guillemotright ; B 58 70 618 446 ; C 188 ; WX 600 ; N ellipsis ; B 46 -15 575 111 ; C 189 ; WX 600 ; N perthousand ; B 59 -15 627 622 ; C 191 ; WX 600 ; N questiondown ; B 105 -157 466 430 ; C 193 ; WX 600 ; N grave ; B 294 497 484 672 ; C 194 ; WX 600 ; N acute ; B 348 497 612 672 ; C 195 ; WX 600 ; N circumflex ; B 229 477 581 654 ; C 196 ; WX 600 ; N tilde ; B 212 489 629 606 ; C 197 ; WX 600 ; N macron ; B 232 525 600 565 ; C 198 ; WX 600 ; N breve ; B 279 501 576 609 ; C 199 ; WX 600 ; N dotaccent ; B 373 537 478 640 ; C 200 ; WX 600 ; N dieresis ; B 272 537 579 640 ; C 202 ; WX 600 ; N ring ; B 332 463 500 627 ; C 203 ; WX 600 ; N cedilla ; B 197 -151 344 10 ; C 205 ; WX 600 ; N hungarumlaut ; B 239 497 683 672 ; C 206 ; WX 600 ; N ogonek ; B 189 -172 377 4 ; C 207 ; WX 600 ; N caron ; B 262 492 614 669 ; C 208 ; WX 600 ; N emdash ; B 49 231 661 285 ; C 225 ; WX 600 ; N AE ; B 3 0 655 562 ; C 227 ; WX 600 ; N ordfeminine ; B 209 249 512 580 ; C 232 ; WX 600 ; N Lslash ; B 47 0 607 562 ; C 233 ; WX 600 ; N Oslash ; B 94 -80 625 629 ; C 234 ; WX 600 ; N OE ; B 59 0 672 562 ; C 235 ; WX 600 ; N ordmasculine ; B 210 249 535 580 ; C 241 ; WX 600 ; N ae ; B 41 -15 626 441 ; C 245 ; WX 600 ; N dotlessi ; B 95 0 515 426 ; C 248 ; WX 600 ; N lslash ; B 95 0 587 629 ; C 249 ; WX 600 ; N oslash ; B 102 -80 588 506 ; C 250 ; WX 600 ; N oe ; B 54 -15 615 441 ; C 251 ; WX 600 ; N germandbls ; B 48 -15 617 629 ; C -1 ; WX 600 ; N Idieresis ; B 96 0 623 753 ; C -1 ; WX 600 ; N eacute ; B 106 -15 612 672 ; C -1 ; WX 600 ; N abreve ; B 76 -15 576 609 ; C -1 ; WX 600 ; N uhungarumlaut ; B 101 -15 723 672 ; C -1 ; WX 600 ; N ecaron ; B 106 -15 614 669 ; C -1 ; WX 600 ; N Ydieresis ; B 133 0 695 753 ; C -1 ; WX 600 ; N divide ; B 136 48 573 467 ; C -1 ; WX 600 ; N Yacute ; B 133 0 695 805 ; C -1 ; WX 600 ; N Acircumflex ; B 3 0 607 787 ; C -1 ; WX 600 ; N aacute ; B 76 -15 612 672 ; C -1 ; WX 600 ; N Ucircumflex ; B 125 -18 702 787 ; C -1 ; WX 600 ; N yacute ; B -4 -157 683 672 ; C -1 ; WX 600 ; N scommaaccent ; B 78 -250 584 441 ; C -1 ; WX 600 ; N ecircumflex ; B 106 -15 598 654 ; C -1 ; WX 600 ; N Uring ; B 125 -18 702 760 ; C -1 ; WX 600 ; N Udieresis ; B 125 -18 702 753 ; C -1 ; WX 600 ; N aogonek ; B 76 -172 569 441 ; C -1 ; WX 600 ; N Uacute ; B 125 -18 702 805 ; C -1 ; WX 600 ; N uogonek ; B 101 -172 572 426 ; C -1 ; WX 600 ; N Edieresis ; B 53 0 660 753 ; C -1 ; WX 600 ; N Dcroat ; B 43 0 645 562 ; C -1 ; WX 600 ; N commaaccent ; B 145 -250 323 -58 ; C -1 ; WX 600 ; N copyright ; B 53 -18 667 580 ; C -1 ; WX 600 ; N Emacron ; B 53 0 660 698 ; C -1 ; WX 600 ; N ccaron ; B 106 -15 614 669 ; C -1 ; WX 600 ; N aring ; B 76 -15 569 627 ; C -1 ; WX 600 ; N Ncommaaccent ; B 7 -250 712 562 ; C -1 ; WX 600 ; N lacute ; B 95 0 640 805 ; C -1 ; WX 600 ; N agrave ; B 76 -15 569 672 ; C -1 ; WX 600 ; N Tcommaaccent ; B 108 -250 665 562 ; C -1 ; WX 600 ; N Cacute ; B 93 -18 655 805 ; C -1 ; WX 600 ; N atilde ; B 76 -15 629 606 ; C -1 ; WX 600 ; N Edotaccent ; B 53 0 660 753 ; C -1 ; WX 600 ; N scaron ; B 78 -15 614 669 ; C -1 ; WX 600 ; N scedilla ; B 78 -151 584 441 ; C -1 ; WX 600 ; N iacute ; B 95 0 612 672 ; C -1 ; WX 600 ; N lozenge ; B 94 0 519 706 ; C -1 ; WX 600 ; N Rcaron ; B 38 0 642 802 ; C -1 ; WX 600 ; N Gcommaaccent ; B 83 -250 645 580 ; C -1 ; WX 600 ; N ucircumflex ; B 101 -15 572 654 ; C -1 ; WX 600 ; N acircumflex ; B 76 -15 581 654 ; C -1 ; WX 600 ; N Amacron ; B 3 0 607 698 ; C -1 ; WX 600 ; N rcaron ; B 60 0 636 669 ; C -1 ; WX 600 ; N ccedilla ; B 106 -151 614 441 ; C -1 ; WX 600 ; N Zdotaccent ; B 86 0 610 753 ; C -1 ; WX 600 ; N Thorn ; B 79 0 606 562 ; C -1 ; WX 600 ; N Omacron ; B 94 -18 628 698 ; C -1 ; WX 600 ; N Racute ; B 38 0 670 805 ; C -1 ; WX 600 ; N Sacute ; B 76 -20 650 805 ; C -1 ; WX 600 ; N dcaron ; B 85 -15 849 629 ; C -1 ; WX 600 ; N Umacron ; B 125 -18 702 698 ; C -1 ; WX 600 ; N uring ; B 101 -15 572 627 ; C -1 ; WX 600 ; N threesuperior ; B 213 240 501 622 ; C -1 ; WX 600 ; N Ograve ; B 94 -18 625 805 ; C -1 ; WX 600 ; N Agrave ; B 3 0 607 805 ; C -1 ; WX 600 ; N Abreve ; B 3 0 607 732 ; C -1 ; WX 600 ; N multiply ; B 103 43 607 470 ; C -1 ; WX 600 ; N uacute ; B 101 -15 602 672 ; C -1 ; WX 600 ; N Tcaron ; B 108 0 665 802 ; C -1 ; WX 600 ; N partialdiff ; B 45 -38 546 710 ; C -1 ; WX 600 ; N ydieresis ; B -4 -157 683 620 ; C -1 ; WX 600 ; N Nacute ; B 7 -13 712 805 ; C -1 ; WX 600 ; N icircumflex ; B 95 0 551 654 ; C -1 ; WX 600 ; N Ecircumflex ; B 53 0 660 787 ; C -1 ; WX 600 ; N adieresis ; B 76 -15 575 620 ; C -1 ; WX 600 ; N edieresis ; B 106 -15 598 620 ; C -1 ; WX 600 ; N cacute ; B 106 -15 612 672 ; C -1 ; WX 600 ; N nacute ; B 26 0 602 672 ; C -1 ; WX 600 ; N umacron ; B 101 -15 600 565 ; C -1 ; WX 600 ; N Ncaron ; B 7 -13 712 802 ; C -1 ; WX 600 ; N Iacute ; B 96 0 640 805 ; C -1 ; WX 600 ; N plusminus ; B 96 44 594 558 ; C -1 ; WX 600 ; N brokenbar ; B 238 -175 469 675 ; C -1 ; WX 600 ; N registered ; B 53 -18 667 580 ; C -1 ; WX 600 ; N Gbreve ; B 83 -18 645 732 ; C -1 ; WX 600 ; N Idotaccent ; B 96 0 623 753 ; C -1 ; WX 600 ; N summation ; B 15 -10 670 706 ; C -1 ; WX 600 ; N Egrave ; B 53 0 660 805 ; C -1 ; WX 600 ; N racute ; B 60 0 636 672 ; C -1 ; WX 600 ; N omacron ; B 102 -15 600 565 ; C -1 ; WX 600 ; N Zacute ; B 86 0 670 805 ; C -1 ; WX 600 ; N Zcaron ; B 86 0 642 802 ; C -1 ; WX 600 ; N greaterequal ; B 98 0 594 710 ; C -1 ; WX 600 ; N Eth ; B 43 0 645 562 ; C -1 ; WX 600 ; N Ccedilla ; B 93 -151 658 580 ; C -1 ; WX 600 ; N lcommaaccent ; B 95 -250 515 629 ; C -1 ; WX 600 ; N tcaron ; B 167 -15 587 717 ; C -1 ; WX 600 ; N eogonek ; B 106 -172 598 441 ; C -1 ; WX 600 ; N Uogonek ; B 124 -172 702 562 ; C -1 ; WX 600 ; N Aacute ; B 3 0 660 805 ; C -1 ; WX 600 ; N Adieresis ; B 3 0 607 753 ; C -1 ; WX 600 ; N egrave ; B 106 -15 598 672 ; C -1 ; WX 600 ; N zacute ; B 99 0 612 672 ; C -1 ; WX 600 ; N iogonek ; B 95 -172 515 657 ; C -1 ; WX 600 ; N Oacute ; B 94 -18 640 805 ; C -1 ; WX 600 ; N oacute ; B 102 -15 612 672 ; C -1 ; WX 600 ; N amacron ; B 76 -15 600 565 ; C -1 ; WX 600 ; N sacute ; B 78 -15 612 672 ; C -1 ; WX 600 ; N idieresis ; B 95 0 545 620 ; C -1 ; WX 600 ; N Ocircumflex ; B 94 -18 625 787 ; C -1 ; WX 600 ; N Ugrave ; B 125 -18 702 805 ; C -1 ; WX 600 ; N Delta ; B 6 0 598 688 ; C -1 ; WX 600 ; N thorn ; B -24 -157 605 629 ; C -1 ; WX 600 ; N twosuperior ; B 230 249 535 622 ; C -1 ; WX 600 ; N Odieresis ; B 94 -18 625 753 ; C -1 ; WX 600 ; N mu ; B 72 -157 572 426 ; C -1 ; WX 600 ; N igrave ; B 95 0 515 672 ; C -1 ; WX 600 ; N ohungarumlaut ; B 102 -15 723 672 ; C -1 ; WX 600 ; N Eogonek ; B 53 -172 660 562 ; C -1 ; WX 600 ; N dcroat ; B 85 -15 704 629 ; C -1 ; WX 600 ; N threequarters ; B 73 -56 659 666 ; C -1 ; WX 600 ; N Scedilla ; B 76 -151 650 580 ; C -1 ; WX 600 ; N lcaron ; B 95 0 667 629 ; C -1 ; WX 600 ; N Kcommaaccent ; B 38 -250 671 562 ; C -1 ; WX 600 ; N Lacute ; B 47 0 607 805 ; C -1 ; WX 600 ; N trademark ; B 75 263 742 562 ; C -1 ; WX 600 ; N edotaccent ; B 106 -15 598 620 ; C -1 ; WX 600 ; N Igrave ; B 96 0 623 805 ; C -1 ; WX 600 ; N Imacron ; B 96 0 628 698 ; C -1 ; WX 600 ; N Lcaron ; B 47 0 632 562 ; C -1 ; WX 600 ; N onehalf ; B 65 -57 669 665 ; C -1 ; WX 600 ; N lessequal ; B 98 0 645 710 ; C -1 ; WX 600 ; N ocircumflex ; B 102 -15 588 654 ; C -1 ; WX 600 ; N ntilde ; B 26 0 629 606 ; C -1 ; WX 600 ; N Uhungarumlaut ; B 125 -18 761 805 ; C -1 ; WX 600 ; N Eacute ; B 53 0 670 805 ; C -1 ; WX 600 ; N emacron ; B 106 -15 600 565 ; C -1 ; WX 600 ; N gbreve ; B 61 -157 657 609 ; C -1 ; WX 600 ; N onequarter ; B 65 -57 674 665 ; C -1 ; WX 600 ; N Scaron ; B 76 -20 672 802 ; C -1 ; WX 600 ; N Scommaaccent ; B 76 -250 650 580 ; C -1 ; WX 600 ; N Ohungarumlaut ; B 94 -18 751 805 ; C -1 ; WX 600 ; N degree ; B 214 269 576 622 ; C -1 ; WX 600 ; N ograve ; B 102 -15 588 672 ; C -1 ; WX 600 ; N Ccaron ; B 93 -18 672 802 ; C -1 ; WX 600 ; N ugrave ; B 101 -15 572 672 ; C -1 ; WX 600 ; N radical ; B 85 -15 765 792 ; C -1 ; WX 600 ; N Dcaron ; B 43 0 645 802 ; C -1 ; WX 600 ; N rcommaaccent ; B 60 -250 636 441 ; C -1 ; WX 600 ; N Ntilde ; B 7 -13 712 729 ; C -1 ; WX 600 ; N otilde ; B 102 -15 629 606 ; C -1 ; WX 600 ; N Rcommaaccent ; B 38 -250 598 562 ; C -1 ; WX 600 ; N Lcommaaccent ; B 47 -250 607 562 ; C -1 ; WX 600 ; N Atilde ; B 3 0 655 729 ; C -1 ; WX 600 ; N Aogonek ; B 3 -172 607 562 ; C -1 ; WX 600 ; N Aring ; B 3 0 607 750 ; C -1 ; WX 600 ; N Otilde ; B 94 -18 655 729 ; C -1 ; WX 600 ; N zdotaccent ; B 99 0 593 620 ; C -1 ; WX 600 ; N Ecaron ; B 53 0 660 802 ; C -1 ; WX 600 ; N Iogonek ; B 96 -172 623 562 ; C -1 ; WX 600 ; N kcommaaccent ; B 58 -250 633 629 ; C -1 ; WX 600 ; N minus ; B 129 232 580 283 ; C -1 ; WX 600 ; N Icircumflex ; B 96 0 623 787 ; C -1 ; WX 600 ; N ncaron ; B 26 0 614 669 ; C -1 ; WX 600 ; N tcommaaccent ; B 165 -250 561 561 ; C -1 ; WX 600 ; N logicalnot ; B 155 108 591 369 ; C -1 ; WX 600 ; N odieresis ; B 102 -15 588 620 ; C -1 ; WX 600 ; N udieresis ; B 101 -15 575 620 ; C -1 ; WX 600 ; N notequal ; B 43 -16 621 529 ; C -1 ; WX 600 ; N gcommaaccent ; B 61 -157 657 708 ; C -1 ; WX 600 ; N eth ; B 102 -15 639 629 ; C -1 ; WX 600 ; N zcaron ; B 99 0 624 669 ; C -1 ; WX 600 ; N ncommaaccent ; B 26 -250 585 441 ; C -1 ; WX 600 ; N onesuperior ; B 231 249 491 622 ; C -1 ; WX 600 ; N imacron ; B 95 0 543 565 ; C -1 ; WX 600 ; N Euro ; B 0 0 0 0 ; C -1 ; WX 600 ; N Ccircumflex ; B 110 -16 635 753 ; C -1 ; WX 600 ; N ccircumflex ; B 121 -17 596 607 ; C -1 ; WX 600 ; N Cdotaccent ; B 110 -16 635 702 ; C -1 ; WX 600 ; N cdotaccent ; B 121 -17 596 557 ; C -1 ; WX 600 ; N Ebreve ; B 47 0 619 735 ; C -1 ; WX 600 ; N ebreve ; B 104 -16 570 589 ; C -1 ; WX 600 ; N Gcircumflex ; B 108 -16 636 753 ; C -1 ; WX 600 ; N gcircumflex ; B 106 -186 647 607 ; C -1 ; WX 600 ; N Gdotaccent ; B 108 -16 636 702 ; C -1 ; WX 600 ; N gdotaccent ; B 106 -186 647 557 ; C -1 ; WX 600 ; N Hcircumflex ; B 57 0 646 753 ; C -1 ; WX 600 ; N hcircumflex ; B 55 0 583 794 ; C -1 ; WX 600 ; N Hbar ; B 57 0 646 563 ; C -1 ; WX 600 ; N hbar ; B 55 0 556 604 ; C -1 ; WX 600 ; N Itilde ; B 117 0 603 693 ; C -1 ; WX 600 ; N itilde ; B 96 0 567 547 ; C -1 ; WX 600 ; N Ibreve ; B 117 0 603 735 ; C -1 ; WX 600 ; N ibreve ; B 96 0 567 589 ; C -1 ; WX 600 ; N IJ ; B 27 -16 672 563 ; C -1 ; WX 600 ; N ij ; B 34 -186 647 624 ; C -1 ; WX 600 ; N Jcircumflex ; B 100 -16 708 753 ; C -1 ; WX 600 ; N jcircumflex ; B 112 -186 553 640 ; C -1 ; WX 600 ; N kgreenlandic ; B 44 0 556 417 ; C -1 ; WX 600 ; N Ldot ; B 67 0 585 563 ; C -1 ; WX 600 ; N ldot ; B 47 0 553 604 ; C -1 ; WX 600 ; N Obreve ; B 102 -16 617 735 ; C -1 ; WX 600 ; N obreve ; B 110 -16 576 589 ; C -1 ; WX 600 ; N Scircumflex ; B 96 -17 602 753 ; C -1 ; WX 600 ; N scircumflex ; B 108 -17 558 607 ; C -1 ; WX 600 ; N Tbar ; B 152 0 648 563 ; C -1 ; WX 600 ; N tbar ; B 102 -16 518 563 ; C -1 ; WX 600 ; N Tcedilla ; B 108 -250 665 562 ; C -1 ; WX 600 ; N tcedilla ; B 165 -250 561 561 ; C -1 ; WX 600 ; N Utilde ; B 136 -16 676 693 ; C -1 ; WX 600 ; N utilde ; B 127 -16 569 547 ; C -1 ; WX 600 ; N Ubreve ; B 136 -16 676 735 ; C -1 ; WX 600 ; N ubreve ; B 127 -16 569 589 ; C -1 ; WX 600 ; N Wcircumflex ; B 123 0 697 753 ; C -1 ; WX 600 ; N wcircumflex ; B 114 0 655 607 ; C -1 ; WX 600 ; N Ycircumflex ; B 153 0 665 753 ; C -1 ; WX 600 ; N ycircumflex ; B 22 -186 633 607 ; C -1 ; WX 600 ; N longs ; B 109 0 663 604 ; C -1 ; WX 600 ; N infinity ; B 0 133 600 468 ; EndCharMetrics EndFontMetrics pmw-5.22/fontmetrics/Symbol.utr0000644000222100022210000001141314541067540014677 0ustar ph10ph10# This file contains translations from Unicode code points to the 256 code # points in the PostScript "Symbol" font's default encoding. Some of these # are null translations, but all are listed for completeness. Symbol font # names are in lower case; Unicode names (where given) are in upper case. # Created by Philip Hazel, June 2020 0020 32 space 0021 33 exclam 2200 34 universal 0023 35 numbersign 2203 36 existential 0025 37 percent 0026 38 ampersand 220d 39 suchthat SMALL CONTAINS AS MEMBER 0028 40 parenleft 0029 41 parenright 2217 42 asteriskmath 002b 43 plus 002c 44 comma 2212 45 minus 002e 46 period 002f 47 slash 0030 48 zero 0031 49 one 0032 50 two 0033 51 three 0034 52 four 0035 53 five 0036 54 six 0037 55 seven 0038 56 eight 0039 57 nine 003a 58 colon 003b 59 semicolon 003c 60 less 003d 61 equal 003e 62 greater 003f 63 question 224c 64 congruent 0391 65 Alpha 0392 66 Beta 03a7 67 Chi 0394 68 Delta 0395 69 Epsilon 03a6 70 Phi 0393 71 Gamma 0397 72 Eta 0399 73 Iota 03d1 74 theta1 039a 75 Kappa 039b 76 Lambda 039c 77 Mu 039d 78 Nu 039f 79 Omicron 03a0 80 Pi 0398 81 Theta 03a1 82 Rho 03a3 83 Sigma 03a4 84 Tau 03a5 85 Upsilon 03c2 86 sigma1 03a9 87 Omega 039e 88 Xi 03a8 89 Psi 0396 90 Zeta 005b 91 bracketleft 2234 92 therefore 005d 93 bracketright 27c2 94 perpendicular 005f 95 underscore # 96 radicalex 03b1 97 alpha 03b2 98 beta 03c7 99 chi 03b4 100 delta 03b5 101 epsilon 03c6 102 phi 03b3 103 gamma 03b7 104 eta 03b9 105 iota 03d5 106 phi1 03ba 107 kappa 03bb 108 lambda 03bc 109 mu 03bd 110 nu 03bf 111 omicron 03c0 112 pi 03b8 113 theta 03c1 114 rho 03c3 115 sigma 03c4 116 tau 03c5 117 upsilon 03ce 118 omega1 03c9 119 omega 03be 120 xi 03c8 121 psi 03b6 122 zeta 007b 123 braceleft 007c 124 bar 007d 125 braceright 007e 126 similar 20ac 160 Euro 03d2 161 Upsilon1 2032 162 minute 2264 163 lessequal 2215 164 fraction DIVISION SLASH 221e 165 infinity 0192 166 florin LATIN SMALL LETTER F WITH HOOK 2663 167 club 2666 168 diamond 2665 169 heart 2660 170 spade 2194 171 arrowboth 2190 172 arrowleft 2191 173 arrowup 2192 174 arrowright 2193 175 arrowdown 00b0 176 degree 00b1 177 plusminus 2033 178 second 2265 179 greaterequal 00d7 180 multiply 221d 181 proportional 2202 182 partialdiff 2022 183 bullet 00f7 184 divide 2260 185 notequal 2261 186 equivalence 2245 187 approxequal 0eaf 188 ellipsis 23d0 189 arrowvertex VERTICAL LINE EXTENSION 23af 190 arrowhorizex HORIZONTAL LINE EXTENSION 240d 191 carriagereturn 05d0 192 aleph 1d574 193 Ifraktur 1d57d 194 Rfraktur 2118 195 weierstrass 2297 196 circlemultiply 2295 197 circleplus 2205 198 emptyset 2229 199 intersection 222a 200 union 2283 201 propersuperset SUPERSET OF 2287 202 reflexsuperset SUPERSET OF OR EQUAL TO 2284 203 notsubset NOT A SUBSET O 2282 204 propersubset SUBSET OF 2286 205 reflexsubset SUBSET OF OR EQUAL TO 2208 206 element 2209 207 notelement 2220 208 angle 2207 209 gradient NABLA 00ae 210 registerserif REGISTERED SIGN 00a9 211 copyrightserif 2122 212 trademarkserif TRADE MARK SIGN 220f 213 product N-ARY PRODUCT 221a 214 radical SQUARE ROOT 00b7 215 dotmath 00ac 216 logicalnot 2227 217 logicaland 2228 218 logicalor 21d4 219 arrowdblboth LEFT RIGHT DOUBLE ARROW 21d0 220 arrowdblleft LEFTWARDS DOUBLE ARROW 21d1 221 arrowdblup UPWARDS DOUBLE ARROW 21d2 222 arrowdblright RIGHTWARDS DOUBLE ARROW 21d3 223 arrowdbldown DOWNWARDS DOUBLE ARROW 25ca 224 lozenge 2039 225 angleleft SINGLE LEFT-POINTING ANGLE QUOTATION MARK # 226 registersans Unicode has only one register code # 227 copyrightsans Unicode has only one copyright code # 228 trademarksans Unicode has only one trade mark code 2211 229 summation N-ARY SUMMATION 239b 230 parenlefttp LEFT PARENTHESIS UPPER HOOK 239c 231 parenleftex LEFT PARENTHESIS EXTENSION 239d 232 parenleftbt LEFT PARENTHESIS LOWER HOOK 23a1 233 bracketlefttp LEFT SQUARE BRACKET UPPER CORNER 23a2 234 bracketleftex LEFT SQUARE BRACKET EXTENSION 23a3 235 bracketleftbt LEFT SQUARE BRACKET LOWER CORNER 23a7 236 bracelefttp LEFT CURLY BRACKET UPPER HOOK 23a8 237 braceleftmid LEFT CURLY BRACKET MIDDLE PIECE a3a9 238 braceleftbtLEFT CURLY BRACKET LOWER HOOK 23aa 239 braceex CURLY BRACKET EXTENSION 203a 241 angleright SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 222b 242 integral 2320 243 integraltp TOP HALF INTEGRAL 23ae 244 integralex INTEGRAL EXTENSION 2321 245 integralbt BOTTOM HALF INTEGRAL 239e 246 parenrighttp RIGHT PARENTHESIS UPPER HOOK 239f 247 parenrightex RIGHT PARENTHESIS EXTENSION 23a0 248 parenrightbt RIGHT PARENTHESIS LOWER HOOK 23a4 249 bracketrighttp RIGHT SQUARE BRACKET UPPER CORNER 23a5 250 bracketrightex RIGHT SQUARE BRACKET EXTENSION 23a6 251 bracketrightbt RIGHT SQUARE BRACKET LOWER CORNER 23ab 252 bracerighttp RIGHT CURLY BRACKET UPPER HOOK 23ac 253 bracerightmid RIGHT CURLY BRACKET MIDDLE PIECE 23ad 254 bracerightbt RIGHT CURLY BRACKET LOWER HOOK # -1 apple Not encoded by default in Symbol # End pmw-5.22/fontmetrics/NewCenturySchlbk-Italic.afm0000644000222100022210000015313114541067540020024 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:46:15 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43093 Comment VMusage 43675 54700 FontName NewCenturySchlbk-Italic FullName New Century Schoolbook Italic FamilyName New Century Schoolbook Weight Medium ItalicAngle -16 IsFixedPitch false FontBBox -166 -250 994 958 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 722 XHeight 466 Ascender 737 Descender -205 StdHW 45 StdVW 80 StartCharMetrics 361 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 17 -15 303 737 ; C 34 ; WX 400 ; N quotedbl ; B 127 463 363 737 ; C 35 ; WX 556 ; N numbersign ; B 28 0 528 690 ; C 36 ; WX 556 ; N dollar ; B 4 -142 536 808 ; C 37 ; WX 833 ; N percent ; B 43 -15 790 705 ; C 38 ; WX 852 ; N ampersand ; B 24 -15 773 737 ; C 39 ; WX 204 ; N quoteright ; B 39 463 229 737 ; C 40 ; WX 333 ; N parenleft ; B 53 -117 411 745 ; C 41 ; WX 333 ; N parenright ; B -93 -117 265 745 ; C 42 ; WX 500 ; N asterisk ; B 80 318 500 737 ; C 43 ; WX 606 ; N plus ; B 50 0 556 506 ; C 44 ; WX 278 ; N comma ; B -39 -165 151 109 ; C 45 ; WX 333 ; N hyphen ; B 32 202 259 274 ; C 46 ; WX 278 ; N period ; B 17 -15 141 109 ; C 47 ; WX 606 ; N slash ; B 132 -15 474 737 ; C 48 ; WX 556 ; N zero ; B 30 -15 526 705 ; C 49 ; WX 556 ; N one ; B 50 0 459 705 ; C 50 ; WX 556 ; N two ; B -37 0 506 705 ; C 51 ; WX 556 ; N three ; B -2 -15 506 705 ; C 52 ; WX 556 ; N four ; B -8 0 512 705 ; C 53 ; WX 556 ; N five ; B 4 -15 540 705 ; C 54 ; WX 556 ; N six ; B 36 -15 548 705 ; C 55 ; WX 556 ; N seven ; B 69 -15 561 705 ; C 56 ; WX 556 ; N eight ; B 6 -15 526 705 ; C 57 ; WX 556 ; N nine ; B 8 -15 520 705 ; C 58 ; WX 278 ; N colon ; B 17 -15 229 466 ; C 59 ; WX 278 ; N semicolon ; B -39 -165 229 466 ; C 60 ; WX 606 ; N less ; B 36 -8 542 514 ; C 61 ; WX 606 ; N equal ; B 50 117 556 389 ; C 62 ; WX 606 ; N greater ; B 64 -8 570 514 ; C 63 ; WX 444 ; N question ; B 102 -15 417 737 ; C 64 ; WX 747 ; N at ; B -2 -15 750 737 ; C 65 ; WX 704 ; N A ; B -87 0 668 737 ; C 66 ; WX 722 ; N B ; B -33 0 670 722 ; C 67 ; WX 722 ; N C ; B 40 -15 712 737 ; C 68 ; WX 778 ; N D ; B -33 0 738 722 ; C 69 ; WX 722 ; N E ; B -33 0 700 722 ; C 70 ; WX 667 ; N F ; B -33 0 700 722 ; C 71 ; WX 778 ; N G ; B 40 -15 763 737 ; C 72 ; WX 833 ; N H ; B -33 0 866 722 ; C 73 ; WX 407 ; N I ; B -33 0 435 722 ; C 74 ; WX 611 ; N J ; B -14 -15 651 722 ; C 75 ; WX 741 ; N K ; B -33 0 816 722 ; C 76 ; WX 667 ; N L ; B -33 0 627 722 ; C 77 ; WX 944 ; N M ; B -33 0 977 722 ; C 78 ; WX 815 ; N N ; B -51 -15 866 722 ; C 79 ; WX 778 ; N O ; B 40 -15 738 737 ; C 80 ; WX 667 ; N P ; B -33 0 667 722 ; C 81 ; WX 778 ; N Q ; B 40 -190 738 737 ; C 82 ; WX 741 ; N R ; B -45 -15 692 722 ; C 83 ; WX 667 ; N S ; B -6 -15 638 737 ; C 84 ; WX 685 ; N T ; B 40 0 725 722 ; C 85 ; WX 815 ; N U ; B 93 -15 867 722 ; C 86 ; WX 704 ; N V ; B 36 -10 779 722 ; C 87 ; WX 926 ; N W ; B 53 -10 978 722 ; C 88 ; WX 704 ; N X ; B -75 0 779 722 ; C 89 ; WX 685 ; N Y ; B 31 0 760 722 ; C 90 ; WX 667 ; N Z ; B -25 0 667 722 ; C 91 ; WX 333 ; N bracketleft ; B -55 -109 388 737 ; C 92 ; WX 606 ; N backslash ; B 132 -15 474 737 ; C 93 ; WX 333 ; N bracketright ; B -77 -109 366 737 ; C 94 ; WX 606 ; N asciicircum ; B 89 325 517 690 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 204 ; N quoteleft ; B 39 463 229 737 ; C 97 ; WX 574 ; N a ; B 2 -15 524 466 ; C 98 ; WX 556 ; N b ; B 32 -15 488 737 ; C 99 ; WX 444 ; N c ; B 2 -15 394 466 ; C 100 ; WX 611 ; N d ; B 2 -15 585 737 ; C 101 ; WX 444 ; N e ; B -6 -15 388 466 ; C 102 ; WX 333 ; N f ; B -68 -205 470 737 ; L i fi ; L l fl ; C 103 ; WX 537 ; N g ; B -79 -205 523 497 ; C 104 ; WX 611 ; N h ; B 14 -15 562 737 ; C 105 ; WX 333 ; N i ; B 29 -15 282 715 ; C 106 ; WX 315 ; N j ; B -166 -205 318 715 ; C 107 ; WX 556 ; N k ; B 0 -15 497 737 ; C 108 ; WX 333 ; N l ; B 14 -15 292 737 ; C 109 ; WX 889 ; N m ; B 14 -15 840 466 ; C 110 ; WX 611 ; N n ; B 14 -15 562 466 ; C 111 ; WX 500 ; N o ; B 2 -15 450 466 ; C 112 ; WX 574 ; N p ; B -101 -205 506 466 ; C 113 ; WX 556 ; N q ; B 2 -205 500 466 ; C 114 ; WX 444 ; N r ; B 10 0 434 466 ; C 115 ; WX 444 ; N s ; B 2 -15 394 466 ; C 116 ; WX 352 ; N t ; B 24 -15 328 619 ; C 117 ; WX 611 ; N u ; B 44 -15 556 466 ; C 118 ; WX 519 ; N v ; B 31 -15 447 466 ; C 119 ; WX 778 ; N w ; B 31 -15 706 466 ; C 120 ; WX 500 ; N x ; B -33 -15 471 466 ; C 121 ; WX 500 ; N y ; B -83 -205 450 466 ; C 122 ; WX 463 ; N z ; B -33 -15 416 466 ; C 123 ; WX 333 ; N braceleft ; B 38 -109 394 737 ; C 124 ; WX 606 ; N bar ; B 267 -250 339 750 ; C 125 ; WX 333 ; N braceright ; B -87 -109 269 737 ; C 126 ; WX 606 ; N asciitilde ; B 72 184 534 322 ; C 160 ; WX 278 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 333 ; N exclamdown ; B -22 -205 264 547 ; C 162 ; WX 556 ; N cent ; B 62 -144 486 580 ; C 163 ; WX 556 ; N sterling ; B -13 -15 544 705 ; C 164 ; WX 167 ; N fraction ; B -134 -15 301 705 ; C 165 ; WX 556 ; N yen ; B 40 0 624 690 ; C 166 ; WX 556 ; N florin ; B -58 -205 569 737 ; C 167 ; WX 500 ; N section ; B -10 -147 480 737 ; C 168 ; WX 556 ; N currency ; B 26 93 530 597 ; C 169 ; WX 278 ; N quotesingle ; B 151 463 237 737 ; C 170 ; WX 389 ; N quotedblleft ; B 39 463 406 737 ; C 171 ; WX 426 ; N guillemotleft ; B -15 74 402 402 ; C 172 ; WX 333 ; N guilsinglleft ; B 40 74 259 402 ; C 173 ; WX 333 ; N guilsinglright ; B 40 74 259 402 ; C 174 ; WX 611 ; N fi ; B -68 -205 555 737 ; C 175 ; WX 611 ; N fl ; B -68 -205 587 737 ; C 177 ; WX 500 ; N endash ; B -27 208 487 268 ; C 178 ; WX 500 ; N dagger ; B 51 -147 506 737 ; C 179 ; WX 500 ; N daggerdbl ; B -54 -147 506 737 ; C 180 ; WX 278 ; N periodcentered ; B 71 238 207 374 ; C 182 ; WX 650 ; N paragraph ; B 48 -132 665 722 ; C 183 ; WX 606 ; N bullet ; B 122 180 484 542 ; C 184 ; WX 204 ; N quotesinglbase ; B -78 -165 112 109 ; C 185 ; WX 389 ; N quotedblbase ; B -78 -165 289 109 ; C 186 ; WX 389 ; N quotedblright ; B 39 463 406 737 ; C 187 ; WX 426 ; N guillemotright ; B -15 74 402 402 ; C 188 ; WX 1000 ; N ellipsis ; B 59 -15 849 109 ; C 189 ; WX 1000 ; N perthousand ; B 6 -15 994 705 ; C 191 ; WX 444 ; N questiondown ; B -3 -205 312 547 ; C 193 ; WX 333 ; N grave ; B 71 518 262 690 ; C 194 ; WX 333 ; N acute ; B 132 518 355 690 ; C 195 ; WX 333 ; N circumflex ; B 37 518 331 690 ; C 196 ; WX 333 ; N tilde ; B 52 547 383 649 ; C 197 ; WX 333 ; N macron ; B 52 560 363 610 ; C 198 ; WX 333 ; N breve ; B 69 518 370 677 ; C 199 ; WX 333 ; N dotaccent ; B 146 606 255 715 ; C 200 ; WX 333 ; N dieresis ; B 59 606 359 708 ; C 202 ; WX 333 ; N ring ; B 114 512 314 712 ; C 203 ; WX 333 ; N cedilla ; B 3 -215 215 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 32 518 455 690 ; C 206 ; WX 333 ; N ogonek ; B 46 -220 334 4 ; C 207 ; WX 333 ; N caron ; B 73 518 378 690 ; C 208 ; WX 1000 ; N emdash ; B -27 208 987 268 ; C 225 ; WX 870 ; N AE ; B -87 0 888 722 ; C 227 ; WX 422 ; N ordfeminine ; B 72 416 420 705 ; C 232 ; WX 667 ; N Lslash ; B -33 0 627 722 ; C 233 ; WX 778 ; N Oslash ; B 16 -68 748 780 ; C 234 ; WX 981 ; N OE ; B 40 0 975 722 ; C 235 ; WX 372 ; N ordmasculine ; B 66 416 370 705 ; C 241 ; WX 722 ; N ae ; B -18 -15 666 466 ; C 245 ; WX 333 ; N dotlessi ; B 29 -15 282 466 ; C 248 ; WX 333 ; N lslash ; B -2 -15 294 737 ; C 249 ; WX 500 ; N oslash ; B 2 -121 450 549 ; C 250 ; WX 778 ; N oe ; B 2 -15 722 466 ; C 251 ; WX 556 ; N germandbls ; B -76 -205 525 737 ; C -1 ; WX 407 ; N Idieresis ; B -33 0 456 902 ; C -1 ; WX 444 ; N eacute ; B -6 -15 411 690 ; C -1 ; WX 574 ; N abreve ; B 2 -15 524 677 ; C -1 ; WX 611 ; N uhungarumlaut ; B 44 -15 594 690 ; C -1 ; WX 444 ; N ecaron ; B -6 -15 434 690 ; C -1 ; WX 685 ; N Ydieresis ; B 31 0 760 902 ; C -1 ; WX 606 ; N divide ; B 50 -22 556 528 ; C -1 ; WX 685 ; N Yacute ; B 31 0 760 946 ; C -1 ; WX 704 ; N Acircumflex ; B -87 0 668 946 ; C -1 ; WX 574 ; N aacute ; B 2 -15 524 690 ; C -1 ; WX 815 ; N Ucircumflex ; B 93 -15 867 946 ; C -1 ; WX 500 ; N yacute ; B -83 -205 450 690 ; C -1 ; WX 444 ; N scommaaccent ; B 2 -250 394 466 ; C -1 ; WX 444 ; N ecircumflex ; B -6 -15 388 690 ; C -1 ; WX 815 ; N Uring ; B 93 -15 867 958 ; C -1 ; WX 815 ; N Udieresis ; B 93 -15 867 902 ; C -1 ; WX 574 ; N aogonek ; B 2 -225 534 466 ; C -1 ; WX 815 ; N Uacute ; B 93 -15 867 946 ; C -1 ; WX 611 ; N uogonek ; B 44 -225 556 466 ; C -1 ; WX 722 ; N Edieresis ; B -33 0 700 902 ; C -1 ; WX 778 ; N Dcroat ; B -33 0 738 722 ; C -1 ; WX 250 ; N commaaccent ; B -24 -250 147 -50 ; C -1 ; WX 747 ; N copyright ; B -2 -15 750 737 ; C -1 ; WX 722 ; N Emacron ; B -33 0 700 866 ; C -1 ; WX 444 ; N ccaron ; B 2 -15 434 690 ; C -1 ; WX 574 ; N aring ; B 2 -15 524 712 ; C -1 ; WX 815 ; N Ncommaaccent ; B -51 -250 866 722 ; C -1 ; WX 333 ; N lacute ; B 14 -15 415 958 ; C -1 ; WX 574 ; N agrave ; B 2 -15 524 690 ; C -1 ; WX 685 ; N Tcommaaccent ; B 40 -250 725 722 ; C -1 ; WX 722 ; N Cacute ; B 40 -15 712 946 ; C -1 ; WX 574 ; N atilde ; B 2 -15 524 649 ; C -1 ; WX 722 ; N Edotaccent ; B -33 0 700 909 ; C -1 ; WX 444 ; N scaron ; B 2 -15 434 690 ; C -1 ; WX 444 ; N scedilla ; B 2 -215 394 466 ; C -1 ; WX 333 ; N iacute ; B 29 -15 355 690 ; C -1 ; WX 471 ; N lozenge ; B 10 0 462 728 ; C -1 ; WX 741 ; N Rcaron ; B -45 -15 692 946 ; C -1 ; WX 778 ; N Gcommaaccent ; B 40 -250 763 737 ; C -1 ; WX 611 ; N ucircumflex ; B 44 -15 556 690 ; C -1 ; WX 574 ; N acircumflex ; B 2 -15 524 690 ; C -1 ; WX 704 ; N Amacron ; B -87 0 668 866 ; C -1 ; WX 444 ; N rcaron ; B 10 0 434 690 ; C -1 ; WX 444 ; N ccedilla ; B 2 -215 394 466 ; C -1 ; WX 667 ; N Zdotaccent ; B -25 0 667 909 ; C -1 ; WX 667 ; N Thorn ; B -33 0 627 722 ; C -1 ; WX 778 ; N Omacron ; B 40 -15 738 866 ; C -1 ; WX 741 ; N Racute ; B -45 -15 692 946 ; C -1 ; WX 667 ; N Sacute ; B -6 -15 638 946 ; C -1 ; WX 651 ; N dcaron ; B 2 -15 729 737 ; C -1 ; WX 815 ; N Umacron ; B 93 -15 867 866 ; C -1 ; WX 611 ; N uring ; B 44 -15 556 712 ; C -1 ; WX 333 ; N threesuperior ; B 22 273 359 705 ; C -1 ; WX 778 ; N Ograve ; B 40 -15 738 946 ; C -1 ; WX 704 ; N Agrave ; B -87 0 668 946 ; C -1 ; WX 704 ; N Abreve ; B -87 0 668 933 ; C -1 ; WX 606 ; N multiply ; B 74 24 532 482 ; C -1 ; WX 611 ; N uacute ; B 44 -15 556 690 ; C -1 ; WX 685 ; N Tcaron ; B 40 0 725 946 ; C -1 ; WX 476 ; N partialdiff ; B 13 -38 463 714 ; C -1 ; WX 500 ; N ydieresis ; B -83 -205 450 646 ; C -1 ; WX 815 ; N Nacute ; B -51 -15 866 946 ; C -1 ; WX 333 ; N icircumflex ; B 29 -15 331 690 ; C -1 ; WX 722 ; N Ecircumflex ; B -33 0 700 946 ; C -1 ; WX 574 ; N adieresis ; B 2 -15 524 646 ; C -1 ; WX 444 ; N edieresis ; B -6 -15 415 646 ; C -1 ; WX 444 ; N cacute ; B 2 -15 411 690 ; C -1 ; WX 611 ; N nacute ; B 14 -15 562 690 ; C -1 ; WX 611 ; N umacron ; B 44 -15 556 610 ; C -1 ; WX 815 ; N Ncaron ; B -51 -15 866 946 ; C -1 ; WX 407 ; N Iacute ; B -33 0 452 946 ; C -1 ; WX 606 ; N plusminus ; B 50 0 556 506 ; C -1 ; WX 606 ; N brokenbar ; B 267 -175 339 675 ; C -1 ; WX 747 ; N registered ; B -2 -15 750 737 ; C -1 ; WX 778 ; N Gbreve ; B 40 -15 763 933 ; C -1 ; WX 407 ; N Idotaccent ; B -33 0 435 909 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 722 ; N Egrave ; B -33 0 700 946 ; C -1 ; WX 444 ; N racute ; B 10 0 434 690 ; C -1 ; WX 500 ; N omacron ; B 2 -15 450 610 ; C -1 ; WX 667 ; N Zacute ; B -25 0 667 946 ; C -1 ; WX 667 ; N Zcaron ; B -25 0 667 946 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 674 ; C -1 ; WX 778 ; N Eth ; B -33 0 738 722 ; C -1 ; WX 722 ; N Ccedilla ; B 40 -215 712 737 ; C -1 ; WX 333 ; N lcommaaccent ; B -43 -250 292 737 ; C -1 ; WX 382 ; N tcaron ; B 24 -15 460 757 ; C -1 ; WX 444 ; N eogonek ; B -6 -225 388 466 ; C -1 ; WX 815 ; N Uogonek ; B 93 -225 867 722 ; C -1 ; WX 704 ; N Aacute ; B -87 0 668 946 ; C -1 ; WX 704 ; N Adieresis ; B -87 0 668 902 ; C -1 ; WX 444 ; N egrave ; B -6 -15 388 690 ; C -1 ; WX 463 ; N zacute ; B -33 -15 420 690 ; C -1 ; WX 333 ; N iogonek ; B -14 -225 282 715 ; C -1 ; WX 778 ; N Oacute ; B 40 -15 738 946 ; C -1 ; WX 500 ; N oacute ; B 2 -15 450 690 ; C -1 ; WX 574 ; N amacron ; B 2 -15 524 610 ; C -1 ; WX 444 ; N sacute ; B 2 -15 411 690 ; C -1 ; WX 333 ; N idieresis ; B 29 -15 359 646 ; C -1 ; WX 778 ; N Ocircumflex ; B 40 -15 738 946 ; C -1 ; WX 815 ; N Ugrave ; B 93 -15 867 946 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 574 ; N thorn ; B -101 -205 506 737 ; C -1 ; WX 333 ; N twosuperior ; B 0 282 359 705 ; C -1 ; WX 778 ; N Odieresis ; B 40 -15 738 902 ; C -1 ; WX 611 ; N mu ; B -60 -205 556 466 ; C -1 ; WX 333 ; N igrave ; B 29 -15 282 690 ; C -1 ; WX 500 ; N ohungarumlaut ; B 2 -15 539 690 ; C -1 ; WX 722 ; N Eogonek ; B -33 -220 700 722 ; C -1 ; WX 611 ; N dcroat ; B 2 -15 636 737 ; C -1 ; WX 834 ; N threequarters ; B 22 -15 782 705 ; C -1 ; WX 667 ; N Scedilla ; B -6 -215 638 737 ; C -1 ; WX 363 ; N lcaron ; B 14 -15 436 737 ; C -1 ; WX 741 ; N Kcommaaccent ; B -33 -250 816 722 ; C -1 ; WX 667 ; N Lacute ; B -33 0 627 946 ; C -1 ; WX 950 ; N trademark ; B 32 318 968 722 ; C -1 ; WX 444 ; N edotaccent ; B -6 -15 388 653 ; C -1 ; WX 407 ; N Igrave ; B -33 0 435 946 ; C -1 ; WX 407 ; N Imacron ; B -33 0 460 866 ; C -1 ; WX 667 ; N Lcaron ; B -33 0 683 737 ; C -1 ; WX 834 ; N onehalf ; B 34 -15 776 705 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 674 ; C -1 ; WX 500 ; N ocircumflex ; B 2 -15 450 690 ; C -1 ; WX 611 ; N ntilde ; B 14 -15 562 649 ; C -1 ; WX 815 ; N Uhungarumlaut ; B 93 -15 867 946 ; C -1 ; WX 722 ; N Eacute ; B -33 0 700 946 ; C -1 ; WX 444 ; N emacron ; B -6 -15 419 610 ; C -1 ; WX 537 ; N gbreve ; B -79 -205 523 677 ; C -1 ; WX 834 ; N onequarter ; B 34 -15 782 705 ; C -1 ; WX 667 ; N Scaron ; B -6 -15 638 946 ; C -1 ; WX 667 ; N Scommaaccent ; B -6 -250 638 737 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 40 -15 738 946 ; C -1 ; WX 400 ; N degree ; B 86 419 372 705 ; C -1 ; WX 500 ; N ograve ; B 2 -15 450 690 ; C -1 ; WX 722 ; N Ccaron ; B 40 -15 712 946 ; C -1 ; WX 611 ; N ugrave ; B 44 -15 556 690 ; C -1 ; WX 453 ; N radical ; B -4 -80 458 762 ; C -1 ; WX 778 ; N Dcaron ; B -33 0 738 946 ; C -1 ; WX 444 ; N rcommaaccent ; B -67 -250 434 466 ; C -1 ; WX 815 ; N Ntilde ; B -51 -15 866 905 ; C -1 ; WX 500 ; N otilde ; B 2 -15 467 649 ; C -1 ; WX 741 ; N Rcommaaccent ; B -45 -250 692 722 ; C -1 ; WX 667 ; N Lcommaaccent ; B -33 -250 627 722 ; C -1 ; WX 704 ; N Atilde ; B -87 0 668 905 ; C -1 ; WX 704 ; N Aogonek ; B -87 -220 734 737 ; C -1 ; WX 704 ; N Aring ; B -87 0 668 958 ; C -1 ; WX 778 ; N Otilde ; B 40 -15 738 905 ; C -1 ; WX 463 ; N zdotaccent ; B -33 -15 416 653 ; C -1 ; WX 722 ; N Ecaron ; B -33 0 700 946 ; C -1 ; WX 407 ; N Iogonek ; B -33 -220 435 722 ; C -1 ; WX 556 ; N kcommaaccent ; B 0 -250 497 737 ; C -1 ; WX 606 ; N minus ; B 50 217 556 289 ; C -1 ; WX 407 ; N Icircumflex ; B -33 0 435 946 ; C -1 ; WX 611 ; N ncaron ; B 14 -15 562 690 ; C -1 ; WX 352 ; N tcommaaccent ; B -33 -250 328 619 ; C -1 ; WX 606 ; N logicalnot ; B 50 108 556 389 ; C -1 ; WX 500 ; N odieresis ; B 2 -15 450 646 ; C -1 ; WX 611 ; N udieresis ; B 44 -15 556 646 ; C -1 ; WX 549 ; N notequal ; B 12 -35 537 551 ; C -1 ; WX 537 ; N gcommaaccent ; B -79 -205 523 805 ; C -1 ; WX 500 ; N eth ; B 2 -15 450 737 ; C -1 ; WX 463 ; N zcaron ; B -33 -15 443 690 ; C -1 ; WX 611 ; N ncommaaccent ; B 14 -250 562 466 ; C -1 ; WX 333 ; N onesuperior ; B 34 282 311 705 ; C -1 ; WX 333 ; N imacron ; B 29 -15 300 610 ; C -1 ; WX 556 ; N Euro ; B -29 -15 629 713 ; C -1 ; WX 722 ; N Ccircumflex ; B 40 -15 713 966 ; C -1 ; WX 444 ; N ccircumflex ; B 5 -15 434 699 ; C -1 ; WX 722 ; N Cdotaccent ; B 40 -15 713 895 ; C -1 ; WX 444 ; N cdotaccent ; B 5 -15 401 628 ; C -1 ; WX 722 ; N Ebreve ; B -37 0 701 956 ; C -1 ; WX 444 ; N ebreve ; B -6 -15 481 689 ; C -1 ; WX 778 ; N Gcircumflex ; B 39 -15 763 966 ; C -1 ; WX 537 ; N gcircumflex ; B -79 -202 523 734 ; C -1 ; WX 778 ; N Gdotaccent ; B 39 -15 763 895 ; C -1 ; WX 537 ; N gdotaccent ; B -79 -202 523 663 ; C -1 ; WX 833 ; N Hcircumflex ; B -38 0 867 966 ; C -1 ; WX 611 ; N hcircumflex ; B 0 -15 577 966 ; C -1 ; WX 833 ; N Hbar ; B -38 0 867 722 ; C -1 ; WX 611 ; N hbar ; B 0 -15 555 737 ; C -1 ; WX 407 ; N Itilde ; B -33 0 501 928 ; C -1 ; WX 333 ; N itilde ; B 27 -14 412 676 ; C -1 ; WX 407 ; N Ibreve ; B -33 0 515 981 ; C -1 ; WX 333 ; N ibreve ; B 27 -14 426 729 ; C -1 ; WX 921 ; N IJ ; B -33 -15 946 722 ; C -1 ; WX 660 ; N ij ; B 27 -202 610 714 ; C -1 ; WX 611 ; N Jcircumflex ; B -13 -15 646 991 ; C -1 ; WX 315 ; N jcircumflex ; B -166 -202 331 688 ; C -1 ; WX 613 ; N kgreenlandic ; B 14 -10 547 481 ; C -1 ; WX 667 ; N Ldot ; B -37 0 630 722 ; C -1 ; WX 432 ; N ldot ; B 16 -15 396 737 ; C -1 ; WX 611 ; N napostrophe ; B 14 -15 562 779 ; C -1 ; WX 815 ; N Eng ; B -48 -176 859 722 ; C -1 ; WX 611 ; N eng ; B 14 -160 481 470 ; C -1 ; WX 778 ; N Obreve ; B 40 -15 735 956 ; C -1 ; WX 500 ; N obreve ; B 5 -15 482 689 ; C -1 ; WX 667 ; N Scircumflex ; B 0 -15 632 966 ; C -1 ; WX 444 ; N scircumflex ; B -1 -15 407 699 ; C -1 ; WX 685 ; N Tbar ; B 40 0 726 722 ; C -1 ; WX 352 ; N tbar ; B -10 -15 329 621 ; C -1 ; WX 685 ; N Tcedilla ; B 40 -250 725 722 ; C -1 ; WX 352 ; N tcedilla ; B -33 -250 328 619 ; C -1 ; WX 815 ; N Utilde ; B 93 -15 860 903 ; C -1 ; WX 611 ; N utilde ; B 41 -15 556 636 ; C -1 ; WX 815 ; N Ubreve ; B 93 -15 860 956 ; C -1 ; WX 611 ; N ubreve ; B 41 -15 556 689 ; C -1 ; WX 926 ; N Wcircumflex ; B 53 -15 973 966 ; C -1 ; WX 778 ; N wcircumflex ; B 32 -15 708 699 ; C -1 ; WX 685 ; N Ycircumflex ; B 32 0 758 966 ; C -1 ; WX 500 ; N ycircumflex ; B -79 -202 454 699 ; C -1 ; WX 333 ; N longs ; B -68 -202 470 736 ; C -1 ; WX 716 ; N infinity ; B 3 24 699 433 ; EndCharMetrics StartKernData StartKernPairs 1696 KPX A C -18 KPX A Cacute -18 KPX A Ccaron -18 KPX A Ccedilla -18 KPX A G -18 KPX A Gbreve -18 KPX A Gcommaaccent -18 KPX A O -18 KPX A Oacute -18 KPX A Ocircumflex -18 KPX A Odieresis -18 KPX A Ograve -18 KPX A Ohungarumlaut -18 KPX A Omacron -18 KPX A Oslash -18 KPX A Otilde -18 KPX A Q -18 KPX A T -30 KPX A Tcaron -30 KPX A Tcommaaccent -30 KPX A U -37 KPX A Uacute -37 KPX A Ucircumflex -37 KPX A Udieresis -37 KPX A Ugrave -37 KPX A Uhungarumlaut -37 KPX A Umacron -37 KPX A Uogonek -37 KPX A Uring -37 KPX A V -74 KPX A W -74 KPX A Y -55 KPX A Yacute -55 KPX A Ydieresis -55 KPX A quotedblright -125 KPX A quoteright -125 KPX A u -18 KPX A uacute -18 KPX A ucircumflex -18 KPX A udieresis -18 KPX A ugrave -18 KPX A uhungarumlaut -18 KPX A umacron -18 KPX A uogonek -18 KPX A uring -18 KPX A v -18 KPX A w -18 KPX A y -55 KPX A yacute -55 KPX A ydieresis -55 KPX Aacute C -18 KPX Aacute Cacute -18 KPX Aacute Ccaron -18 KPX Aacute Ccedilla -18 KPX Aacute G -18 KPX Aacute Gbreve -18 KPX Aacute Gcommaaccent -18 KPX Aacute O -18 KPX Aacute Oacute -18 KPX Aacute Ocircumflex -18 KPX Aacute Odieresis -18 KPX Aacute Ograve -18 KPX Aacute Ohungarumlaut -18 KPX Aacute Omacron -18 KPX Aacute Oslash -18 KPX Aacute Otilde -18 KPX Aacute Q -18 KPX Aacute T -30 KPX Aacute Tcaron -30 KPX Aacute Tcommaaccent -30 KPX Aacute U -37 KPX Aacute Uacute -37 KPX Aacute Ucircumflex -37 KPX Aacute Udieresis -37 KPX Aacute Ugrave -37 KPX Aacute Uhungarumlaut -37 KPX Aacute Umacron -37 KPX Aacute Uogonek -37 KPX Aacute Uring -37 KPX Aacute V -74 KPX Aacute W -74 KPX Aacute Y -55 KPX Aacute Yacute -55 KPX Aacute Ydieresis -55 KPX Aacute quotedblright -125 KPX Aacute quoteright -125 KPX Aacute u -18 KPX Aacute uacute -18 KPX Aacute ucircumflex -18 KPX Aacute udieresis -18 KPX Aacute ugrave -18 KPX Aacute uhungarumlaut -18 KPX Aacute umacron -18 KPX Aacute uogonek -18 KPX Aacute uring -18 KPX Aacute v -18 KPX Aacute w -18 KPX Aacute y -55 KPX Aacute yacute -55 KPX Aacute ydieresis -55 KPX Abreve C -18 KPX Abreve Cacute -18 KPX Abreve Ccaron -18 KPX Abreve Ccedilla -18 KPX Abreve G -18 KPX Abreve Gbreve -18 KPX Abreve Gcommaaccent -18 KPX Abreve O -18 KPX Abreve Oacute -18 KPX Abreve Ocircumflex -18 KPX Abreve Odieresis -18 KPX Abreve Ograve -18 KPX Abreve Ohungarumlaut -18 KPX Abreve Omacron -18 KPX Abreve Oslash -18 KPX Abreve Otilde -18 KPX Abreve Q -18 KPX Abreve T -30 KPX Abreve Tcaron -30 KPX Abreve Tcommaaccent -30 KPX Abreve U -37 KPX Abreve Uacute -37 KPX Abreve Ucircumflex -37 KPX Abreve Udieresis -37 KPX Abreve Ugrave -37 KPX Abreve Uhungarumlaut -37 KPX Abreve Umacron -37 KPX Abreve Uogonek -37 KPX Abreve Uring -37 KPX Abreve V -74 KPX Abreve W -74 KPX Abreve Y -55 KPX Abreve Yacute -55 KPX Abreve Ydieresis -55 KPX Abreve quotedblright -125 KPX Abreve quoteright -125 KPX Abreve u -18 KPX Abreve uacute -18 KPX Abreve ucircumflex -18 KPX Abreve udieresis -18 KPX Abreve ugrave -18 KPX Abreve uhungarumlaut -18 KPX Abreve umacron -18 KPX Abreve uogonek -18 KPX Abreve uring -18 KPX Abreve v -18 KPX Abreve w -18 KPX Abreve y -55 KPX Abreve yacute -55 KPX Abreve ydieresis -55 KPX Acircumflex C -18 KPX Acircumflex Cacute -18 KPX Acircumflex Ccaron -18 KPX Acircumflex Ccedilla -18 KPX Acircumflex G -18 KPX Acircumflex Gbreve -18 KPX Acircumflex Gcommaaccent -18 KPX Acircumflex O -18 KPX Acircumflex Oacute -18 KPX Acircumflex Ocircumflex -18 KPX Acircumflex Odieresis -18 KPX Acircumflex Ograve -18 KPX Acircumflex Ohungarumlaut -18 KPX Acircumflex Omacron -18 KPX Acircumflex Oslash -18 KPX Acircumflex Otilde -18 KPX Acircumflex Q -18 KPX Acircumflex T -30 KPX Acircumflex Tcaron -30 KPX Acircumflex Tcommaaccent -30 KPX Acircumflex U -37 KPX Acircumflex Uacute -37 KPX Acircumflex Ucircumflex -37 KPX Acircumflex Udieresis -37 KPX Acircumflex Ugrave -37 KPX Acircumflex Uhungarumlaut -37 KPX Acircumflex Umacron -37 KPX Acircumflex Uogonek -37 KPX Acircumflex Uring -37 KPX Acircumflex V -74 KPX Acircumflex W -74 KPX Acircumflex Y -55 KPX Acircumflex Yacute -55 KPX Acircumflex Ydieresis -55 KPX Acircumflex quotedblright -125 KPX Acircumflex quoteright -125 KPX Acircumflex u -18 KPX Acircumflex uacute -18 KPX Acircumflex ucircumflex -18 KPX Acircumflex udieresis -18 KPX Acircumflex ugrave -18 KPX Acircumflex uhungarumlaut -18 KPX Acircumflex umacron -18 KPX Acircumflex uogonek -18 KPX Acircumflex uring -18 KPX Acircumflex v -18 KPX Acircumflex w -18 KPX Acircumflex y -55 KPX Acircumflex yacute -55 KPX Acircumflex ydieresis -55 KPX Adieresis C -18 KPX Adieresis Cacute -18 KPX Adieresis Ccaron -18 KPX Adieresis Ccedilla -18 KPX Adieresis G -18 KPX Adieresis Gbreve -18 KPX Adieresis Gcommaaccent -18 KPX Adieresis O -18 KPX Adieresis Oacute -18 KPX Adieresis Ocircumflex -18 KPX Adieresis Odieresis -18 KPX Adieresis Ograve -18 KPX Adieresis Ohungarumlaut -18 KPX Adieresis Omacron -18 KPX Adieresis Oslash -18 KPX Adieresis Otilde -18 KPX Adieresis Q -18 KPX Adieresis T -30 KPX Adieresis Tcaron -30 KPX Adieresis Tcommaaccent -30 KPX Adieresis U -37 KPX Adieresis Uacute -37 KPX Adieresis Ucircumflex -37 KPX Adieresis Udieresis -37 KPX Adieresis Ugrave -37 KPX Adieresis Uhungarumlaut -37 KPX Adieresis Umacron -37 KPX Adieresis Uogonek -37 KPX Adieresis Uring -37 KPX Adieresis V -74 KPX Adieresis W -74 KPX Adieresis Y -55 KPX Adieresis Yacute -55 KPX Adieresis Ydieresis -55 KPX Adieresis quotedblright -125 KPX Adieresis quoteright -125 KPX Adieresis u -18 KPX Adieresis uacute -18 KPX Adieresis ucircumflex -18 KPX Adieresis udieresis -18 KPX Adieresis ugrave -18 KPX Adieresis uhungarumlaut -18 KPX Adieresis umacron -18 KPX Adieresis uogonek -18 KPX Adieresis uring -18 KPX Adieresis v -18 KPX Adieresis w -18 KPX Adieresis y -55 KPX Adieresis yacute -55 KPX Adieresis ydieresis -55 KPX Agrave C -18 KPX Agrave Cacute -18 KPX Agrave Ccaron -18 KPX Agrave Ccedilla -18 KPX Agrave G -18 KPX Agrave Gbreve -18 KPX Agrave Gcommaaccent -18 KPX Agrave O -18 KPX Agrave Oacute -18 KPX Agrave Ocircumflex -18 KPX Agrave Odieresis -18 KPX Agrave Ograve -18 KPX Agrave Ohungarumlaut -18 KPX Agrave Omacron -18 KPX Agrave Oslash -18 KPX Agrave Otilde -18 KPX Agrave Q -18 KPX Agrave T -30 KPX Agrave Tcaron -30 KPX Agrave Tcommaaccent -30 KPX Agrave U -37 KPX Agrave Uacute -37 KPX Agrave Ucircumflex -37 KPX Agrave Udieresis -37 KPX Agrave Ugrave -37 KPX Agrave Uhungarumlaut -37 KPX Agrave Umacron -37 KPX Agrave Uogonek -37 KPX Agrave Uring -37 KPX Agrave V -74 KPX Agrave W -74 KPX Agrave Y -55 KPX Agrave Yacute -55 KPX Agrave Ydieresis -55 KPX Agrave quotedblright -125 KPX Agrave quoteright -125 KPX Agrave u -18 KPX Agrave uacute -18 KPX Agrave ucircumflex -18 KPX Agrave udieresis -18 KPX Agrave ugrave -18 KPX Agrave uhungarumlaut -18 KPX Agrave umacron -18 KPX Agrave uogonek -18 KPX Agrave uring -18 KPX Agrave v -18 KPX Agrave w -18 KPX Agrave y -55 KPX Agrave yacute -55 KPX Agrave ydieresis -55 KPX Amacron C -18 KPX Amacron Cacute -18 KPX Amacron Ccaron -18 KPX Amacron Ccedilla -18 KPX Amacron G -18 KPX Amacron Gbreve -18 KPX Amacron Gcommaaccent -18 KPX Amacron O -18 KPX Amacron Oacute -18 KPX Amacron Ocircumflex -18 KPX Amacron Odieresis -18 KPX Amacron Ograve -18 KPX Amacron Ohungarumlaut -18 KPX Amacron Omacron -18 KPX Amacron Oslash -18 KPX Amacron Otilde -18 KPX Amacron Q -18 KPX Amacron T -30 KPX Amacron Tcaron -30 KPX Amacron Tcommaaccent -30 KPX Amacron U -37 KPX Amacron Uacute -37 KPX Amacron Ucircumflex -37 KPX Amacron Udieresis -37 KPX Amacron Ugrave -37 KPX Amacron Uhungarumlaut -37 KPX Amacron Umacron -37 KPX Amacron Uogonek -37 KPX Amacron Uring -37 KPX Amacron V -74 KPX Amacron W -74 KPX Amacron Y -55 KPX Amacron Yacute -55 KPX Amacron Ydieresis -55 KPX Amacron quotedblright -125 KPX Amacron quoteright -125 KPX Amacron u -18 KPX Amacron uacute -18 KPX Amacron ucircumflex -18 KPX Amacron udieresis -18 KPX Amacron ugrave -18 KPX Amacron uhungarumlaut -18 KPX Amacron umacron -18 KPX Amacron uogonek -18 KPX Amacron uring -18 KPX Amacron v -18 KPX Amacron w -18 KPX Amacron y -55 KPX Amacron yacute -55 KPX Amacron ydieresis -55 KPX Aogonek C -18 KPX Aogonek Cacute -18 KPX Aogonek Ccaron -18 KPX Aogonek Ccedilla -18 KPX Aogonek G -18 KPX Aogonek Gbreve -18 KPX Aogonek Gcommaaccent -18 KPX Aogonek O -18 KPX Aogonek Oacute -18 KPX Aogonek Ocircumflex -18 KPX Aogonek Odieresis -18 KPX Aogonek Ograve -18 KPX Aogonek Ohungarumlaut -18 KPX Aogonek Omacron -18 KPX Aogonek Oslash -18 KPX Aogonek Otilde -18 KPX Aogonek Q -18 KPX Aogonek T -30 KPX Aogonek Tcaron -30 KPX Aogonek Tcommaaccent -30 KPX Aogonek U -37 KPX Aogonek Uacute -37 KPX Aogonek Ucircumflex -37 KPX Aogonek Udieresis -37 KPX Aogonek Ugrave -37 KPX Aogonek Uhungarumlaut -37 KPX Aogonek Umacron -37 KPX Aogonek Uogonek -37 KPX Aogonek Uring -37 KPX Aogonek V -74 KPX Aogonek W -74 KPX Aogonek Y -55 KPX Aogonek Yacute -55 KPX Aogonek Ydieresis -55 KPX Aogonek quotedblright -125 KPX Aogonek quoteright -125 KPX Aogonek u -18 KPX Aogonek uacute -18 KPX Aogonek ucircumflex -18 KPX Aogonek udieresis -18 KPX Aogonek ugrave -18 KPX Aogonek uhungarumlaut -18 KPX Aogonek umacron -18 KPX Aogonek uogonek -18 KPX Aogonek uring -18 KPX Aogonek v -18 KPX Aogonek w -18 KPX Aring C -18 KPX Aring Cacute -18 KPX Aring Ccaron -18 KPX Aring Ccedilla -18 KPX Aring G -18 KPX Aring Gbreve -18 KPX Aring Gcommaaccent -18 KPX Aring O -18 KPX Aring Oacute -18 KPX Aring Ocircumflex -18 KPX Aring Odieresis -18 KPX Aring Ograve -18 KPX Aring Ohungarumlaut -18 KPX Aring Omacron -18 KPX Aring Oslash -18 KPX Aring Otilde -18 KPX Aring Q -18 KPX Aring T -30 KPX Aring Tcaron -30 KPX Aring Tcommaaccent -30 KPX Aring U -37 KPX Aring Uacute -37 KPX Aring Ucircumflex -37 KPX Aring Udieresis -37 KPX Aring Ugrave -37 KPX Aring Uhungarumlaut -37 KPX Aring Umacron -37 KPX Aring Uogonek -37 KPX Aring Uring -37 KPX Aring V -74 KPX Aring W -74 KPX Aring Y -55 KPX Aring Yacute -55 KPX Aring Ydieresis -55 KPX Aring quotedblright -125 KPX Aring quoteright -125 KPX Aring u -18 KPX Aring uacute -18 KPX Aring ucircumflex -18 KPX Aring udieresis -18 KPX Aring ugrave -18 KPX Aring uhungarumlaut -18 KPX Aring umacron -18 KPX Aring uogonek -18 KPX Aring uring -18 KPX Aring v -18 KPX Aring w -18 KPX Aring y -55 KPX Aring yacute -55 KPX Aring ydieresis -55 KPX Atilde C -18 KPX Atilde Cacute -18 KPX Atilde Ccaron -18 KPX Atilde Ccedilla -18 KPX Atilde G -18 KPX Atilde Gbreve -18 KPX Atilde Gcommaaccent -18 KPX Atilde O -18 KPX Atilde Oacute -18 KPX Atilde Ocircumflex -18 KPX Atilde Odieresis -18 KPX Atilde Ograve -18 KPX Atilde Ohungarumlaut -18 KPX Atilde Omacron -18 KPX Atilde Oslash -18 KPX Atilde Otilde -18 KPX Atilde Q -18 KPX Atilde T -30 KPX Atilde Tcaron -30 KPX Atilde Tcommaaccent -30 KPX Atilde U -37 KPX Atilde Uacute -37 KPX Atilde Ucircumflex -37 KPX Atilde Udieresis -37 KPX Atilde Ugrave -37 KPX Atilde Uhungarumlaut -37 KPX Atilde Umacron -37 KPX Atilde Uogonek -37 KPX Atilde Uring -37 KPX Atilde V -74 KPX Atilde W -74 KPX Atilde Y -55 KPX Atilde Yacute -55 KPX Atilde Ydieresis -55 KPX Atilde quotedblright -125 KPX Atilde quoteright -125 KPX Atilde u -18 KPX Atilde uacute -18 KPX Atilde ucircumflex -18 KPX Atilde udieresis -18 KPX Atilde ugrave -18 KPX Atilde uhungarumlaut -18 KPX Atilde umacron -18 KPX Atilde uogonek -18 KPX Atilde uring -18 KPX Atilde v -18 KPX Atilde w -18 KPX Atilde y -55 KPX Atilde yacute -55 KPX Atilde ydieresis -55 KPX B comma -50 KPX B period -50 KPX C comma -50 KPX C period -50 KPX Cacute comma -50 KPX Cacute period -50 KPX Ccaron comma -50 KPX Ccaron period -50 KPX Ccedilla comma -50 KPX Ccedilla period -50 KPX D V -18 KPX D W -18 KPX D Y -18 KPX D Yacute -18 KPX D Ydieresis -18 KPX D comma -50 KPX D period -50 KPX Dcaron V -18 KPX Dcaron W -18 KPX Dcaron Y -18 KPX Dcaron Yacute -18 KPX Dcaron Ydieresis -18 KPX Dcaron comma -50 KPX Dcaron period -50 KPX Dcroat V -18 KPX Dcroat W -18 KPX Dcroat Y -18 KPX Dcroat Yacute -18 KPX Dcroat Ydieresis -18 KPX Dcroat comma -50 KPX Dcroat period -50 KPX F A -35 KPX F Aacute -35 KPX F Abreve -35 KPX F Acircumflex -35 KPX F Adieresis -35 KPX F Agrave -35 KPX F Amacron -35 KPX F Aogonek -35 KPX F Aring -35 KPX F Atilde -35 KPX F a -55 KPX F aacute -55 KPX F abreve -55 KPX F acircumflex -55 KPX F adieresis -55 KPX F agrave -55 KPX F amacron -55 KPX F aogonek -55 KPX F aring -55 KPX F atilde -55 KPX F comma -125 KPX F e -55 KPX F eacute -55 KPX F ecaron -55 KPX F ecircumflex -55 KPX F edieresis -55 KPX F edotaccent -55 KPX F egrave -55 KPX F emacron -55 KPX F eogonek -55 KPX F i -10 KPX F iacute -10 KPX F icircumflex -10 KPX F idieresis -10 KPX F igrave -10 KPX F imacron -10 KPX F iogonek -10 KPX F o -55 KPX F oacute -55 KPX F ocircumflex -55 KPX F odieresis -55 KPX F ograve -55 KPX F ohungarumlaut -55 KPX F omacron -55 KPX F oslash -55 KPX F otilde -55 KPX F period -125 KPX F r -55 KPX F racute -55 KPX F rcaron -55 KPX F rcommaaccent -55 KPX G comma -50 KPX G period -50 KPX Gbreve comma -50 KPX Gbreve period -50 KPX Gcommaaccent comma -50 KPX Gcommaaccent period -50 KPX J A -18 KPX J Aacute -18 KPX J Abreve -18 KPX J Acircumflex -18 KPX J Adieresis -18 KPX J Agrave -18 KPX J Amacron -18 KPX J Aogonek -18 KPX J Aring -18 KPX J Atilde -18 KPX J a -37 KPX J aacute -37 KPX J abreve -37 KPX J acircumflex -37 KPX J adieresis -37 KPX J agrave -37 KPX J amacron -37 KPX J aogonek -37 KPX J aring -37 KPX J atilde -37 KPX J comma -100 KPX J e -37 KPX J eacute -37 KPX J ecaron -37 KPX J ecircumflex -37 KPX J edieresis -37 KPX J edotaccent -37 KPX J egrave -37 KPX J emacron -37 KPX J eogonek -37 KPX J o -37 KPX J oacute -37 KPX J ocircumflex -37 KPX J odieresis -37 KPX J ograve -37 KPX J ohungarumlaut -37 KPX J omacron -37 KPX J oslash -37 KPX J otilde -37 KPX J period -100 KPX J u -18 KPX J uacute -18 KPX J ucircumflex -18 KPX J udieresis -18 KPX J ugrave -18 KPX J uhungarumlaut -18 KPX J umacron -18 KPX J uogonek -18 KPX J uring -18 KPX L T -100 KPX L Tcaron -100 KPX L Tcommaaccent -100 KPX L V -100 KPX L W -100 KPX L Y -100 KPX L Yacute -100 KPX L Ydieresis -100 KPX L quotedblright -125 KPX L quoteright -125 KPX L y -50 KPX L yacute -50 KPX L ydieresis -50 KPX Lacute T -100 KPX Lacute Tcaron -100 KPX Lacute Tcommaaccent -100 KPX Lacute V -100 KPX Lacute W -100 KPX Lacute Y -100 KPX Lacute Yacute -100 KPX Lacute Ydieresis -100 KPX Lacute quotedblright -125 KPX Lacute quoteright -125 KPX Lacute y -50 KPX Lacute yacute -50 KPX Lacute ydieresis -50 KPX Lcommaaccent T -100 KPX Lcommaaccent Tcaron -100 KPX Lcommaaccent Tcommaaccent -100 KPX Lcommaaccent V -100 KPX Lcommaaccent W -100 KPX Lcommaaccent Y -100 KPX Lcommaaccent Yacute -100 KPX Lcommaaccent Ydieresis -100 KPX Lcommaaccent quotedblright -125 KPX Lcommaaccent quoteright -125 KPX Lcommaaccent y -50 KPX Lcommaaccent yacute -50 KPX Lcommaaccent ydieresis -50 KPX Lslash T -100 KPX Lslash Tcaron -100 KPX Lslash Tcommaaccent -100 KPX Lslash V -100 KPX Lslash W -100 KPX Lslash Y -100 KPX Lslash Yacute -100 KPX Lslash Ydieresis -100 KPX Lslash quotedblright -125 KPX Lslash quoteright -125 KPX Lslash y -50 KPX Lslash yacute -50 KPX Lslash ydieresis -50 KPX N comma -60 KPX N period -60 KPX Nacute comma -60 KPX Nacute period -60 KPX Ncaron comma -60 KPX Ncaron period -60 KPX Ncommaaccent comma -60 KPX Ncommaaccent period -60 KPX Ntilde comma -60 KPX Ntilde period -60 KPX O T 18 KPX O Tcaron 18 KPX O Tcommaaccent 18 KPX O V -18 KPX O X -18 KPX O Y -18 KPX O Yacute -18 KPX O Ydieresis -18 KPX O comma -50 KPX O period -50 KPX Oacute T 18 KPX Oacute Tcaron 18 KPX Oacute Tcommaaccent 18 KPX Oacute V -18 KPX Oacute X -18 KPX Oacute Y -18 KPX Oacute Yacute -18 KPX Oacute Ydieresis -18 KPX Oacute comma -50 KPX Oacute period -50 KPX Ocircumflex T 18 KPX Ocircumflex Tcaron 18 KPX Ocircumflex Tcommaaccent 18 KPX Ocircumflex V -18 KPX Ocircumflex X -18 KPX Ocircumflex Y -18 KPX Ocircumflex Yacute -18 KPX Ocircumflex Ydieresis -18 KPX Ocircumflex comma -50 KPX Ocircumflex period -50 KPX Odieresis T 18 KPX Odieresis Tcaron 18 KPX Odieresis Tcommaaccent 18 KPX Odieresis V -18 KPX Odieresis X -18 KPX Odieresis Y -18 KPX Odieresis Yacute -18 KPX Odieresis Ydieresis -18 KPX Odieresis comma -50 KPX Odieresis period -50 KPX Ograve T 18 KPX Ograve Tcaron 18 KPX Ograve Tcommaaccent 18 KPX Ograve V -18 KPX Ograve X -18 KPX Ograve Y -18 KPX Ograve Yacute -18 KPX Ograve Ydieresis -18 KPX Ograve comma -50 KPX Ograve period -50 KPX Ohungarumlaut T 18 KPX Ohungarumlaut Tcaron 18 KPX Ohungarumlaut Tcommaaccent 18 KPX Ohungarumlaut V -18 KPX Ohungarumlaut X -18 KPX Ohungarumlaut Y -18 KPX Ohungarumlaut Yacute -18 KPX Ohungarumlaut Ydieresis -18 KPX Ohungarumlaut comma -50 KPX Ohungarumlaut period -50 KPX Omacron T 18 KPX Omacron Tcaron 18 KPX Omacron Tcommaaccent 18 KPX Omacron V -18 KPX Omacron X -18 KPX Omacron Y -18 KPX Omacron Yacute -18 KPX Omacron Ydieresis -18 KPX Omacron comma -50 KPX Omacron period -50 KPX Oslash T 18 KPX Oslash Tcaron 18 KPX Oslash Tcommaaccent 18 KPX Oslash V -18 KPX Oslash X -18 KPX Oslash Y -18 KPX Oslash Yacute -18 KPX Oslash Ydieresis -18 KPX Oslash comma -50 KPX Oslash period -50 KPX Otilde T 18 KPX Otilde Tcaron 18 KPX Otilde Tcommaaccent 18 KPX Otilde V -18 KPX Otilde X -18 KPX Otilde Y -18 KPX Otilde Yacute -18 KPX Otilde Ydieresis -18 KPX Otilde comma -50 KPX Otilde period -50 KPX P A -50 KPX P Aacute -50 KPX P Abreve -50 KPX P Acircumflex -50 KPX P Adieresis -50 KPX P Agrave -50 KPX P Amacron -50 KPX P Aogonek -50 KPX P Aring -50 KPX P Atilde -50 KPX P a -55 KPX P aacute -55 KPX P abreve -55 KPX P acircumflex -55 KPX P adieresis -55 KPX P agrave -55 KPX P amacron -55 KPX P aogonek -55 KPX P aring -55 KPX P atilde -55 KPX P comma -125 KPX P e -55 KPX P eacute -55 KPX P ecaron -55 KPX P ecircumflex -55 KPX P edieresis -55 KPX P edotaccent -55 KPX P egrave -55 KPX P emacron -55 KPX P eogonek -55 KPX P o -55 KPX P oacute -55 KPX P ocircumflex -55 KPX P odieresis -55 KPX P ograve -55 KPX P ohungarumlaut -55 KPX P omacron -55 KPX P oslash -55 KPX P otilde -55 KPX P period -125 KPX Q comma -20 KPX Q period -20 KPX R U -18 KPX R Uacute -18 KPX R Ucircumflex -18 KPX R Udieresis -18 KPX R Ugrave -18 KPX R Uhungarumlaut -18 KPX R Umacron -18 KPX R Uogonek -18 KPX R Uring -18 KPX R V -18 KPX R W -18 KPX R Y -18 KPX R Yacute -18 KPX R Ydieresis -18 KPX Racute U -18 KPX Racute Uacute -18 KPX Racute Ucircumflex -18 KPX Racute Udieresis -18 KPX Racute Ugrave -18 KPX Racute Uhungarumlaut -18 KPX Racute Umacron -18 KPX Racute Uogonek -18 KPX Racute Uring -18 KPX Racute V -18 KPX Racute W -18 KPX Racute Y -18 KPX Racute Yacute -18 KPX Racute Ydieresis -18 KPX Rcaron U -18 KPX Rcaron Uacute -18 KPX Rcaron Ucircumflex -18 KPX Rcaron Udieresis -18 KPX Rcaron Ugrave -18 KPX Rcaron Uhungarumlaut -18 KPX Rcaron Umacron -18 KPX Rcaron Uogonek -18 KPX Rcaron Uring -18 KPX Rcaron V -18 KPX Rcaron W -18 KPX Rcaron Y -18 KPX Rcaron Yacute -18 KPX Rcaron Ydieresis -18 KPX Rcommaaccent U -18 KPX Rcommaaccent Uacute -18 KPX Rcommaaccent Ucircumflex -18 KPX Rcommaaccent Udieresis -18 KPX Rcommaaccent Ugrave -18 KPX Rcommaaccent Uhungarumlaut -18 KPX Rcommaaccent Umacron -18 KPX Rcommaaccent Uogonek -18 KPX Rcommaaccent Uring -18 KPX Rcommaaccent V -18 KPX Rcommaaccent W -18 KPX Rcommaaccent Y -18 KPX Rcommaaccent Yacute -18 KPX Rcommaaccent Ydieresis -18 KPX S comma -50 KPX S period -50 KPX Sacute comma -50 KPX Sacute period -50 KPX Scaron comma -50 KPX Scaron period -50 KPX Scedilla comma -50 KPX Scedilla period -50 KPX Scommaaccent comma -50 KPX Scommaaccent period -50 KPX T O 18 KPX T Oacute 18 KPX T Ocircumflex 18 KPX T Odieresis 18 KPX T Ograve 18 KPX T Ohungarumlaut 18 KPX T Omacron 18 KPX T Oslash 18 KPX T Otilde 18 KPX T a -74 KPX T aacute -74 KPX T abreve -74 KPX T acircumflex -74 KPX T adieresis -74 KPX T agrave -74 KPX T amacron -74 KPX T aogonek -74 KPX T aring -74 KPX T atilde -74 KPX T colon -50 KPX T comma -100 KPX T e -74 KPX T eacute -74 KPX T ecaron -34 KPX T ecircumflex -34 KPX T edieresis -34 KPX T edotaccent -74 KPX T egrave -34 KPX T emacron -34 KPX T eogonek -74 KPX T h -25 KPX T hyphen -100 KPX T i -18 KPX T iacute -18 KPX T icircumflex -18 KPX T iogonek -18 KPX T o -74 KPX T oacute -74 KPX T ocircumflex -74 KPX T odieresis -34 KPX T ograve -34 KPX T ohungarumlaut -34 KPX T omacron -34 KPX T oslash -74 KPX T otilde -34 KPX T period -100 KPX T r -50 KPX T racute -50 KPX T rcaron -50 KPX T rcommaaccent -50 KPX T semicolon -50 KPX T u -50 KPX T uacute -50 KPX T ucircumflex -50 KPX T udieresis -50 KPX T ugrave -50 KPX T uhungarumlaut -50 KPX T umacron -50 KPX T uogonek -50 KPX T uring -50 KPX T w -50 KPX T y -50 KPX T yacute -50 KPX T ydieresis -50 KPX Tcaron O 18 KPX Tcaron Oacute 18 KPX Tcaron Ocircumflex 18 KPX Tcaron Odieresis 18 KPX Tcaron Ograve 18 KPX Tcaron Ohungarumlaut 18 KPX Tcaron Omacron 18 KPX Tcaron Oslash 18 KPX Tcaron Otilde 18 KPX Tcaron a -74 KPX Tcaron aacute -74 KPX Tcaron abreve -74 KPX Tcaron acircumflex -74 KPX Tcaron adieresis -74 KPX Tcaron agrave -74 KPX Tcaron amacron -74 KPX Tcaron aogonek -74 KPX Tcaron aring -74 KPX Tcaron atilde -74 KPX Tcaron colon -50 KPX Tcaron comma -100 KPX Tcaron e -74 KPX Tcaron eacute -74 KPX Tcaron ecaron -34 KPX Tcaron ecircumflex -34 KPX Tcaron edieresis -34 KPX Tcaron edotaccent -74 KPX Tcaron egrave -34 KPX Tcaron emacron -34 KPX Tcaron eogonek -74 KPX Tcaron h -25 KPX Tcaron hyphen -100 KPX Tcaron i -18 KPX Tcaron iacute -18 KPX Tcaron icircumflex -18 KPX Tcaron iogonek -18 KPX Tcaron o -74 KPX Tcaron oacute -74 KPX Tcaron ocircumflex -74 KPX Tcaron odieresis -34 KPX Tcaron ograve -34 KPX Tcaron ohungarumlaut -34 KPX Tcaron omacron -34 KPX Tcaron oslash -74 KPX Tcaron otilde -34 KPX Tcaron period -100 KPX Tcaron r -50 KPX Tcaron racute -50 KPX Tcaron rcaron -50 KPX Tcaron rcommaaccent -50 KPX Tcaron semicolon -50 KPX Tcaron u -50 KPX Tcaron uacute -50 KPX Tcaron ucircumflex -50 KPX Tcaron udieresis -50 KPX Tcaron ugrave -50 KPX Tcaron uhungarumlaut -50 KPX Tcaron umacron -50 KPX Tcaron uogonek -50 KPX Tcaron uring -50 KPX Tcaron w -50 KPX Tcaron y -50 KPX Tcaron yacute -50 KPX Tcaron ydieresis -50 KPX Tcommaaccent O 18 KPX Tcommaaccent Oacute 18 KPX Tcommaaccent Ocircumflex 18 KPX Tcommaaccent Odieresis 18 KPX Tcommaaccent Ograve 18 KPX Tcommaaccent Ohungarumlaut 18 KPX Tcommaaccent Omacron 18 KPX Tcommaaccent Oslash 18 KPX Tcommaaccent Otilde 18 KPX Tcommaaccent a -74 KPX Tcommaaccent aacute -74 KPX Tcommaaccent abreve -74 KPX Tcommaaccent acircumflex -74 KPX Tcommaaccent adieresis -74 KPX Tcommaaccent agrave -74 KPX Tcommaaccent amacron -74 KPX Tcommaaccent aogonek -74 KPX Tcommaaccent aring -74 KPX Tcommaaccent atilde -74 KPX Tcommaaccent colon -50 KPX Tcommaaccent comma -100 KPX Tcommaaccent e -74 KPX Tcommaaccent eacute -74 KPX Tcommaaccent ecaron -34 KPX Tcommaaccent ecircumflex -34 KPX Tcommaaccent edieresis -34 KPX Tcommaaccent edotaccent -74 KPX Tcommaaccent egrave -34 KPX Tcommaaccent emacron -34 KPX Tcommaaccent eogonek -74 KPX Tcommaaccent h -25 KPX Tcommaaccent hyphen -100 KPX Tcommaaccent i -18 KPX Tcommaaccent iacute -18 KPX Tcommaaccent icircumflex -18 KPX Tcommaaccent iogonek -18 KPX Tcommaaccent o -74 KPX Tcommaaccent oacute -74 KPX Tcommaaccent ocircumflex -74 KPX Tcommaaccent odieresis -34 KPX Tcommaaccent ograve -34 KPX Tcommaaccent ohungarumlaut -34 KPX Tcommaaccent omacron -34 KPX Tcommaaccent oslash -74 KPX Tcommaaccent otilde -34 KPX Tcommaaccent period -100 KPX Tcommaaccent r -50 KPX Tcommaaccent racute -50 KPX Tcommaaccent rcaron -50 KPX Tcommaaccent rcommaaccent -50 KPX Tcommaaccent semicolon -50 KPX Tcommaaccent u -50 KPX Tcommaaccent uacute -50 KPX Tcommaaccent ucircumflex -50 KPX Tcommaaccent udieresis -50 KPX Tcommaaccent ugrave -50 KPX Tcommaaccent uhungarumlaut -50 KPX Tcommaaccent umacron -50 KPX Tcommaaccent uogonek -50 KPX Tcommaaccent uring -50 KPX Tcommaaccent w -50 KPX Tcommaaccent y -50 KPX Tcommaaccent yacute -50 KPX Tcommaaccent ydieresis -50 KPX U A -18 KPX U Aacute -18 KPX U Abreve -18 KPX U Acircumflex -18 KPX U Adieresis -18 KPX U Agrave -18 KPX U Amacron -18 KPX U Aogonek -18 KPX U Aring -18 KPX U Atilde -18 KPX U comma -100 KPX U period -100 KPX Uacute A -18 KPX Uacute Aacute -18 KPX Uacute Abreve -18 KPX Uacute Acircumflex -18 KPX Uacute Adieresis -18 KPX Uacute Agrave -18 KPX Uacute Amacron -18 KPX Uacute Aogonek -18 KPX Uacute Aring -18 KPX Uacute Atilde -18 KPX Uacute comma -100 KPX Uacute period -100 KPX Ucircumflex A -18 KPX Ucircumflex Aacute -18 KPX Ucircumflex Abreve -18 KPX Ucircumflex Acircumflex -18 KPX Ucircumflex Adieresis -18 KPX Ucircumflex Agrave -18 KPX Ucircumflex Amacron -18 KPX Ucircumflex Aogonek -18 KPX Ucircumflex Aring -18 KPX Ucircumflex Atilde -18 KPX Ucircumflex comma -100 KPX Ucircumflex period -100 KPX Udieresis A -18 KPX Udieresis Aacute -18 KPX Udieresis Abreve -18 KPX Udieresis Acircumflex -18 KPX Udieresis Adieresis -18 KPX Udieresis Agrave -18 KPX Udieresis Amacron -18 KPX Udieresis Aogonek -18 KPX Udieresis Aring -18 KPX Udieresis Atilde -18 KPX Udieresis comma -100 KPX Udieresis period -100 KPX Ugrave A -18 KPX Ugrave Aacute -18 KPX Ugrave Abreve -18 KPX Ugrave Acircumflex -18 KPX Ugrave Adieresis -18 KPX Ugrave Agrave -18 KPX Ugrave Amacron -18 KPX Ugrave Aogonek -18 KPX Ugrave Aring -18 KPX Ugrave Atilde -18 KPX Ugrave comma -100 KPX Ugrave period -100 KPX Uhungarumlaut A -18 KPX Uhungarumlaut Aacute -18 KPX Uhungarumlaut Abreve -18 KPX Uhungarumlaut Acircumflex -18 KPX Uhungarumlaut Adieresis -18 KPX Uhungarumlaut Agrave -18 KPX Uhungarumlaut Amacron -18 KPX Uhungarumlaut Aogonek -18 KPX Uhungarumlaut Aring -18 KPX Uhungarumlaut Atilde -18 KPX Uhungarumlaut comma -100 KPX Uhungarumlaut period -100 KPX Umacron A -18 KPX Umacron Aacute -18 KPX Umacron Abreve -18 KPX Umacron Acircumflex -18 KPX Umacron Adieresis -18 KPX Umacron Agrave -18 KPX Umacron Amacron -18 KPX Umacron Aogonek -18 KPX Umacron Aring -18 KPX Umacron Atilde -18 KPX Umacron comma -100 KPX Umacron period -100 KPX Uogonek A -18 KPX Uogonek Aacute -18 KPX Uogonek Abreve -18 KPX Uogonek Acircumflex -18 KPX Uogonek Adieresis -18 KPX Uogonek Agrave -18 KPX Uogonek Amacron -18 KPX Uogonek Aogonek -18 KPX Uogonek Aring -18 KPX Uogonek Atilde -18 KPX Uogonek comma -100 KPX Uogonek period -100 KPX Uring A -18 KPX Uring Aacute -18 KPX Uring Abreve -18 KPX Uring Acircumflex -18 KPX Uring Adieresis -18 KPX Uring Agrave -18 KPX Uring Amacron -18 KPX Uring Aogonek -18 KPX Uring Aring -18 KPX Uring Atilde -18 KPX Uring comma -100 KPX Uring period -100 KPX V A -37 KPX V Aacute -37 KPX V Abreve -37 KPX V Acircumflex -37 KPX V Adieresis -37 KPX V Agrave -37 KPX V Amacron -37 KPX V Aogonek -37 KPX V Aring -37 KPX V Atilde -37 KPX V a -75 KPX V aacute -75 KPX V abreve -75 KPX V acircumflex -75 KPX V adieresis -75 KPX V agrave -75 KPX V amacron -75 KPX V aogonek -75 KPX V aring -75 KPX V atilde -75 KPX V colon -75 KPX V comma -100 KPX V e -75 KPX V eacute -75 KPX V ecaron -35 KPX V ecircumflex -35 KPX V edieresis -35 KPX V edotaccent -35 KPX V egrave -35 KPX V emacron -35 KPX V eogonek -75 KPX V hyphen -100 KPX V i -50 KPX V iacute -50 KPX V icircumflex -10 KPX V idieresis -10 KPX V igrave -10 KPX V imacron -10 KPX V iogonek -50 KPX V o -75 KPX V oacute -75 KPX V ocircumflex -75 KPX V odieresis -35 KPX V ograve -35 KPX V ohungarumlaut -75 KPX V omacron -35 KPX V oslash -75 KPX V otilde -35 KPX V period -100 KPX V semicolon -75 KPX V u -75 KPX V uacute -75 KPX V ucircumflex -75 KPX V udieresis -75 KPX V ugrave -75 KPX V uhungarumlaut -75 KPX V umacron -75 KPX V uogonek -75 KPX V uring -75 KPX W A -55 KPX W Aacute -55 KPX W Abreve -55 KPX W Acircumflex -55 KPX W Adieresis -55 KPX W Agrave -55 KPX W Amacron -55 KPX W Aogonek -55 KPX W Aring -55 KPX W Atilde -55 KPX W a -55 KPX W aacute -55 KPX W abreve -55 KPX W acircumflex -55 KPX W adieresis -55 KPX W agrave -55 KPX W amacron -55 KPX W aogonek -55 KPX W aring -55 KPX W atilde -55 KPX W colon -75 KPX W comma -100 KPX W e -55 KPX W eacute -55 KPX W ecaron -55 KPX W ecircumflex -55 KPX W edieresis -35 KPX W edotaccent -55 KPX W egrave -35 KPX W emacron -55 KPX W eogonek -55 KPX W h -20 KPX W hyphen -75 KPX W i -20 KPX W iacute -20 KPX W icircumflex -20 KPX W iogonek -20 KPX W o -55 KPX W oacute -55 KPX W ocircumflex -55 KPX W odieresis -55 KPX W ograve -55 KPX W ohungarumlaut -55 KPX W omacron -55 KPX W oslash -55 KPX W otilde -55 KPX W period -100 KPX W semicolon -75 KPX W u -55 KPX W uacute -55 KPX W ucircumflex -55 KPX W udieresis -55 KPX W ugrave -55 KPX W uhungarumlaut -55 KPX W umacron -55 KPX W uogonek -55 KPX W uring -55 KPX W y -55 KPX W yacute -55 KPX W ydieresis -55 KPX Y A -55 KPX Y Aacute -55 KPX Y Abreve -55 KPX Y Acircumflex -55 KPX Y Adieresis -55 KPX Y Agrave -55 KPX Y Amacron -55 KPX Y Aogonek -55 KPX Y Aring -55 KPX Y Atilde -55 KPX Y a -100 KPX Y aacute -100 KPX Y abreve -60 KPX Y acircumflex -100 KPX Y adieresis -60 KPX Y agrave -60 KPX Y amacron -100 KPX Y aogonek -100 KPX Y aring -100 KPX Y atilde -100 KPX Y colon -75 KPX Y comma -100 KPX Y e -100 KPX Y eacute -100 KPX Y ecaron -60 KPX Y ecircumflex -60 KPX Y edieresis -60 KPX Y edotaccent -100 KPX Y egrave -60 KPX Y emacron -60 KPX Y eogonek -100 KPX Y hyphen -100 KPX Y i -25 KPX Y iacute -25 KPX Y iogonek -25 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -60 KPX Y ograve -60 KPX Y ohungarumlaut -100 KPX Y omacron -60 KPX Y oslash -100 KPX Y otilde -60 KPX Y period -100 KPX Y semicolon -75 KPX Y u -100 KPX Y uacute -100 KPX Y ucircumflex -100 KPX Y udieresis -100 KPX Y ugrave -100 KPX Y uhungarumlaut -100 KPX Y umacron -100 KPX Y uogonek -100 KPX Y uring -100 KPX Yacute A -55 KPX Yacute Aacute -55 KPX Yacute Abreve -55 KPX Yacute Acircumflex -55 KPX Yacute Adieresis -55 KPX Yacute Agrave -55 KPX Yacute Amacron -55 KPX Yacute Aogonek -55 KPX Yacute Aring -55 KPX Yacute Atilde -55 KPX Yacute a -100 KPX Yacute aacute -100 KPX Yacute abreve -60 KPX Yacute acircumflex -100 KPX Yacute adieresis -60 KPX Yacute agrave -60 KPX Yacute amacron -60 KPX Yacute aogonek -100 KPX Yacute aring -100 KPX Yacute atilde -100 KPX Yacute colon -75 KPX Yacute comma -100 KPX Yacute e -100 KPX Yacute eacute -100 KPX Yacute ecaron -60 KPX Yacute ecircumflex -60 KPX Yacute edieresis -60 KPX Yacute edotaccent -100 KPX Yacute egrave -60 KPX Yacute emacron -60 KPX Yacute eogonek -100 KPX Yacute hyphen -100 KPX Yacute i -25 KPX Yacute iacute -25 KPX Yacute iogonek -25 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -60 KPX Yacute odieresis -60 KPX Yacute ograve -60 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -60 KPX Yacute oslash -100 KPX Yacute otilde -60 KPX Yacute period -100 KPX Yacute semicolon -75 KPX Yacute u -100 KPX Yacute uacute -100 KPX Yacute ucircumflex -100 KPX Yacute udieresis -100 KPX Yacute ugrave -100 KPX Yacute uhungarumlaut -100 KPX Yacute umacron -100 KPX Yacute uogonek -100 KPX Yacute uring -100 KPX Ydieresis A -55 KPX Ydieresis Aacute -55 KPX Ydieresis Abreve -55 KPX Ydieresis Acircumflex -55 KPX Ydieresis Adieresis -55 KPX Ydieresis Agrave -55 KPX Ydieresis Amacron -55 KPX Ydieresis Aogonek -55 KPX Ydieresis Aring -55 KPX Ydieresis Atilde -55 KPX Ydieresis a -100 KPX Ydieresis aacute -100 KPX Ydieresis abreve -60 KPX Ydieresis acircumflex -100 KPX Ydieresis adieresis -60 KPX Ydieresis agrave -60 KPX Ydieresis amacron -100 KPX Ydieresis aogonek -100 KPX Ydieresis aring -100 KPX Ydieresis atilde -100 KPX Ydieresis colon -75 KPX Ydieresis comma -100 KPX Ydieresis e -100 KPX Ydieresis eacute -100 KPX Ydieresis ecaron -60 KPX Ydieresis ecircumflex -60 KPX Ydieresis edieresis -60 KPX Ydieresis edotaccent -100 KPX Ydieresis egrave -60 KPX Ydieresis emacron -60 KPX Ydieresis eogonek -100 KPX Ydieresis hyphen -100 KPX Ydieresis i -25 KPX Ydieresis iacute -25 KPX Ydieresis iogonek -25 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -60 KPX Ydieresis ograve -60 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -60 KPX Ydieresis oslash -100 KPX Ydieresis otilde -60 KPX Ydieresis period -100 KPX Ydieresis semicolon -75 KPX Ydieresis u -100 KPX Ydieresis uacute -100 KPX Ydieresis ucircumflex -100 KPX Ydieresis udieresis -100 KPX Ydieresis ugrave -100 KPX Ydieresis uhungarumlaut -100 KPX Ydieresis umacron -100 KPX Ydieresis uogonek -100 KPX Ydieresis uring -100 KPX b b -10 KPX b comma -50 KPX b period -50 KPX c comma -50 KPX c h -18 KPX c k -18 KPX c kcommaaccent -18 KPX c period -50 KPX cacute comma -50 KPX cacute h -18 KPX cacute k -18 KPX cacute kcommaaccent -18 KPX cacute period -50 KPX ccaron comma -50 KPX ccaron h -18 KPX ccaron k -18 KPX ccaron kcommaaccent -18 KPX ccaron period -50 KPX ccedilla comma -50 KPX ccedilla h -18 KPX ccedilla k -18 KPX ccedilla kcommaaccent -18 KPX ccedilla period -50 KPX colon space -37 KPX comma quotedblright -37 KPX comma quoteright -37 KPX comma space -37 KPX e comma -37 KPX e period -37 KPX eacute comma -37 KPX eacute period -37 KPX ecaron comma -37 KPX ecaron period -37 KPX ecircumflex comma -37 KPX ecircumflex period -37 KPX edieresis comma -37 KPX edieresis period -37 KPX edotaccent comma -37 KPX edotaccent period -37 KPX egrave comma -37 KPX egrave period -37 KPX emacron comma -37 KPX emacron period -37 KPX eogonek comma -37 KPX eogonek period -37 KPX f comma -75 KPX f o -10 KPX f oacute -10 KPX f ocircumflex -10 KPX f odieresis -10 KPX f ograve -10 KPX f ohungarumlaut -10 KPX f omacron -10 KPX f oslash -10 KPX f otilde -10 KPX f period -75 KPX f quotedblright 75 KPX f quoteright 75 KPX g comma -50 KPX g period -50 KPX gbreve comma -50 KPX gbreve period -50 KPX gcommaaccent comma -50 KPX gcommaaccent period -50 KPX l y -10 KPX l yacute -10 KPX l ydieresis -10 KPX lacute y -10 KPX lacute yacute -10 KPX lacute ydieresis -10 KPX lcommaaccent y -10 KPX lcommaaccent yacute -10 KPX lcommaaccent ydieresis -10 KPX lslash y -10 KPX lslash yacute -10 KPX lslash ydieresis -10 KPX o comma -50 KPX o period -50 KPX oacute comma -50 KPX oacute period -50 KPX ocircumflex comma -50 KPX ocircumflex period -50 KPX odieresis comma -50 KPX odieresis period -50 KPX ograve comma -50 KPX ograve period -50 KPX ohungarumlaut comma -50 KPX ohungarumlaut period -50 KPX omacron comma -50 KPX omacron period -50 KPX oslash comma -50 KPX oslash period -50 KPX otilde comma -50 KPX otilde period -50 KPX p comma -50 KPX p period -50 KPX period quotedblright -37 KPX period quoteright -37 KPX period space -37 KPX quotedblleft A -75 KPX quotedblleft Aacute -75 KPX quotedblleft Abreve -75 KPX quotedblleft Acircumflex -75 KPX quotedblleft Adieresis -75 KPX quotedblleft Agrave -75 KPX quotedblleft Amacron -75 KPX quotedblleft Aogonek -75 KPX quotedblleft Aring -75 KPX quotedblleft Atilde -75 KPX quotedblright space -37 KPX quoteleft A -75 KPX quoteleft Aacute -75 KPX quoteleft Abreve -75 KPX quoteleft Acircumflex -75 KPX quoteleft Adieresis -75 KPX quoteleft Agrave -75 KPX quoteleft Amacron -75 KPX quoteleft Aogonek -75 KPX quoteleft Aring -75 KPX quoteleft Atilde -75 KPX quoteleft quoteleft -37 KPX quoteright d -37 KPX quoteright dcroat -37 KPX quoteright quoteright -37 KPX quoteright s -25 KPX quoteright sacute -25 KPX quoteright scaron -25 KPX quoteright scedilla -25 KPX quoteright scommaaccent -25 KPX r colon -25 KPX r comma -125 KPX r hyphen -75 KPX r k -18 KPX r kcommaaccent -18 KPX r period -125 KPX r s -10 KPX r sacute -10 KPX r scaron -10 KPX r scedilla -10 KPX r scommaaccent -10 KPX r semicolon -25 KPX racute colon -25 KPX racute comma -125 KPX racute hyphen -75 KPX racute k -18 KPX racute kcommaaccent -18 KPX racute period -125 KPX racute s -10 KPX racute sacute -10 KPX racute scaron -10 KPX racute scedilla -10 KPX racute scommaaccent -10 KPX racute semicolon -25 KPX rcaron colon -25 KPX rcaron comma -125 KPX rcaron hyphen -75 KPX rcaron k -18 KPX rcaron kcommaaccent -18 KPX rcaron period -125 KPX rcaron s -10 KPX rcaron sacute -10 KPX rcaron scaron -10 KPX rcaron scedilla -10 KPX rcaron scommaaccent -10 KPX rcaron semicolon -25 KPX rcommaaccent colon -25 KPX rcommaaccent comma -125 KPX rcommaaccent hyphen -75 KPX rcommaaccent k -18 KPX rcommaaccent kcommaaccent -18 KPX rcommaaccent period -125 KPX rcommaaccent s -10 KPX rcommaaccent sacute -10 KPX rcommaaccent scaron -10 KPX rcommaaccent scedilla -10 KPX rcommaaccent scommaaccent -10 KPX rcommaaccent semicolon -25 KPX s comma -50 KPX s period -50 KPX sacute comma -50 KPX sacute period -50 KPX scaron comma -50 KPX scaron period -50 KPX scedilla comma -50 KPX scedilla period -50 KPX scommaaccent comma -50 KPX scommaaccent period -50 KPX semicolon space -37 KPX space A -37 KPX space Aacute -37 KPX space Abreve -37 KPX space Acircumflex -37 KPX space Adieresis -37 KPX space Agrave -37 KPX space Amacron -37 KPX space Aogonek -37 KPX space Aring -37 KPX space Atilde -37 KPX space T -37 KPX space Tcaron -37 KPX space Tcommaaccent -37 KPX space V -37 KPX space W -37 KPX space Y -37 KPX space Yacute -37 KPX space Ydieresis -37 KPX space quotedblleft -37 KPX space quoteleft -37 KPX v comma -75 KPX v period -75 KPX w comma -75 KPX w period -75 KPX y comma -75 KPX y period -75 KPX yacute comma -75 KPX yacute period -75 KPX ydieresis comma -75 KPX ydieresis period -75 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/ZapfDingbats.afm0000644000222100022210000002244714541067540015750 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 15:14:13 1997 Comment UniqueID 43082 Comment VMusage 45775 55535 FontName ZapfDingbats FullName ITC Zapf Dingbats FamilyName ITC Zapf Dingbats Weight Medium ItalicAngle 0 IsFixedPitch false FontBBox -1 -143 981 820 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Dingbats is a registered trademark of International Typeface Corporation. EncodingScheme FontSpecific StdHW 28 StdVW 90 StartCharMetrics 202 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 974 ; N a1 ; B 35 72 939 621 ; C 34 ; WX 961 ; N a2 ; B 35 81 927 611 ; C 35 ; WX 974 ; N a202 ; B 35 72 939 621 ; C 36 ; WX 980 ; N a3 ; B 35 0 945 692 ; C 37 ; WX 719 ; N a4 ; B 34 139 685 566 ; C 38 ; WX 789 ; N a5 ; B 35 -14 755 705 ; C 39 ; WX 790 ; N a119 ; B 35 -14 755 705 ; C 40 ; WX 791 ; N a118 ; B 35 -13 761 705 ; C 41 ; WX 690 ; N a117 ; B 34 138 655 553 ; C 42 ; WX 960 ; N a11 ; B 35 123 925 568 ; C 43 ; WX 939 ; N a12 ; B 35 134 904 559 ; C 44 ; WX 549 ; N a13 ; B 29 -11 516 705 ; C 45 ; WX 855 ; N a14 ; B 34 59 820 632 ; C 46 ; WX 911 ; N a15 ; B 35 50 876 642 ; C 47 ; WX 933 ; N a16 ; B 35 139 899 550 ; C 48 ; WX 911 ; N a105 ; B 35 50 876 642 ; C 49 ; WX 945 ; N a17 ; B 35 139 909 553 ; C 50 ; WX 974 ; N a18 ; B 35 104 938 587 ; C 51 ; WX 755 ; N a19 ; B 34 -13 721 705 ; C 52 ; WX 846 ; N a20 ; B 36 -14 811 705 ; C 53 ; WX 762 ; N a21 ; B 35 0 727 692 ; C 54 ; WX 761 ; N a22 ; B 35 0 727 692 ; C 55 ; WX 571 ; N a23 ; B -1 -68 571 661 ; C 56 ; WX 677 ; N a24 ; B 36 -13 642 705 ; C 57 ; WX 763 ; N a25 ; B 35 0 728 692 ; C 58 ; WX 760 ; N a26 ; B 35 0 726 692 ; C 59 ; WX 759 ; N a27 ; B 35 0 725 692 ; C 60 ; WX 754 ; N a28 ; B 35 0 720 692 ; C 61 ; WX 494 ; N a6 ; B 35 0 460 692 ; C 62 ; WX 552 ; N a7 ; B 35 0 517 692 ; C 63 ; WX 537 ; N a8 ; B 35 0 503 692 ; C 64 ; WX 577 ; N a9 ; B 35 96 542 596 ; C 65 ; WX 692 ; N a10 ; B 35 -14 657 705 ; C 66 ; WX 786 ; N a29 ; B 35 -14 751 705 ; C 67 ; WX 788 ; N a30 ; B 35 -14 752 705 ; C 68 ; WX 788 ; N a31 ; B 35 -14 753 705 ; C 69 ; WX 790 ; N a32 ; B 35 -14 756 705 ; C 70 ; WX 793 ; N a33 ; B 35 -13 759 705 ; C 71 ; WX 794 ; N a34 ; B 35 -13 759 705 ; C 72 ; WX 816 ; N a35 ; B 35 -14 782 705 ; C 73 ; WX 823 ; N a36 ; B 35 -14 787 705 ; C 74 ; WX 789 ; N a37 ; B 35 -14 754 705 ; C 75 ; WX 841 ; N a38 ; B 35 -14 807 705 ; C 76 ; WX 823 ; N a39 ; B 35 -14 789 705 ; C 77 ; WX 833 ; N a40 ; B 35 -14 798 705 ; C 78 ; WX 816 ; N a41 ; B 35 -13 782 705 ; C 79 ; WX 831 ; N a42 ; B 35 -14 796 705 ; C 80 ; WX 923 ; N a43 ; B 35 -14 888 705 ; C 81 ; WX 744 ; N a44 ; B 35 0 710 692 ; C 82 ; WX 723 ; N a45 ; B 35 0 688 692 ; C 83 ; WX 749 ; N a46 ; B 35 0 714 692 ; C 84 ; WX 790 ; N a47 ; B 34 -14 756 705 ; C 85 ; WX 792 ; N a48 ; B 35 -14 758 705 ; C 86 ; WX 695 ; N a49 ; B 35 -14 661 706 ; C 87 ; WX 776 ; N a50 ; B 35 -6 741 699 ; C 88 ; WX 768 ; N a51 ; B 35 -7 734 699 ; C 89 ; WX 792 ; N a52 ; B 35 -14 757 705 ; C 90 ; WX 759 ; N a53 ; B 35 0 725 692 ; C 91 ; WX 707 ; N a54 ; B 35 -13 672 704 ; C 92 ; WX 708 ; N a55 ; B 35 -14 672 705 ; C 93 ; WX 682 ; N a56 ; B 35 -14 647 705 ; C 94 ; WX 701 ; N a57 ; B 35 -14 666 705 ; C 95 ; WX 826 ; N a58 ; B 35 -14 791 705 ; C 96 ; WX 815 ; N a59 ; B 35 -14 780 705 ; C 97 ; WX 789 ; N a60 ; B 35 -14 754 705 ; C 98 ; WX 789 ; N a61 ; B 35 -14 754 705 ; C 99 ; WX 707 ; N a62 ; B 34 -14 673 705 ; C 100 ; WX 687 ; N a63 ; B 36 0 651 692 ; C 101 ; WX 696 ; N a64 ; B 35 0 661 691 ; C 102 ; WX 689 ; N a65 ; B 35 0 655 692 ; C 103 ; WX 786 ; N a66 ; B 34 -14 751 705 ; C 104 ; WX 787 ; N a67 ; B 35 -14 752 705 ; C 105 ; WX 713 ; N a68 ; B 35 -14 678 705 ; C 106 ; WX 791 ; N a69 ; B 35 -14 756 705 ; C 107 ; WX 785 ; N a70 ; B 36 -14 751 705 ; C 108 ; WX 791 ; N a71 ; B 35 -14 757 705 ; C 109 ; WX 873 ; N a72 ; B 35 -14 838 705 ; C 110 ; WX 761 ; N a73 ; B 35 0 726 692 ; C 111 ; WX 762 ; N a74 ; B 35 0 727 692 ; C 112 ; WX 762 ; N a203 ; B 35 0 727 692 ; C 113 ; WX 759 ; N a75 ; B 35 0 725 692 ; C 114 ; WX 759 ; N a204 ; B 35 0 725 692 ; C 115 ; WX 892 ; N a76 ; B 35 0 858 705 ; C 116 ; WX 892 ; N a77 ; B 35 -14 858 692 ; C 117 ; WX 788 ; N a78 ; B 35 -14 754 705 ; C 118 ; WX 784 ; N a79 ; B 35 -14 749 705 ; C 119 ; WX 438 ; N a81 ; B 35 -14 403 705 ; C 120 ; WX 138 ; N a82 ; B 35 0 104 692 ; C 121 ; WX 277 ; N a83 ; B 35 0 242 692 ; C 122 ; WX 415 ; N a84 ; B 35 0 380 692 ; C 123 ; WX 392 ; N a97 ; B 35 263 357 705 ; C 124 ; WX 392 ; N a98 ; B 34 263 357 705 ; C 125 ; WX 668 ; N a99 ; B 35 263 633 705 ; C 126 ; WX 668 ; N a100 ; B 36 263 634 705 ; C 128 ; WX 390 ; N a89 ; B 35 -14 356 705 ; C 129 ; WX 390 ; N a90 ; B 35 -14 355 705 ; C 130 ; WX 317 ; N a93 ; B 35 0 283 692 ; C 131 ; WX 317 ; N a94 ; B 35 0 283 692 ; C 132 ; WX 276 ; N a91 ; B 35 0 242 692 ; C 133 ; WX 276 ; N a92 ; B 35 0 242 692 ; C 134 ; WX 509 ; N a205 ; B 35 0 475 692 ; C 135 ; WX 509 ; N a85 ; B 35 0 475 692 ; C 136 ; WX 410 ; N a206 ; B 35 0 375 692 ; C 137 ; WX 410 ; N a86 ; B 35 0 375 692 ; C 138 ; WX 234 ; N a87 ; B 35 -14 199 705 ; C 139 ; WX 234 ; N a88 ; B 35 -14 199 705 ; C 140 ; WX 334 ; N a95 ; B 35 0 299 692 ; C 141 ; WX 334 ; N a96 ; B 35 0 299 692 ; C 161 ; WX 732 ; N a101 ; B 35 -143 697 806 ; C 162 ; WX 544 ; N a102 ; B 56 -14 488 706 ; C 163 ; WX 544 ; N a103 ; B 34 -14 508 705 ; C 164 ; WX 910 ; N a104 ; B 35 40 875 651 ; C 165 ; WX 667 ; N a106 ; B 35 -14 633 705 ; C 166 ; WX 760 ; N a107 ; B 35 -14 726 705 ; C 167 ; WX 760 ; N a108 ; B 0 121 758 569 ; C 168 ; WX 776 ; N a112 ; B 35 0 741 705 ; C 169 ; WX 595 ; N a111 ; B 34 -14 560 705 ; C 170 ; WX 694 ; N a110 ; B 35 -14 659 705 ; C 171 ; WX 626 ; N a109 ; B 34 0 591 705 ; C 172 ; WX 788 ; N a120 ; B 35 -14 754 705 ; C 173 ; WX 788 ; N a121 ; B 35 -14 754 705 ; C 174 ; WX 788 ; N a122 ; B 35 -14 754 705 ; C 175 ; WX 788 ; N a123 ; B 35 -14 754 705 ; C 176 ; WX 788 ; N a124 ; B 35 -14 754 705 ; C 177 ; WX 788 ; N a125 ; B 35 -14 754 705 ; C 178 ; WX 788 ; N a126 ; B 35 -14 754 705 ; C 179 ; WX 788 ; N a127 ; B 35 -14 754 705 ; C 180 ; WX 788 ; N a128 ; B 35 -14 754 705 ; C 181 ; WX 788 ; N a129 ; B 35 -14 754 705 ; C 182 ; WX 788 ; N a130 ; B 35 -14 754 705 ; C 183 ; WX 788 ; N a131 ; B 35 -14 754 705 ; C 184 ; WX 788 ; N a132 ; B 35 -14 754 705 ; C 185 ; WX 788 ; N a133 ; B 35 -14 754 705 ; C 186 ; WX 788 ; N a134 ; B 35 -14 754 705 ; C 187 ; WX 788 ; N a135 ; B 35 -14 754 705 ; C 188 ; WX 788 ; N a136 ; B 35 -14 754 705 ; C 189 ; WX 788 ; N a137 ; B 35 -14 754 705 ; C 190 ; WX 788 ; N a138 ; B 35 -14 754 705 ; C 191 ; WX 788 ; N a139 ; B 35 -14 754 705 ; C 192 ; WX 788 ; N a140 ; B 35 -14 754 705 ; C 193 ; WX 788 ; N a141 ; B 35 -14 754 705 ; C 194 ; WX 788 ; N a142 ; B 35 -14 754 705 ; C 195 ; WX 788 ; N a143 ; B 35 -14 754 705 ; C 196 ; WX 788 ; N a144 ; B 35 -14 754 705 ; C 197 ; WX 788 ; N a145 ; B 35 -14 754 705 ; C 198 ; WX 788 ; N a146 ; B 35 -14 754 705 ; C 199 ; WX 788 ; N a147 ; B 35 -14 754 705 ; C 200 ; WX 788 ; N a148 ; B 35 -14 754 705 ; C 201 ; WX 788 ; N a149 ; B 35 -14 754 705 ; C 202 ; WX 788 ; N a150 ; B 35 -14 754 705 ; C 203 ; WX 788 ; N a151 ; B 35 -14 754 705 ; C 204 ; WX 788 ; N a152 ; B 35 -14 754 705 ; C 205 ; WX 788 ; N a153 ; B 35 -14 754 705 ; C 206 ; WX 788 ; N a154 ; B 35 -14 754 705 ; C 207 ; WX 788 ; N a155 ; B 35 -14 754 705 ; C 208 ; WX 788 ; N a156 ; B 35 -14 754 705 ; C 209 ; WX 788 ; N a157 ; B 35 -14 754 705 ; C 210 ; WX 788 ; N a158 ; B 35 -14 754 705 ; C 211 ; WX 788 ; N a159 ; B 35 -14 754 705 ; C 212 ; WX 894 ; N a160 ; B 35 58 860 634 ; C 213 ; WX 838 ; N a161 ; B 35 152 803 540 ; C 214 ; WX 1016 ; N a163 ; B 34 152 981 540 ; C 215 ; WX 458 ; N a164 ; B 35 -127 422 820 ; C 216 ; WX 748 ; N a196 ; B 35 94 698 597 ; C 217 ; WX 924 ; N a165 ; B 35 140 890 552 ; C 218 ; WX 748 ; N a192 ; B 35 94 698 597 ; C 219 ; WX 918 ; N a166 ; B 35 166 884 526 ; C 220 ; WX 927 ; N a167 ; B 35 32 892 660 ; C 221 ; WX 928 ; N a168 ; B 35 129 891 562 ; C 222 ; WX 928 ; N a169 ; B 35 128 893 563 ; C 223 ; WX 834 ; N a170 ; B 35 155 799 537 ; C 224 ; WX 873 ; N a171 ; B 35 93 838 599 ; C 225 ; WX 828 ; N a172 ; B 35 104 791 588 ; C 226 ; WX 924 ; N a173 ; B 35 98 889 594 ; C 227 ; WX 924 ; N a162 ; B 35 98 889 594 ; C 228 ; WX 917 ; N a174 ; B 35 0 882 692 ; C 229 ; WX 930 ; N a175 ; B 35 84 896 608 ; C 230 ; WX 931 ; N a176 ; B 35 84 896 608 ; C 231 ; WX 463 ; N a177 ; B 35 -99 429 791 ; C 232 ; WX 883 ; N a178 ; B 35 71 848 623 ; C 233 ; WX 836 ; N a179 ; B 35 44 802 648 ; C 234 ; WX 836 ; N a193 ; B 35 44 802 648 ; C 235 ; WX 867 ; N a180 ; B 35 101 832 591 ; C 236 ; WX 867 ; N a199 ; B 35 101 832 591 ; C 237 ; WX 696 ; N a181 ; B 35 44 661 648 ; C 238 ; WX 696 ; N a200 ; B 35 44 661 648 ; C 239 ; WX 874 ; N a182 ; B 35 77 840 619 ; C 241 ; WX 874 ; N a201 ; B 35 73 840 615 ; C 242 ; WX 760 ; N a183 ; B 35 0 725 692 ; C 243 ; WX 946 ; N a184 ; B 35 160 911 533 ; C 244 ; WX 771 ; N a197 ; B 34 37 736 655 ; C 245 ; WX 865 ; N a185 ; B 35 207 830 481 ; C 246 ; WX 771 ; N a194 ; B 34 37 736 655 ; C 247 ; WX 888 ; N a198 ; B 34 -19 853 712 ; C 248 ; WX 967 ; N a186 ; B 35 124 932 568 ; C 249 ; WX 888 ; N a195 ; B 34 -19 853 712 ; C 250 ; WX 831 ; N a187 ; B 35 113 796 579 ; C 251 ; WX 873 ; N a188 ; B 36 118 838 578 ; C 252 ; WX 927 ; N a189 ; B 35 150 891 542 ; C 253 ; WX 970 ; N a190 ; B 35 76 931 616 ; C 254 ; WX 918 ; N a191 ; B 34 99 884 593 ; EndCharMetrics EndFontMetrics pmw-5.22/fontmetrics/Helvetica-BoldOblique.afm0000644000222100022210000021413714541067540017476 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:45:12 1997 Comment PH added entry for Euro character, copied from a different version, 19 July 2009. Comment PH added additional characters (after Euro) 18 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43053 Comment VMusage 14482 68586 FontName Helvetica-BoldOblique FullName Helvetica Bold Oblique FamilyName Helvetica Weight Bold ItalicAngle -12 IsFixedPitch false FontBBox -174 -228 1114 962 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 718 XHeight 532 Ascender 718 Descender -207 StdHW 118 StdVW 140 StartCharMetrics 361 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 94 0 397 718 ; C 34 ; WX 474 ; N quotedbl ; B 193 447 529 718 ; C 35 ; WX 556 ; N numbersign ; B 60 0 644 698 ; C 36 ; WX 556 ; N dollar ; B 67 -115 622 775 ; C 37 ; WX 889 ; N percent ; B 136 -19 901 710 ; C 38 ; WX 722 ; N ampersand ; B 89 -19 732 718 ; C 39 ; WX 278 ; N quoteright ; B 167 445 362 718 ; C 40 ; WX 333 ; N parenleft ; B 76 -208 470 734 ; C 41 ; WX 333 ; N parenright ; B -25 -208 369 734 ; C 42 ; WX 389 ; N asterisk ; B 146 387 481 718 ; C 43 ; WX 584 ; N plus ; B 82 0 610 506 ; C 44 ; WX 278 ; N comma ; B 28 -168 245 146 ; C 45 ; WX 333 ; N hyphen ; B 73 215 379 345 ; C 46 ; WX 278 ; N period ; B 64 0 245 146 ; C 47 ; WX 278 ; N slash ; B -37 -19 468 737 ; C 48 ; WX 556 ; N zero ; B 86 -19 617 710 ; C 49 ; WX 556 ; N one ; B 173 0 529 710 ; C 50 ; WX 556 ; N two ; B 26 0 619 710 ; C 51 ; WX 556 ; N three ; B 65 -19 608 710 ; C 52 ; WX 556 ; N four ; B 60 0 598 710 ; C 53 ; WX 556 ; N five ; B 64 -19 636 698 ; C 54 ; WX 556 ; N six ; B 85 -19 619 710 ; C 55 ; WX 556 ; N seven ; B 125 0 676 698 ; C 56 ; WX 556 ; N eight ; B 69 -19 616 710 ; C 57 ; WX 556 ; N nine ; B 78 -19 615 710 ; C 58 ; WX 333 ; N colon ; B 92 0 351 512 ; C 59 ; WX 333 ; N semicolon ; B 56 -168 351 512 ; C 60 ; WX 584 ; N less ; B 82 -8 655 514 ; C 61 ; WX 584 ; N equal ; B 58 87 633 419 ; C 62 ; WX 584 ; N greater ; B 36 -8 609 514 ; C 63 ; WX 611 ; N question ; B 165 0 671 727 ; C 64 ; WX 975 ; N at ; B 186 -19 954 737 ; C 65 ; WX 722 ; N A ; B 20 0 702 718 ; C 66 ; WX 722 ; N B ; B 76 0 764 718 ; C 67 ; WX 722 ; N C ; B 107 -19 789 737 ; C 68 ; WX 722 ; N D ; B 76 0 777 718 ; C 69 ; WX 667 ; N E ; B 76 0 757 718 ; C 70 ; WX 611 ; N F ; B 76 0 740 718 ; C 71 ; WX 778 ; N G ; B 108 -19 817 737 ; C 72 ; WX 722 ; N H ; B 71 0 804 718 ; C 73 ; WX 278 ; N I ; B 64 0 367 718 ; C 74 ; WX 556 ; N J ; B 60 -18 637 718 ; C 75 ; WX 722 ; N K ; B 87 0 858 718 ; C 76 ; WX 611 ; N L ; B 76 0 611 718 ; C 77 ; WX 833 ; N M ; B 69 0 918 718 ; C 78 ; WX 722 ; N N ; B 69 0 807 718 ; C 79 ; WX 778 ; N O ; B 107 -19 823 737 ; C 80 ; WX 667 ; N P ; B 76 0 738 718 ; C 81 ; WX 778 ; N Q ; B 107 -52 823 737 ; C 82 ; WX 722 ; N R ; B 76 0 778 718 ; C 83 ; WX 667 ; N S ; B 81 -19 718 737 ; C 84 ; WX 611 ; N T ; B 140 0 751 718 ; C 85 ; WX 722 ; N U ; B 116 -19 804 718 ; C 86 ; WX 667 ; N V ; B 172 0 801 718 ; C 87 ; WX 944 ; N W ; B 169 0 1082 718 ; C 88 ; WX 667 ; N X ; B 14 0 791 718 ; C 89 ; WX 667 ; N Y ; B 168 0 806 718 ; C 90 ; WX 611 ; N Z ; B 25 0 737 718 ; C 91 ; WX 333 ; N bracketleft ; B 21 -196 462 722 ; C 92 ; WX 278 ; N backslash ; B 124 -19 307 737 ; C 93 ; WX 333 ; N bracketright ; B -18 -196 423 722 ; C 94 ; WX 584 ; N asciicircum ; B 131 323 591 698 ; C 95 ; WX 556 ; N underscore ; B -27 -125 540 -75 ; C 96 ; WX 278 ; N quoteleft ; B 165 454 361 727 ; C 97 ; WX 556 ; N a ; B 55 -14 583 546 ; C 98 ; WX 611 ; N b ; B 61 -14 645 718 ; C 99 ; WX 556 ; N c ; B 79 -14 599 546 ; C 100 ; WX 611 ; N d ; B 82 -14 704 718 ; C 101 ; WX 556 ; N e ; B 70 -14 593 546 ; C 102 ; WX 333 ; N f ; B 87 0 469 727 ; L i fi ; L l fl ; C 103 ; WX 611 ; N g ; B 38 -217 666 546 ; C 104 ; WX 611 ; N h ; B 65 0 629 718 ; C 105 ; WX 278 ; N i ; B 69 0 363 725 ; C 106 ; WX 278 ; N j ; B -42 -214 363 725 ; C 107 ; WX 556 ; N k ; B 69 0 670 718 ; C 108 ; WX 278 ; N l ; B 69 0 362 718 ; C 109 ; WX 889 ; N m ; B 64 0 909 546 ; C 110 ; WX 611 ; N n ; B 65 0 629 546 ; C 111 ; WX 611 ; N o ; B 82 -14 643 546 ; C 112 ; WX 611 ; N p ; B 18 -207 645 546 ; C 113 ; WX 611 ; N q ; B 80 -207 665 546 ; C 114 ; WX 389 ; N r ; B 64 0 489 546 ; C 115 ; WX 556 ; N s ; B 63 -14 584 546 ; C 116 ; WX 333 ; N t ; B 100 -6 422 676 ; C 117 ; WX 611 ; N u ; B 98 -14 658 532 ; C 118 ; WX 556 ; N v ; B 126 0 656 532 ; C 119 ; WX 778 ; N w ; B 123 0 882 532 ; C 120 ; WX 556 ; N x ; B 15 0 648 532 ; C 121 ; WX 556 ; N y ; B 42 -214 652 532 ; C 122 ; WX 500 ; N z ; B 20 0 583 532 ; C 123 ; WX 389 ; N braceleft ; B 94 -196 518 722 ; C 124 ; WX 280 ; N bar ; B 36 -225 361 775 ; C 125 ; WX 389 ; N braceright ; B -18 -196 407 722 ; C 126 ; WX 584 ; N asciitilde ; B 115 163 577 343 ; C 160 ; WX 278 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 333 ; N exclamdown ; B 50 -186 353 532 ; C 162 ; WX 556 ; N cent ; B 79 -118 599 628 ; C 163 ; WX 556 ; N sterling ; B 50 -16 635 718 ; C 164 ; WX 167 ; N fraction ; B -174 -19 487 710 ; C 165 ; WX 556 ; N yen ; B 60 0 713 698 ; C 166 ; WX 556 ; N florin ; B -50 -210 669 737 ; C 167 ; WX 556 ; N section ; B 61 -184 598 727 ; C 168 ; WX 556 ; N currency ; B 27 76 680 636 ; C 169 ; WX 238 ; N quotesingle ; B 165 447 321 718 ; C 170 ; WX 500 ; N quotedblleft ; B 160 454 588 727 ; C 171 ; WX 556 ; N guillemotleft ; B 135 76 571 484 ; C 172 ; WX 333 ; N guilsinglleft ; B 130 76 353 484 ; C 173 ; WX 333 ; N guilsinglright ; B 99 76 322 484 ; C 174 ; WX 611 ; N fi ; B 87 0 696 727 ; C 175 ; WX 611 ; N fl ; B 87 0 695 727 ; C 177 ; WX 556 ; N endash ; B 48 227 627 333 ; C 178 ; WX 556 ; N dagger ; B 118 -171 626 718 ; C 179 ; WX 556 ; N daggerdbl ; B 46 -171 628 718 ; C 180 ; WX 278 ; N periodcentered ; B 110 172 276 334 ; C 182 ; WX 556 ; N paragraph ; B 98 -191 688 700 ; C 183 ; WX 350 ; N bullet ; B 83 194 420 524 ; C 184 ; WX 278 ; N quotesinglbase ; B 41 -146 236 127 ; C 185 ; WX 500 ; N quotedblbase ; B 36 -146 463 127 ; C 186 ; WX 500 ; N quotedblright ; B 162 445 589 718 ; C 187 ; WX 556 ; N guillemotright ; B 104 76 540 484 ; C 188 ; WX 1000 ; N ellipsis ; B 92 0 939 146 ; C 189 ; WX 1000 ; N perthousand ; B 76 -19 1038 710 ; C 191 ; WX 611 ; N questiondown ; B 53 -195 559 532 ; C 193 ; WX 333 ; N grave ; B 136 604 353 750 ; C 194 ; WX 333 ; N acute ; B 236 604 515 750 ; C 195 ; WX 333 ; N circumflex ; B 118 604 471 750 ; C 196 ; WX 333 ; N tilde ; B 113 610 507 737 ; C 197 ; WX 333 ; N macron ; B 122 604 483 678 ; C 198 ; WX 333 ; N breve ; B 156 604 494 750 ; C 199 ; WX 333 ; N dotaccent ; B 235 614 385 729 ; C 200 ; WX 333 ; N dieresis ; B 137 614 482 729 ; C 202 ; WX 333 ; N ring ; B 200 568 420 776 ; C 203 ; WX 333 ; N cedilla ; B -37 -228 220 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 137 604 645 750 ; C 206 ; WX 333 ; N ogonek ; B 41 -228 264 0 ; C 207 ; WX 333 ; N caron ; B 149 604 502 750 ; C 208 ; WX 1000 ; N emdash ; B 48 227 1071 333 ; C 225 ; WX 1000 ; N AE ; B 5 0 1100 718 ; C 227 ; WX 370 ; N ordfeminine ; B 125 401 465 737 ; C 232 ; WX 611 ; N Lslash ; B 34 0 611 718 ; C 233 ; WX 778 ; N Oslash ; B 35 -27 894 745 ; C 234 ; WX 1000 ; N OE ; B 99 -19 1114 737 ; C 235 ; WX 365 ; N ordmasculine ; B 123 401 485 737 ; C 241 ; WX 889 ; N ae ; B 56 -14 923 546 ; C 245 ; WX 278 ; N dotlessi ; B 69 0 322 532 ; C 248 ; WX 278 ; N lslash ; B 40 0 407 718 ; C 249 ; WX 611 ; N oslash ; B 22 -29 701 560 ; C 250 ; WX 944 ; N oe ; B 82 -14 977 546 ; C 251 ; WX 611 ; N germandbls ; B 69 -14 657 731 ; C -1 ; WX 278 ; N Idieresis ; B 64 0 494 915 ; C -1 ; WX 556 ; N eacute ; B 70 -14 627 750 ; C -1 ; WX 556 ; N abreve ; B 55 -14 606 750 ; C -1 ; WX 611 ; N uhungarumlaut ; B 98 -14 784 750 ; C -1 ; WX 556 ; N ecaron ; B 70 -14 614 750 ; C -1 ; WX 667 ; N Ydieresis ; B 168 0 806 915 ; C -1 ; WX 584 ; N divide ; B 82 -42 610 548 ; C -1 ; WX 667 ; N Yacute ; B 168 0 806 936 ; C -1 ; WX 722 ; N Acircumflex ; B 20 0 706 936 ; C -1 ; WX 556 ; N aacute ; B 55 -14 627 750 ; C -1 ; WX 722 ; N Ucircumflex ; B 116 -19 804 936 ; C -1 ; WX 556 ; N yacute ; B 42 -214 652 750 ; C -1 ; WX 556 ; N scommaaccent ; B 63 -228 584 546 ; C -1 ; WX 556 ; N ecircumflex ; B 70 -14 593 750 ; C -1 ; WX 722 ; N Uring ; B 116 -19 804 962 ; C -1 ; WX 722 ; N Udieresis ; B 116 -19 804 915 ; C -1 ; WX 556 ; N aogonek ; B 55 -224 583 546 ; C -1 ; WX 722 ; N Uacute ; B 116 -19 804 936 ; C -1 ; WX 611 ; N uogonek ; B 98 -228 658 532 ; C -1 ; WX 667 ; N Edieresis ; B 76 0 757 915 ; C -1 ; WX 722 ; N Dcroat ; B 62 0 777 718 ; C -1 ; WX 250 ; N commaaccent ; B 16 -228 188 -50 ; C -1 ; WX 737 ; N copyright ; B 56 -19 835 737 ; C -1 ; WX 667 ; N Emacron ; B 76 0 757 864 ; C -1 ; WX 556 ; N ccaron ; B 79 -14 614 750 ; C -1 ; WX 556 ; N aring ; B 55 -14 583 776 ; C -1 ; WX 722 ; N Ncommaaccent ; B 69 -228 807 718 ; C -1 ; WX 278 ; N lacute ; B 69 0 528 936 ; C -1 ; WX 556 ; N agrave ; B 55 -14 583 750 ; C -1 ; WX 611 ; N Tcommaaccent ; B 140 -228 751 718 ; C -1 ; WX 722 ; N Cacute ; B 107 -19 789 936 ; C -1 ; WX 556 ; N atilde ; B 55 -14 619 737 ; C -1 ; WX 667 ; N Edotaccent ; B 76 0 757 915 ; C -1 ; WX 556 ; N scaron ; B 63 -14 614 750 ; C -1 ; WX 556 ; N scedilla ; B 63 -228 584 546 ; C -1 ; WX 278 ; N iacute ; B 69 0 488 750 ; C -1 ; WX 494 ; N lozenge ; B 90 0 564 745 ; C -1 ; WX 722 ; N Rcaron ; B 76 0 778 936 ; C -1 ; WX 778 ; N Gcommaaccent ; B 108 -228 817 737 ; C -1 ; WX 611 ; N ucircumflex ; B 98 -14 658 750 ; C -1 ; WX 556 ; N acircumflex ; B 55 -14 583 750 ; C -1 ; WX 722 ; N Amacron ; B 20 0 718 864 ; C -1 ; WX 389 ; N rcaron ; B 64 0 530 750 ; C -1 ; WX 556 ; N ccedilla ; B 79 -228 599 546 ; C -1 ; WX 611 ; N Zdotaccent ; B 25 0 737 915 ; C -1 ; WX 667 ; N Thorn ; B 76 0 716 718 ; C -1 ; WX 778 ; N Omacron ; B 107 -19 823 864 ; C -1 ; WX 722 ; N Racute ; B 76 0 778 936 ; C -1 ; WX 667 ; N Sacute ; B 81 -19 722 936 ; C -1 ; WX 743 ; N dcaron ; B 82 -14 903 718 ; C -1 ; WX 722 ; N Umacron ; B 116 -19 804 864 ; C -1 ; WX 611 ; N uring ; B 98 -14 658 776 ; C -1 ; WX 333 ; N threesuperior ; B 91 271 441 710 ; C -1 ; WX 778 ; N Ograve ; B 107 -19 823 936 ; C -1 ; WX 722 ; N Agrave ; B 20 0 702 936 ; C -1 ; WX 722 ; N Abreve ; B 20 0 729 936 ; C -1 ; WX 584 ; N multiply ; B 57 1 635 505 ; C -1 ; WX 611 ; N uacute ; B 98 -14 658 750 ; C -1 ; WX 611 ; N Tcaron ; B 140 0 751 936 ; C -1 ; WX 494 ; N partialdiff ; B 43 -21 585 750 ; C -1 ; WX 556 ; N ydieresis ; B 42 -214 652 729 ; C -1 ; WX 722 ; N Nacute ; B 69 0 807 936 ; C -1 ; WX 278 ; N icircumflex ; B 69 0 444 750 ; C -1 ; WX 667 ; N Ecircumflex ; B 76 0 757 936 ; C -1 ; WX 556 ; N adieresis ; B 55 -14 594 729 ; C -1 ; WX 556 ; N edieresis ; B 70 -14 594 729 ; C -1 ; WX 556 ; N cacute ; B 79 -14 627 750 ; C -1 ; WX 611 ; N nacute ; B 65 0 654 750 ; C -1 ; WX 611 ; N umacron ; B 98 -14 658 678 ; C -1 ; WX 722 ; N Ncaron ; B 69 0 807 936 ; C -1 ; WX 278 ; N Iacute ; B 64 0 528 936 ; C -1 ; WX 584 ; N plusminus ; B 40 0 625 506 ; C -1 ; WX 280 ; N brokenbar ; B 52 -150 345 700 ; C -1 ; WX 737 ; N registered ; B 55 -19 834 737 ; C -1 ; WX 778 ; N Gbreve ; B 108 -19 817 936 ; C -1 ; WX 278 ; N Idotaccent ; B 64 0 397 915 ; C -1 ; WX 600 ; N summation ; B 14 -10 670 706 ; C -1 ; WX 667 ; N Egrave ; B 76 0 757 936 ; C -1 ; WX 389 ; N racute ; B 64 0 543 750 ; C -1 ; WX 611 ; N omacron ; B 82 -14 643 678 ; C -1 ; WX 611 ; N Zacute ; B 25 0 737 936 ; C -1 ; WX 611 ; N Zcaron ; B 25 0 737 936 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 629 704 ; C -1 ; WX 722 ; N Eth ; B 62 0 777 718 ; C -1 ; WX 722 ; N Ccedilla ; B 107 -228 789 737 ; C -1 ; WX 278 ; N lcommaaccent ; B 30 -228 362 718 ; C -1 ; WX 389 ; N tcaron ; B 100 -6 608 878 ; C -1 ; WX 556 ; N eogonek ; B 70 -228 593 546 ; C -1 ; WX 722 ; N Uogonek ; B 116 -228 804 718 ; C -1 ; WX 722 ; N Aacute ; B 20 0 750 936 ; C -1 ; WX 722 ; N Adieresis ; B 20 0 716 915 ; C -1 ; WX 556 ; N egrave ; B 70 -14 593 750 ; C -1 ; WX 500 ; N zacute ; B 20 0 599 750 ; C -1 ; WX 278 ; N iogonek ; B -14 -224 363 725 ; C -1 ; WX 778 ; N Oacute ; B 107 -19 823 936 ; C -1 ; WX 611 ; N oacute ; B 82 -14 654 750 ; C -1 ; WX 556 ; N amacron ; B 55 -14 595 678 ; C -1 ; WX 556 ; N sacute ; B 63 -14 627 750 ; C -1 ; WX 278 ; N idieresis ; B 69 0 455 729 ; C -1 ; WX 778 ; N Ocircumflex ; B 107 -19 823 936 ; C -1 ; WX 722 ; N Ugrave ; B 116 -19 804 936 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 611 ; N thorn ; B 18 -208 645 718 ; C -1 ; WX 333 ; N twosuperior ; B 69 283 449 710 ; C -1 ; WX 778 ; N Odieresis ; B 107 -19 823 915 ; C -1 ; WX 611 ; N mu ; B 22 -207 658 532 ; C -1 ; WX 278 ; N igrave ; B 69 0 326 750 ; C -1 ; WX 611 ; N ohungarumlaut ; B 82 -14 784 750 ; C -1 ; WX 667 ; N Eogonek ; B 76 -224 757 718 ; C -1 ; WX 611 ; N dcroat ; B 82 -14 789 718 ; C -1 ; WX 834 ; N threequarters ; B 99 -19 839 710 ; C -1 ; WX 667 ; N Scedilla ; B 81 -228 718 737 ; C -1 ; WX 400 ; N lcaron ; B 69 0 561 718 ; C -1 ; WX 722 ; N Kcommaaccent ; B 87 -228 858 718 ; C -1 ; WX 611 ; N Lacute ; B 76 0 611 936 ; C -1 ; WX 1000 ; N trademark ; B 179 306 1109 718 ; C -1 ; WX 556 ; N edotaccent ; B 70 -14 593 729 ; C -1 ; WX 278 ; N Igrave ; B 64 0 367 936 ; C -1 ; WX 278 ; N Imacron ; B 64 0 496 864 ; C -1 ; WX 611 ; N Lcaron ; B 76 0 643 718 ; C -1 ; WX 834 ; N onehalf ; B 132 -19 858 710 ; C -1 ; WX 549 ; N lessequal ; B 29 0 676 704 ; C -1 ; WX 611 ; N ocircumflex ; B 82 -14 643 750 ; C -1 ; WX 611 ; N ntilde ; B 65 0 646 737 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 116 -19 880 936 ; C -1 ; WX 667 ; N Eacute ; B 76 0 757 936 ; C -1 ; WX 556 ; N emacron ; B 70 -14 595 678 ; C -1 ; WX 611 ; N gbreve ; B 38 -217 666 750 ; C -1 ; WX 834 ; N onequarter ; B 132 -19 806 710 ; C -1 ; WX 667 ; N Scaron ; B 81 -19 718 936 ; C -1 ; WX 667 ; N Scommaaccent ; B 81 -228 718 737 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 107 -19 908 936 ; C -1 ; WX 400 ; N degree ; B 175 426 467 712 ; C -1 ; WX 611 ; N ograve ; B 82 -14 643 750 ; C -1 ; WX 722 ; N Ccaron ; B 107 -19 789 936 ; C -1 ; WX 611 ; N ugrave ; B 98 -14 658 750 ; C -1 ; WX 549 ; N radical ; B 112 -46 689 850 ; C -1 ; WX 722 ; N Dcaron ; B 76 0 777 936 ; C -1 ; WX 389 ; N rcommaaccent ; B 26 -228 489 546 ; C -1 ; WX 722 ; N Ntilde ; B 69 0 807 923 ; C -1 ; WX 611 ; N otilde ; B 82 -14 646 737 ; C -1 ; WX 722 ; N Rcommaaccent ; B 76 -228 778 718 ; C -1 ; WX 611 ; N Lcommaaccent ; B 76 -228 611 718 ; C -1 ; WX 722 ; N Atilde ; B 20 0 741 923 ; C -1 ; WX 722 ; N Aogonek ; B 20 -224 702 718 ; C -1 ; WX 722 ; N Aring ; B 20 0 702 962 ; C -1 ; WX 778 ; N Otilde ; B 107 -19 823 923 ; C -1 ; WX 500 ; N zdotaccent ; B 20 0 583 729 ; C -1 ; WX 667 ; N Ecaron ; B 76 0 757 936 ; C -1 ; WX 278 ; N Iogonek ; B -41 -228 367 718 ; C -1 ; WX 556 ; N kcommaaccent ; B 69 -228 670 718 ; C -1 ; WX 584 ; N minus ; B 82 197 610 309 ; C -1 ; WX 278 ; N Icircumflex ; B 64 0 484 936 ; C -1 ; WX 611 ; N ncaron ; B 65 0 641 750 ; C -1 ; WX 333 ; N tcommaaccent ; B 58 -228 422 676 ; C -1 ; WX 584 ; N logicalnot ; B 105 108 633 419 ; C -1 ; WX 611 ; N odieresis ; B 82 -14 643 729 ; C -1 ; WX 611 ; N udieresis ; B 98 -14 658 729 ; C -1 ; WX 549 ; N notequal ; B 32 -49 630 570 ; C -1 ; WX 611 ; N gcommaaccent ; B 38 -217 666 850 ; C -1 ; WX 611 ; N eth ; B 82 -14 670 737 ; C -1 ; WX 500 ; N zcaron ; B 20 0 586 750 ; C -1 ; WX 611 ; N ncommaaccent ; B 65 -228 629 546 ; C -1 ; WX 333 ; N onesuperior ; B 148 283 388 710 ; C -1 ; WX 278 ; N imacron ; B 69 0 429 678 ; C -1 ; WX 556 ; N Euro ; B 0 0 0 0 ; C -1 ; WX 722 ; N Ccircumflex ; B 107 -23 793 948 ; C -1 ; WX 556 ; N ccircumflex ; B 77 -23 597 756 ; C -1 ; WX 722 ; N Cdotaccent ; B 107 -23 793 921 ; C -1 ; WX 556 ; N cdotaccent ; B 77 -23 597 729 ; C -1 ; WX 667 ; N Ebreve ; B 79 0 762 944 ; C -1 ; WX 556 ; N ebreve ; B 64 -23 591 752 ; C -1 ; WX 778 ; N Gcircumflex ; B 107 -23 819 948 ; C -1 ; WX 611 ; N gcircumflex ; B 26 -218 656 756 ; C -1 ; WX 778 ; N Gdotaccent ; B 107 -23 819 921 ; C -1 ; WX 611 ; N gdotaccent ; B 26 -218 656 729 ; C -1 ; WX 722 ; N Hcircumflex ; B 68 0 812 948 ; C -1 ; WX 611 ; N hcircumflex ; B 67 0 633 936 ; C -1 ; WX 762 ; N Hbar ; B 88 0 882 729 ; C -1 ; WX 611 ; N hbar ; B 67 0 629 729 ; C -1 ; WX 278 ; N Itilde ; B 63 0 513 923 ; C -1 ; WX 278 ; N itilde ; B 67 0 472 731 ; C -1 ; WX 278 ; N Ibreve ; B 63 0 469 944 ; C -1 ; WX 278 ; N ibreve ; B 67 0 428 752 ; C -1 ; WX 782 ; N IJ ; B 63 -23 876 729 ; C -1 ; WX 476 ; N ij ; B 67 -218 575 729 ; C -1 ; WX 556 ; N Jcircumflex ; B 59 -23 741 948 ; C -1 ; WX 278 ; N jcircumflex ; B -43 -218 442 862 ; C -1 ; WX 529 ; N kgreenlandic ; B 59 0 624 540 ; C -1 ; WX 611 ; N Ldot ; B 80 0 606 729 ; C -1 ; WX 556 ; N ldot ; B 67 0 518 729 ; C -1 ; WX 611 ; N napostrophe ; B 63 0 629 840 ; C -1 ; WX 722 ; N Eng ; B 68 -166 816 729 ; C -1 ; WX 611 ; N eng ; B 63 -132 629 549 ; C -1 ; WX 778 ; N Obreve ; B 106 -23 828 944 ; C -1 ; WX 611 ; N obreve ; B 82 -23 634 752 ; C -1 ; WX 667 ; N Scircumflex ; B 76 -23 725 948 ; C -1 ; WX 556 ; N scircumflex ; B 60 -23 589 756 ; C -1 ; WX 611 ; N Tbar ; B 142 0 753 729 ; C -1 ; WX 333 ; N tbar ; B 66 -23 414 674 ; C -1 ; WX 611 ; N Tcedilla ; B 140 -228 751 718 ; C -1 ; WX 333 ; N tcedilla ; B 58 -228 422 676 ; C -1 ; WX 722 ; N Utilde ; B 119 -23 809 923 ; C -1 ; WX 611 ; N utilde ; B 88 -23 656 731 ; C -1 ; WX 722 ; N Ubreve ; B 119 -23 809 944 ; C -1 ; WX 611 ; N ubreve ; B 88 -23 656 752 ; C -1 ; WX 944 ; N Wcircumflex ; B 168 0 1087 948 ; C -1 ; WX 778 ; N wcircumflex ; B 120 0 881 756 ; C -1 ; WX 667 ; N Ycircumflex ; B 182 0 805 948 ; C -1 ; WX 556 ; N ycircumflex ; B 37 -219 653 756 ; C -1 ; WX 333 ; N longs ; B 90 0 464 729 ; C -1 ; WX 884 ; N infinity ; B 92 105 940 579 ; EndCharMetrics StartKernData StartKernPairs 2481 KPX A C -40 KPX A Cacute -40 KPX A Ccaron -40 KPX A Ccedilla -40 KPX A G -50 KPX A Gbreve -50 KPX A Gcommaaccent -50 KPX A O -40 KPX A Oacute -40 KPX A Ocircumflex -40 KPX A Odieresis -40 KPX A Ograve -40 KPX A Ohungarumlaut -40 KPX A Omacron -40 KPX A Oslash -40 KPX A Otilde -40 KPX A Q -40 KPX A T -90 KPX A Tcaron -90 KPX A Tcommaaccent -90 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -80 KPX A W -60 KPX A Y -110 KPX A Yacute -110 KPX A Ydieresis -110 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -40 KPX A w -30 KPX A y -30 KPX A yacute -30 KPX A ydieresis -30 KPX Aacute C -40 KPX Aacute Cacute -40 KPX Aacute Ccaron -40 KPX Aacute Ccedilla -40 KPX Aacute G -50 KPX Aacute Gbreve -50 KPX Aacute Gcommaaccent -50 KPX Aacute O -40 KPX Aacute Oacute -40 KPX Aacute Ocircumflex -40 KPX Aacute Odieresis -40 KPX Aacute Ograve -40 KPX Aacute Ohungarumlaut -40 KPX Aacute Omacron -40 KPX Aacute Oslash -40 KPX Aacute Otilde -40 KPX Aacute Q -40 KPX Aacute T -90 KPX Aacute Tcaron -90 KPX Aacute Tcommaaccent -90 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -80 KPX Aacute W -60 KPX Aacute Y -110 KPX Aacute Yacute -110 KPX Aacute Ydieresis -110 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -40 KPX Aacute w -30 KPX Aacute y -30 KPX Aacute yacute -30 KPX Aacute ydieresis -30 KPX Abreve C -40 KPX Abreve Cacute -40 KPX Abreve Ccaron -40 KPX Abreve Ccedilla -40 KPX Abreve G -50 KPX Abreve Gbreve -50 KPX Abreve Gcommaaccent -50 KPX Abreve O -40 KPX Abreve Oacute -40 KPX Abreve Ocircumflex -40 KPX Abreve Odieresis -40 KPX Abreve Ograve -40 KPX Abreve Ohungarumlaut -40 KPX Abreve Omacron -40 KPX Abreve Oslash -40 KPX Abreve Otilde -40 KPX Abreve Q -40 KPX Abreve T -90 KPX Abreve Tcaron -90 KPX Abreve Tcommaaccent -90 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -80 KPX Abreve W -60 KPX Abreve Y -110 KPX Abreve Yacute -110 KPX Abreve Ydieresis -110 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -40 KPX Abreve w -30 KPX Abreve y -30 KPX Abreve yacute -30 KPX Abreve ydieresis -30 KPX Acircumflex C -40 KPX Acircumflex Cacute -40 KPX Acircumflex Ccaron -40 KPX Acircumflex Ccedilla -40 KPX Acircumflex G -50 KPX Acircumflex Gbreve -50 KPX Acircumflex Gcommaaccent -50 KPX Acircumflex O -40 KPX Acircumflex Oacute -40 KPX Acircumflex Ocircumflex -40 KPX Acircumflex Odieresis -40 KPX Acircumflex Ograve -40 KPX Acircumflex Ohungarumlaut -40 KPX Acircumflex Omacron -40 KPX Acircumflex Oslash -40 KPX Acircumflex Otilde -40 KPX Acircumflex Q -40 KPX Acircumflex T -90 KPX Acircumflex Tcaron -90 KPX Acircumflex Tcommaaccent -90 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -80 KPX Acircumflex W -60 KPX Acircumflex Y -110 KPX Acircumflex Yacute -110 KPX Acircumflex Ydieresis -110 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -40 KPX Acircumflex w -30 KPX Acircumflex y -30 KPX Acircumflex yacute -30 KPX Acircumflex ydieresis -30 KPX Adieresis C -40 KPX Adieresis Cacute -40 KPX Adieresis Ccaron -40 KPX Adieresis Ccedilla -40 KPX Adieresis G -50 KPX Adieresis Gbreve -50 KPX Adieresis Gcommaaccent -50 KPX Adieresis O -40 KPX Adieresis Oacute -40 KPX Adieresis Ocircumflex -40 KPX Adieresis Odieresis -40 KPX Adieresis Ograve -40 KPX Adieresis Ohungarumlaut -40 KPX Adieresis Omacron -40 KPX Adieresis Oslash -40 KPX Adieresis Otilde -40 KPX Adieresis Q -40 KPX Adieresis T -90 KPX Adieresis Tcaron -90 KPX Adieresis Tcommaaccent -90 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -80 KPX Adieresis W -60 KPX Adieresis Y -110 KPX Adieresis Yacute -110 KPX Adieresis Ydieresis -110 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -40 KPX Adieresis w -30 KPX Adieresis y -30 KPX Adieresis yacute -30 KPX Adieresis ydieresis -30 KPX Agrave C -40 KPX Agrave Cacute -40 KPX Agrave Ccaron -40 KPX Agrave Ccedilla -40 KPX Agrave G -50 KPX Agrave Gbreve -50 KPX Agrave Gcommaaccent -50 KPX Agrave O -40 KPX Agrave Oacute -40 KPX Agrave Ocircumflex -40 KPX Agrave Odieresis -40 KPX Agrave Ograve -40 KPX Agrave Ohungarumlaut -40 KPX Agrave Omacron -40 KPX Agrave Oslash -40 KPX Agrave Otilde -40 KPX Agrave Q -40 KPX Agrave T -90 KPX Agrave Tcaron -90 KPX Agrave Tcommaaccent -90 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -80 KPX Agrave W -60 KPX Agrave Y -110 KPX Agrave Yacute -110 KPX Agrave Ydieresis -110 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -40 KPX Agrave w -30 KPX Agrave y -30 KPX Agrave yacute -30 KPX Agrave ydieresis -30 KPX Amacron C -40 KPX Amacron Cacute -40 KPX Amacron Ccaron -40 KPX Amacron Ccedilla -40 KPX Amacron G -50 KPX Amacron Gbreve -50 KPX Amacron Gcommaaccent -50 KPX Amacron O -40 KPX Amacron Oacute -40 KPX Amacron Ocircumflex -40 KPX Amacron Odieresis -40 KPX Amacron Ograve -40 KPX Amacron Ohungarumlaut -40 KPX Amacron Omacron -40 KPX Amacron Oslash -40 KPX Amacron Otilde -40 KPX Amacron Q -40 KPX Amacron T -90 KPX Amacron Tcaron -90 KPX Amacron Tcommaaccent -90 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -80 KPX Amacron W -60 KPX Amacron Y -110 KPX Amacron Yacute -110 KPX Amacron Ydieresis -110 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -40 KPX Amacron w -30 KPX Amacron y -30 KPX Amacron yacute -30 KPX Amacron ydieresis -30 KPX Aogonek C -40 KPX Aogonek Cacute -40 KPX Aogonek Ccaron -40 KPX Aogonek Ccedilla -40 KPX Aogonek G -50 KPX Aogonek Gbreve -50 KPX Aogonek Gcommaaccent -50 KPX Aogonek O -40 KPX Aogonek Oacute -40 KPX Aogonek Ocircumflex -40 KPX Aogonek Odieresis -40 KPX Aogonek Ograve -40 KPX Aogonek Ohungarumlaut -40 KPX Aogonek Omacron -40 KPX Aogonek Oslash -40 KPX Aogonek Otilde -40 KPX Aogonek Q -40 KPX Aogonek T -90 KPX Aogonek Tcaron -90 KPX Aogonek Tcommaaccent -90 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -80 KPX Aogonek W -60 KPX Aogonek Y -110 KPX Aogonek Yacute -110 KPX Aogonek Ydieresis -110 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -40 KPX Aogonek w -30 KPX Aogonek y -30 KPX Aogonek yacute -30 KPX Aogonek ydieresis -30 KPX Aring C -40 KPX Aring Cacute -40 KPX Aring Ccaron -40 KPX Aring Ccedilla -40 KPX Aring G -50 KPX Aring Gbreve -50 KPX Aring Gcommaaccent -50 KPX Aring O -40 KPX Aring Oacute -40 KPX Aring Ocircumflex -40 KPX Aring Odieresis -40 KPX Aring Ograve -40 KPX Aring Ohungarumlaut -40 KPX Aring Omacron -40 KPX Aring Oslash -40 KPX Aring Otilde -40 KPX Aring Q -40 KPX Aring T -90 KPX Aring Tcaron -90 KPX Aring Tcommaaccent -90 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -80 KPX Aring W -60 KPX Aring Y -110 KPX Aring Yacute -110 KPX Aring Ydieresis -110 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -40 KPX Aring w -30 KPX Aring y -30 KPX Aring yacute -30 KPX Aring ydieresis -30 KPX Atilde C -40 KPX Atilde Cacute -40 KPX Atilde Ccaron -40 KPX Atilde Ccedilla -40 KPX Atilde G -50 KPX Atilde Gbreve -50 KPX Atilde Gcommaaccent -50 KPX Atilde O -40 KPX Atilde Oacute -40 KPX Atilde Ocircumflex -40 KPX Atilde Odieresis -40 KPX Atilde Ograve -40 KPX Atilde Ohungarumlaut -40 KPX Atilde Omacron -40 KPX Atilde Oslash -40 KPX Atilde Otilde -40 KPX Atilde Q -40 KPX Atilde T -90 KPX Atilde Tcaron -90 KPX Atilde Tcommaaccent -90 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -80 KPX Atilde W -60 KPX Atilde Y -110 KPX Atilde Yacute -110 KPX Atilde Ydieresis -110 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -40 KPX Atilde w -30 KPX Atilde y -30 KPX Atilde yacute -30 KPX Atilde ydieresis -30 KPX B A -30 KPX B Aacute -30 KPX B Abreve -30 KPX B Acircumflex -30 KPX B Adieresis -30 KPX B Agrave -30 KPX B Amacron -30 KPX B Aogonek -30 KPX B Aring -30 KPX B Atilde -30 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -40 KPX D W -40 KPX D Y -70 KPX D Yacute -70 KPX D Ydieresis -70 KPX D comma -30 KPX D period -30 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -40 KPX Dcaron W -40 KPX Dcaron Y -70 KPX Dcaron Yacute -70 KPX Dcaron Ydieresis -70 KPX Dcaron comma -30 KPX Dcaron period -30 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -40 KPX Dcroat W -40 KPX Dcroat Y -70 KPX Dcroat Yacute -70 KPX Dcroat Ydieresis -70 KPX Dcroat comma -30 KPX Dcroat period -30 KPX F A -80 KPX F Aacute -80 KPX F Abreve -80 KPX F Acircumflex -80 KPX F Adieresis -80 KPX F Agrave -80 KPX F Amacron -80 KPX F Aogonek -80 KPX F Aring -80 KPX F Atilde -80 KPX F a -20 KPX F aacute -20 KPX F abreve -20 KPX F acircumflex -20 KPX F adieresis -20 KPX F agrave -20 KPX F amacron -20 KPX F aogonek -20 KPX F aring -20 KPX F atilde -20 KPX F comma -100 KPX F period -100 KPX J A -20 KPX J Aacute -20 KPX J Abreve -20 KPX J Acircumflex -20 KPX J Adieresis -20 KPX J Agrave -20 KPX J Amacron -20 KPX J Aogonek -20 KPX J Aring -20 KPX J Atilde -20 KPX J comma -20 KPX J period -20 KPX J u -20 KPX J uacute -20 KPX J ucircumflex -20 KPX J udieresis -20 KPX J ugrave -20 KPX J uhungarumlaut -20 KPX J umacron -20 KPX J uogonek -20 KPX J uring -20 KPX K O -30 KPX K Oacute -30 KPX K Ocircumflex -30 KPX K Odieresis -30 KPX K Ograve -30 KPX K Ohungarumlaut -30 KPX K Omacron -30 KPX K Oslash -30 KPX K Otilde -30 KPX K e -15 KPX K eacute -15 KPX K ecaron -15 KPX K ecircumflex -15 KPX K edieresis -15 KPX K edotaccent -15 KPX K egrave -15 KPX K emacron -15 KPX K eogonek -15 KPX K o -35 KPX K oacute -35 KPX K ocircumflex -35 KPX K odieresis -35 KPX K ograve -35 KPX K ohungarumlaut -35 KPX K omacron -35 KPX K oslash -35 KPX K otilde -35 KPX K u -30 KPX K uacute -30 KPX K ucircumflex -30 KPX K udieresis -30 KPX K ugrave -30 KPX K uhungarumlaut -30 KPX K umacron -30 KPX K uogonek -30 KPX K uring -30 KPX K y -40 KPX K yacute -40 KPX K ydieresis -40 KPX Kcommaaccent O -30 KPX Kcommaaccent Oacute -30 KPX Kcommaaccent Ocircumflex -30 KPX Kcommaaccent Odieresis -30 KPX Kcommaaccent Ograve -30 KPX Kcommaaccent Ohungarumlaut -30 KPX Kcommaaccent Omacron -30 KPX Kcommaaccent Oslash -30 KPX Kcommaaccent Otilde -30 KPX Kcommaaccent e -15 KPX Kcommaaccent eacute -15 KPX Kcommaaccent ecaron -15 KPX Kcommaaccent ecircumflex -15 KPX Kcommaaccent edieresis -15 KPX Kcommaaccent edotaccent -15 KPX Kcommaaccent egrave -15 KPX Kcommaaccent emacron -15 KPX Kcommaaccent eogonek -15 KPX Kcommaaccent o -35 KPX Kcommaaccent oacute -35 KPX Kcommaaccent ocircumflex -35 KPX Kcommaaccent odieresis -35 KPX Kcommaaccent ograve -35 KPX Kcommaaccent ohungarumlaut -35 KPX Kcommaaccent omacron -35 KPX Kcommaaccent oslash -35 KPX Kcommaaccent otilde -35 KPX Kcommaaccent u -30 KPX Kcommaaccent uacute -30 KPX Kcommaaccent ucircumflex -30 KPX Kcommaaccent udieresis -30 KPX Kcommaaccent ugrave -30 KPX Kcommaaccent uhungarumlaut -30 KPX Kcommaaccent umacron -30 KPX Kcommaaccent uogonek -30 KPX Kcommaaccent uring -30 KPX Kcommaaccent y -40 KPX Kcommaaccent yacute -40 KPX Kcommaaccent ydieresis -40 KPX L T -90 KPX L Tcaron -90 KPX L Tcommaaccent -90 KPX L V -110 KPX L W -80 KPX L Y -120 KPX L Yacute -120 KPX L Ydieresis -120 KPX L quotedblright -140 KPX L quoteright -140 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -90 KPX Lacute Tcaron -90 KPX Lacute Tcommaaccent -90 KPX Lacute V -110 KPX Lacute W -80 KPX Lacute Y -120 KPX Lacute Yacute -120 KPX Lacute Ydieresis -120 KPX Lacute quotedblright -140 KPX Lacute quoteright -140 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcommaaccent T -90 KPX Lcommaaccent Tcaron -90 KPX Lcommaaccent Tcommaaccent -90 KPX Lcommaaccent V -110 KPX Lcommaaccent W -80 KPX Lcommaaccent Y -120 KPX Lcommaaccent Yacute -120 KPX Lcommaaccent Ydieresis -120 KPX Lcommaaccent quotedblright -140 KPX Lcommaaccent quoteright -140 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -90 KPX Lslash Tcaron -90 KPX Lslash Tcommaaccent -90 KPX Lslash V -110 KPX Lslash W -80 KPX Lslash Y -120 KPX Lslash Yacute -120 KPX Lslash Ydieresis -120 KPX Lslash quotedblright -140 KPX Lslash quoteright -140 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX O A -50 KPX O Aacute -50 KPX O Abreve -50 KPX O Acircumflex -50 KPX O Adieresis -50 KPX O Agrave -50 KPX O Amacron -50 KPX O Aogonek -50 KPX O Aring -50 KPX O Atilde -50 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -50 KPX O X -50 KPX O Y -70 KPX O Yacute -70 KPX O Ydieresis -70 KPX O comma -40 KPX O period -40 KPX Oacute A -50 KPX Oacute Aacute -50 KPX Oacute Abreve -50 KPX Oacute Acircumflex -50 KPX Oacute Adieresis -50 KPX Oacute Agrave -50 KPX Oacute Amacron -50 KPX Oacute Aogonek -50 KPX Oacute Aring -50 KPX Oacute Atilde -50 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -50 KPX Oacute X -50 KPX Oacute Y -70 KPX Oacute Yacute -70 KPX Oacute Ydieresis -70 KPX Oacute comma -40 KPX Oacute period -40 KPX Ocircumflex A -50 KPX Ocircumflex Aacute -50 KPX Ocircumflex Abreve -50 KPX Ocircumflex Acircumflex -50 KPX Ocircumflex Adieresis -50 KPX Ocircumflex Agrave -50 KPX Ocircumflex Amacron -50 KPX Ocircumflex Aogonek -50 KPX Ocircumflex Aring -50 KPX Ocircumflex Atilde -50 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -50 KPX Ocircumflex X -50 KPX Ocircumflex Y -70 KPX Ocircumflex Yacute -70 KPX Ocircumflex Ydieresis -70 KPX Ocircumflex comma -40 KPX Ocircumflex period -40 KPX Odieresis A -50 KPX Odieresis Aacute -50 KPX Odieresis Abreve -50 KPX Odieresis Acircumflex -50 KPX Odieresis Adieresis -50 KPX Odieresis Agrave -50 KPX Odieresis Amacron -50 KPX Odieresis Aogonek -50 KPX Odieresis Aring -50 KPX Odieresis Atilde -50 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -50 KPX Odieresis X -50 KPX Odieresis Y -70 KPX Odieresis Yacute -70 KPX Odieresis Ydieresis -70 KPX Odieresis comma -40 KPX Odieresis period -40 KPX Ograve A -50 KPX Ograve Aacute -50 KPX Ograve Abreve -50 KPX Ograve Acircumflex -50 KPX Ograve Adieresis -50 KPX Ograve Agrave -50 KPX Ograve Amacron -50 KPX Ograve Aogonek -50 KPX Ograve Aring -50 KPX Ograve Atilde -50 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -50 KPX Ograve X -50 KPX Ograve Y -70 KPX Ograve Yacute -70 KPX Ograve Ydieresis -70 KPX Ograve comma -40 KPX Ograve period -40 KPX Ohungarumlaut A -50 KPX Ohungarumlaut Aacute -50 KPX Ohungarumlaut Abreve -50 KPX Ohungarumlaut Acircumflex -50 KPX Ohungarumlaut Adieresis -50 KPX Ohungarumlaut Agrave -50 KPX Ohungarumlaut Amacron -50 KPX Ohungarumlaut Aogonek -50 KPX Ohungarumlaut Aring -50 KPX Ohungarumlaut Atilde -50 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -50 KPX Ohungarumlaut X -50 KPX Ohungarumlaut Y -70 KPX Ohungarumlaut Yacute -70 KPX Ohungarumlaut Ydieresis -70 KPX Ohungarumlaut comma -40 KPX Ohungarumlaut period -40 KPX Omacron A -50 KPX Omacron Aacute -50 KPX Omacron Abreve -50 KPX Omacron Acircumflex -50 KPX Omacron Adieresis -50 KPX Omacron Agrave -50 KPX Omacron Amacron -50 KPX Omacron Aogonek -50 KPX Omacron Aring -50 KPX Omacron Atilde -50 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -50 KPX Omacron X -50 KPX Omacron Y -70 KPX Omacron Yacute -70 KPX Omacron Ydieresis -70 KPX Omacron comma -40 KPX Omacron period -40 KPX Oslash A -50 KPX Oslash Aacute -50 KPX Oslash Abreve -50 KPX Oslash Acircumflex -50 KPX Oslash Adieresis -50 KPX Oslash Agrave -50 KPX Oslash Amacron -50 KPX Oslash Aogonek -50 KPX Oslash Aring -50 KPX Oslash Atilde -50 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -50 KPX Oslash X -50 KPX Oslash Y -70 KPX Oslash Yacute -70 KPX Oslash Ydieresis -70 KPX Oslash comma -40 KPX Oslash period -40 KPX Otilde A -50 KPX Otilde Aacute -50 KPX Otilde Abreve -50 KPX Otilde Acircumflex -50 KPX Otilde Adieresis -50 KPX Otilde Agrave -50 KPX Otilde Amacron -50 KPX Otilde Aogonek -50 KPX Otilde Aring -50 KPX Otilde Atilde -50 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -50 KPX Otilde X -50 KPX Otilde Y -70 KPX Otilde Yacute -70 KPX Otilde Ydieresis -70 KPX Otilde comma -40 KPX Otilde period -40 KPX P A -100 KPX P Aacute -100 KPX P Abreve -100 KPX P Acircumflex -100 KPX P Adieresis -100 KPX P Agrave -100 KPX P Amacron -100 KPX P Aogonek -100 KPX P Aring -100 KPX P Atilde -100 KPX P a -30 KPX P aacute -30 KPX P abreve -30 KPX P acircumflex -30 KPX P adieresis -30 KPX P agrave -30 KPX P amacron -30 KPX P aogonek -30 KPX P aring -30 KPX P atilde -30 KPX P comma -120 KPX P e -30 KPX P eacute -30 KPX P ecaron -30 KPX P ecircumflex -30 KPX P edieresis -30 KPX P edotaccent -30 KPX P egrave -30 KPX P emacron -30 KPX P eogonek -30 KPX P o -40 KPX P oacute -40 KPX P ocircumflex -40 KPX P odieresis -40 KPX P ograve -40 KPX P ohungarumlaut -40 KPX P omacron -40 KPX P oslash -40 KPX P otilde -40 KPX P period -120 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX Q comma 20 KPX Q period 20 KPX R O -20 KPX R Oacute -20 KPX R Ocircumflex -20 KPX R Odieresis -20 KPX R Ograve -20 KPX R Ohungarumlaut -20 KPX R Omacron -20 KPX R Oslash -20 KPX R Otilde -20 KPX R T -20 KPX R Tcaron -20 KPX R Tcommaaccent -20 KPX R U -20 KPX R Uacute -20 KPX R Ucircumflex -20 KPX R Udieresis -20 KPX R Ugrave -20 KPX R Uhungarumlaut -20 KPX R Umacron -20 KPX R Uogonek -20 KPX R Uring -20 KPX R V -50 KPX R W -40 KPX R Y -50 KPX R Yacute -50 KPX R Ydieresis -50 KPX Racute O -20 KPX Racute Oacute -20 KPX Racute Ocircumflex -20 KPX Racute Odieresis -20 KPX Racute Ograve -20 KPX Racute Ohungarumlaut -20 KPX Racute Omacron -20 KPX Racute Oslash -20 KPX Racute Otilde -20 KPX Racute T -20 KPX Racute Tcaron -20 KPX Racute Tcommaaccent -20 KPX Racute U -20 KPX Racute Uacute -20 KPX Racute Ucircumflex -20 KPX Racute Udieresis -20 KPX Racute Ugrave -20 KPX Racute Uhungarumlaut -20 KPX Racute Umacron -20 KPX Racute Uogonek -20 KPX Racute Uring -20 KPX Racute V -50 KPX Racute W -40 KPX Racute Y -50 KPX Racute Yacute -50 KPX Racute Ydieresis -50 KPX Rcaron O -20 KPX Rcaron Oacute -20 KPX Rcaron Ocircumflex -20 KPX Rcaron Odieresis -20 KPX Rcaron Ograve -20 KPX Rcaron Ohungarumlaut -20 KPX Rcaron Omacron -20 KPX Rcaron Oslash -20 KPX Rcaron Otilde -20 KPX Rcaron T -20 KPX Rcaron Tcaron -20 KPX Rcaron Tcommaaccent -20 KPX Rcaron U -20 KPX Rcaron Uacute -20 KPX Rcaron Ucircumflex -20 KPX Rcaron Udieresis -20 KPX Rcaron Ugrave -20 KPX Rcaron Uhungarumlaut -20 KPX Rcaron Umacron -20 KPX Rcaron Uogonek -20 KPX Rcaron Uring -20 KPX Rcaron V -50 KPX Rcaron W -40 KPX Rcaron Y -50 KPX Rcaron Yacute -50 KPX Rcaron Ydieresis -50 KPX Rcommaaccent O -20 KPX Rcommaaccent Oacute -20 KPX Rcommaaccent Ocircumflex -20 KPX Rcommaaccent Odieresis -20 KPX Rcommaaccent Ograve -20 KPX Rcommaaccent Ohungarumlaut -20 KPX Rcommaaccent Omacron -20 KPX Rcommaaccent Oslash -20 KPX Rcommaaccent Otilde -20 KPX Rcommaaccent T -20 KPX Rcommaaccent Tcaron -20 KPX Rcommaaccent Tcommaaccent -20 KPX Rcommaaccent U -20 KPX Rcommaaccent Uacute -20 KPX Rcommaaccent Ucircumflex -20 KPX Rcommaaccent Udieresis -20 KPX Rcommaaccent Ugrave -20 KPX Rcommaaccent Uhungarumlaut -20 KPX Rcommaaccent Umacron -20 KPX Rcommaaccent Uogonek -20 KPX Rcommaaccent Uring -20 KPX Rcommaaccent V -50 KPX Rcommaaccent W -40 KPX Rcommaaccent Y -50 KPX Rcommaaccent Yacute -50 KPX Rcommaaccent Ydieresis -50 KPX T A -90 KPX T Aacute -90 KPX T Abreve -90 KPX T Acircumflex -90 KPX T Adieresis -90 KPX T Agrave -90 KPX T Amacron -90 KPX T Aogonek -90 KPX T Aring -90 KPX T Atilde -90 KPX T O -40 KPX T Oacute -40 KPX T Ocircumflex -40 KPX T Odieresis -40 KPX T Ograve -40 KPX T Ohungarumlaut -40 KPX T Omacron -40 KPX T Oslash -40 KPX T Otilde -40 KPX T a -80 KPX T aacute -80 KPX T abreve -80 KPX T acircumflex -80 KPX T adieresis -80 KPX T agrave -80 KPX T amacron -80 KPX T aogonek -80 KPX T aring -80 KPX T atilde -80 KPX T colon -40 KPX T comma -80 KPX T e -60 KPX T eacute -60 KPX T ecaron -60 KPX T ecircumflex -60 KPX T edieresis -60 KPX T edotaccent -60 KPX T egrave -60 KPX T emacron -60 KPX T eogonek -60 KPX T hyphen -120 KPX T o -80 KPX T oacute -80 KPX T ocircumflex -80 KPX T odieresis -80 KPX T ograve -80 KPX T ohungarumlaut -80 KPX T omacron -80 KPX T oslash -80 KPX T otilde -80 KPX T period -80 KPX T r -80 KPX T racute -80 KPX T rcommaaccent -80 KPX T semicolon -40 KPX T u -90 KPX T uacute -90 KPX T ucircumflex -90 KPX T udieresis -90 KPX T ugrave -90 KPX T uhungarumlaut -90 KPX T umacron -90 KPX T uogonek -90 KPX T uring -90 KPX T w -60 KPX T y -60 KPX T yacute -60 KPX T ydieresis -60 KPX Tcaron A -90 KPX Tcaron Aacute -90 KPX Tcaron Abreve -90 KPX Tcaron Acircumflex -90 KPX Tcaron Adieresis -90 KPX Tcaron Agrave -90 KPX Tcaron Amacron -90 KPX Tcaron Aogonek -90 KPX Tcaron Aring -90 KPX Tcaron Atilde -90 KPX Tcaron O -40 KPX Tcaron Oacute -40 KPX Tcaron Ocircumflex -40 KPX Tcaron Odieresis -40 KPX Tcaron Ograve -40 KPX Tcaron Ohungarumlaut -40 KPX Tcaron Omacron -40 KPX Tcaron Oslash -40 KPX Tcaron Otilde -40 KPX Tcaron a -80 KPX Tcaron aacute -80 KPX Tcaron abreve -80 KPX Tcaron acircumflex -80 KPX Tcaron adieresis -80 KPX Tcaron agrave -80 KPX Tcaron amacron -80 KPX Tcaron aogonek -80 KPX Tcaron aring -80 KPX Tcaron atilde -80 KPX Tcaron colon -40 KPX Tcaron comma -80 KPX Tcaron e -60 KPX Tcaron eacute -60 KPX Tcaron ecaron -60 KPX Tcaron ecircumflex -60 KPX Tcaron edieresis -60 KPX Tcaron edotaccent -60 KPX Tcaron egrave -60 KPX Tcaron emacron -60 KPX Tcaron eogonek -60 KPX Tcaron hyphen -120 KPX Tcaron o -80 KPX Tcaron oacute -80 KPX Tcaron ocircumflex -80 KPX Tcaron odieresis -80 KPX Tcaron ograve -80 KPX Tcaron ohungarumlaut -80 KPX Tcaron omacron -80 KPX Tcaron oslash -80 KPX Tcaron otilde -80 KPX Tcaron period -80 KPX Tcaron r -80 KPX Tcaron racute -80 KPX Tcaron rcommaaccent -80 KPX Tcaron semicolon -40 KPX Tcaron u -90 KPX Tcaron uacute -90 KPX Tcaron ucircumflex -90 KPX Tcaron udieresis -90 KPX Tcaron ugrave -90 KPX Tcaron uhungarumlaut -90 KPX Tcaron umacron -90 KPX Tcaron uogonek -90 KPX Tcaron uring -90 KPX Tcaron w -60 KPX Tcaron y -60 KPX Tcaron yacute -60 KPX Tcaron ydieresis -60 KPX Tcommaaccent A -90 KPX Tcommaaccent Aacute -90 KPX Tcommaaccent Abreve -90 KPX Tcommaaccent Acircumflex -90 KPX Tcommaaccent Adieresis -90 KPX Tcommaaccent Agrave -90 KPX Tcommaaccent Amacron -90 KPX Tcommaaccent Aogonek -90 KPX Tcommaaccent Aring -90 KPX Tcommaaccent Atilde -90 KPX Tcommaaccent O -40 KPX Tcommaaccent Oacute -40 KPX Tcommaaccent Ocircumflex -40 KPX Tcommaaccent Odieresis -40 KPX Tcommaaccent Ograve -40 KPX Tcommaaccent Ohungarumlaut -40 KPX Tcommaaccent Omacron -40 KPX Tcommaaccent Oslash -40 KPX Tcommaaccent Otilde -40 KPX Tcommaaccent a -80 KPX Tcommaaccent aacute -80 KPX Tcommaaccent abreve -80 KPX Tcommaaccent acircumflex -80 KPX Tcommaaccent adieresis -80 KPX Tcommaaccent agrave -80 KPX Tcommaaccent amacron -80 KPX Tcommaaccent aogonek -80 KPX Tcommaaccent aring -80 KPX Tcommaaccent atilde -80 KPX Tcommaaccent colon -40 KPX Tcommaaccent comma -80 KPX Tcommaaccent e -60 KPX Tcommaaccent eacute -60 KPX Tcommaaccent ecaron -60 KPX Tcommaaccent ecircumflex -60 KPX Tcommaaccent edieresis -60 KPX Tcommaaccent edotaccent -60 KPX Tcommaaccent egrave -60 KPX Tcommaaccent emacron -60 KPX Tcommaaccent eogonek -60 KPX Tcommaaccent hyphen -120 KPX Tcommaaccent o -80 KPX Tcommaaccent oacute -80 KPX Tcommaaccent ocircumflex -80 KPX Tcommaaccent odieresis -80 KPX Tcommaaccent ograve -80 KPX Tcommaaccent ohungarumlaut -80 KPX Tcommaaccent omacron -80 KPX Tcommaaccent oslash -80 KPX Tcommaaccent otilde -80 KPX Tcommaaccent period -80 KPX Tcommaaccent r -80 KPX Tcommaaccent racute -80 KPX Tcommaaccent rcommaaccent -80 KPX Tcommaaccent semicolon -40 KPX Tcommaaccent u -90 KPX Tcommaaccent uacute -90 KPX Tcommaaccent ucircumflex -90 KPX Tcommaaccent udieresis -90 KPX Tcommaaccent ugrave -90 KPX Tcommaaccent uhungarumlaut -90 KPX Tcommaaccent umacron -90 KPX Tcommaaccent uogonek -90 KPX Tcommaaccent uring -90 KPX Tcommaaccent w -60 KPX Tcommaaccent y -60 KPX Tcommaaccent yacute -60 KPX Tcommaaccent ydieresis -60 KPX U A -50 KPX U Aacute -50 KPX U Abreve -50 KPX U Acircumflex -50 KPX U Adieresis -50 KPX U Agrave -50 KPX U Amacron -50 KPX U Aogonek -50 KPX U Aring -50 KPX U Atilde -50 KPX U comma -30 KPX U period -30 KPX Uacute A -50 KPX Uacute Aacute -50 KPX Uacute Abreve -50 KPX Uacute Acircumflex -50 KPX Uacute Adieresis -50 KPX Uacute Agrave -50 KPX Uacute Amacron -50 KPX Uacute Aogonek -50 KPX Uacute Aring -50 KPX Uacute Atilde -50 KPX Uacute comma -30 KPX Uacute period -30 KPX Ucircumflex A -50 KPX Ucircumflex Aacute -50 KPX Ucircumflex Abreve -50 KPX Ucircumflex Acircumflex -50 KPX Ucircumflex Adieresis -50 KPX Ucircumflex Agrave -50 KPX Ucircumflex Amacron -50 KPX Ucircumflex Aogonek -50 KPX Ucircumflex Aring -50 KPX Ucircumflex Atilde -50 KPX Ucircumflex comma -30 KPX Ucircumflex period -30 KPX Udieresis A -50 KPX Udieresis Aacute -50 KPX Udieresis Abreve -50 KPX Udieresis Acircumflex -50 KPX Udieresis Adieresis -50 KPX Udieresis Agrave -50 KPX Udieresis Amacron -50 KPX Udieresis Aogonek -50 KPX Udieresis Aring -50 KPX Udieresis Atilde -50 KPX Udieresis comma -30 KPX Udieresis period -30 KPX Ugrave A -50 KPX Ugrave Aacute -50 KPX Ugrave Abreve -50 KPX Ugrave Acircumflex -50 KPX Ugrave Adieresis -50 KPX Ugrave Agrave -50 KPX Ugrave Amacron -50 KPX Ugrave Aogonek -50 KPX Ugrave Aring -50 KPX Ugrave Atilde -50 KPX Ugrave comma -30 KPX Ugrave period -30 KPX Uhungarumlaut A -50 KPX Uhungarumlaut Aacute -50 KPX Uhungarumlaut Abreve -50 KPX Uhungarumlaut Acircumflex -50 KPX Uhungarumlaut Adieresis -50 KPX Uhungarumlaut Agrave -50 KPX Uhungarumlaut Amacron -50 KPX Uhungarumlaut Aogonek -50 KPX Uhungarumlaut Aring -50 KPX Uhungarumlaut Atilde -50 KPX Uhungarumlaut comma -30 KPX Uhungarumlaut period -30 KPX Umacron A -50 KPX Umacron Aacute -50 KPX Umacron Abreve -50 KPX Umacron Acircumflex -50 KPX Umacron Adieresis -50 KPX Umacron Agrave -50 KPX Umacron Amacron -50 KPX Umacron Aogonek -50 KPX Umacron Aring -50 KPX Umacron Atilde -50 KPX Umacron comma -30 KPX Umacron period -30 KPX Uogonek A -50 KPX Uogonek Aacute -50 KPX Uogonek Abreve -50 KPX Uogonek Acircumflex -50 KPX Uogonek Adieresis -50 KPX Uogonek Agrave -50 KPX Uogonek Amacron -50 KPX Uogonek Aogonek -50 KPX Uogonek Aring -50 KPX Uogonek Atilde -50 KPX Uogonek comma -30 KPX Uogonek period -30 KPX Uring A -50 KPX Uring Aacute -50 KPX Uring Abreve -50 KPX Uring Acircumflex -50 KPX Uring Adieresis -50 KPX Uring Agrave -50 KPX Uring Amacron -50 KPX Uring Aogonek -50 KPX Uring Aring -50 KPX Uring Atilde -50 KPX Uring comma -30 KPX Uring period -30 KPX V A -80 KPX V Aacute -80 KPX V Abreve -80 KPX V Acircumflex -80 KPX V Adieresis -80 KPX V Agrave -80 KPX V Amacron -80 KPX V Aogonek -80 KPX V Aring -80 KPX V Atilde -80 KPX V G -50 KPX V Gbreve -50 KPX V Gcommaaccent -50 KPX V O -50 KPX V Oacute -50 KPX V Ocircumflex -50 KPX V Odieresis -50 KPX V Ograve -50 KPX V Ohungarumlaut -50 KPX V Omacron -50 KPX V Oslash -50 KPX V Otilde -50 KPX V a -60 KPX V aacute -60 KPX V abreve -60 KPX V acircumflex -60 KPX V adieresis -60 KPX V agrave -60 KPX V amacron -60 KPX V aogonek -60 KPX V aring -60 KPX V atilde -60 KPX V colon -40 KPX V comma -120 KPX V e -50 KPX V eacute -50 KPX V ecaron -50 KPX V ecircumflex -50 KPX V edieresis -50 KPX V edotaccent -50 KPX V egrave -50 KPX V emacron -50 KPX V eogonek -50 KPX V hyphen -80 KPX V o -90 KPX V oacute -90 KPX V ocircumflex -90 KPX V odieresis -90 KPX V ograve -90 KPX V ohungarumlaut -90 KPX V omacron -90 KPX V oslash -90 KPX V otilde -90 KPX V period -120 KPX V semicolon -40 KPX V u -60 KPX V uacute -60 KPX V ucircumflex -60 KPX V udieresis -60 KPX V ugrave -60 KPX V uhungarumlaut -60 KPX V umacron -60 KPX V uogonek -60 KPX V uring -60 KPX W A -60 KPX W Aacute -60 KPX W Abreve -60 KPX W Acircumflex -60 KPX W Adieresis -60 KPX W Agrave -60 KPX W Amacron -60 KPX W Aogonek -60 KPX W Aring -60 KPX W Atilde -60 KPX W O -20 KPX W Oacute -20 KPX W Ocircumflex -20 KPX W Odieresis -20 KPX W Ograve -20 KPX W Ohungarumlaut -20 KPX W Omacron -20 KPX W Oslash -20 KPX W Otilde -20 KPX W a -40 KPX W aacute -40 KPX W abreve -40 KPX W acircumflex -40 KPX W adieresis -40 KPX W agrave -40 KPX W amacron -40 KPX W aogonek -40 KPX W aring -40 KPX W atilde -40 KPX W colon -10 KPX W comma -80 KPX W e -35 KPX W eacute -35 KPX W ecaron -35 KPX W ecircumflex -35 KPX W edieresis -35 KPX W edotaccent -35 KPX W egrave -35 KPX W emacron -35 KPX W eogonek -35 KPX W hyphen -40 KPX W o -60 KPX W oacute -60 KPX W ocircumflex -60 KPX W odieresis -60 KPX W ograve -60 KPX W ohungarumlaut -60 KPX W omacron -60 KPX W oslash -60 KPX W otilde -60 KPX W period -80 KPX W semicolon -10 KPX W u -45 KPX W uacute -45 KPX W ucircumflex -45 KPX W udieresis -45 KPX W ugrave -45 KPX W uhungarumlaut -45 KPX W umacron -45 KPX W uogonek -45 KPX W uring -45 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -70 KPX Y Oacute -70 KPX Y Ocircumflex -70 KPX Y Odieresis -70 KPX Y Ograve -70 KPX Y Ohungarumlaut -70 KPX Y Omacron -70 KPX Y Oslash -70 KPX Y Otilde -70 KPX Y a -90 KPX Y aacute -90 KPX Y abreve -90 KPX Y acircumflex -90 KPX Y adieresis -90 KPX Y agrave -90 KPX Y amacron -90 KPX Y aogonek -90 KPX Y aring -90 KPX Y atilde -90 KPX Y colon -50 KPX Y comma -100 KPX Y e -80 KPX Y eacute -80 KPX Y ecaron -80 KPX Y ecircumflex -80 KPX Y edieresis -80 KPX Y edotaccent -80 KPX Y egrave -80 KPX Y emacron -80 KPX Y eogonek -80 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -100 KPX Y ograve -100 KPX Y ohungarumlaut -100 KPX Y omacron -100 KPX Y oslash -100 KPX Y otilde -100 KPX Y period -100 KPX Y semicolon -50 KPX Y u -100 KPX Y uacute -100 KPX Y ucircumflex -100 KPX Y udieresis -100 KPX Y ugrave -100 KPX Y uhungarumlaut -100 KPX Y umacron -100 KPX Y uogonek -100 KPX Y uring -100 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -70 KPX Yacute Oacute -70 KPX Yacute Ocircumflex -70 KPX Yacute Odieresis -70 KPX Yacute Ograve -70 KPX Yacute Ohungarumlaut -70 KPX Yacute Omacron -70 KPX Yacute Oslash -70 KPX Yacute Otilde -70 KPX Yacute a -90 KPX Yacute aacute -90 KPX Yacute abreve -90 KPX Yacute acircumflex -90 KPX Yacute adieresis -90 KPX Yacute agrave -90 KPX Yacute amacron -90 KPX Yacute aogonek -90 KPX Yacute aring -90 KPX Yacute atilde -90 KPX Yacute colon -50 KPX Yacute comma -100 KPX Yacute e -80 KPX Yacute eacute -80 KPX Yacute ecaron -80 KPX Yacute ecircumflex -80 KPX Yacute edieresis -80 KPX Yacute edotaccent -80 KPX Yacute egrave -80 KPX Yacute emacron -80 KPX Yacute eogonek -80 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -100 KPX Yacute ograve -100 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -100 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute period -100 KPX Yacute semicolon -50 KPX Yacute u -100 KPX Yacute uacute -100 KPX Yacute ucircumflex -100 KPX Yacute udieresis -100 KPX Yacute ugrave -100 KPX Yacute uhungarumlaut -100 KPX Yacute umacron -100 KPX Yacute uogonek -100 KPX Yacute uring -100 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -70 KPX Ydieresis Oacute -70 KPX Ydieresis Ocircumflex -70 KPX Ydieresis Odieresis -70 KPX Ydieresis Ograve -70 KPX Ydieresis Ohungarumlaut -70 KPX Ydieresis Omacron -70 KPX Ydieresis Oslash -70 KPX Ydieresis Otilde -70 KPX Ydieresis a -90 KPX Ydieresis aacute -90 KPX Ydieresis abreve -90 KPX Ydieresis acircumflex -90 KPX Ydieresis adieresis -90 KPX Ydieresis agrave -90 KPX Ydieresis amacron -90 KPX Ydieresis aogonek -90 KPX Ydieresis aring -90 KPX Ydieresis atilde -90 KPX Ydieresis colon -50 KPX Ydieresis comma -100 KPX Ydieresis e -80 KPX Ydieresis eacute -80 KPX Ydieresis ecaron -80 KPX Ydieresis ecircumflex -80 KPX Ydieresis edieresis -80 KPX Ydieresis edotaccent -80 KPX Ydieresis egrave -80 KPX Ydieresis emacron -80 KPX Ydieresis eogonek -80 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -100 KPX Ydieresis ograve -100 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -100 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis period -100 KPX Ydieresis semicolon -50 KPX Ydieresis u -100 KPX Ydieresis uacute -100 KPX Ydieresis ucircumflex -100 KPX Ydieresis udieresis -100 KPX Ydieresis ugrave -100 KPX Ydieresis uhungarumlaut -100 KPX Ydieresis umacron -100 KPX Ydieresis uogonek -100 KPX Ydieresis uring -100 KPX a g -10 KPX a gbreve -10 KPX a gcommaaccent -10 KPX a v -15 KPX a w -15 KPX a y -20 KPX a yacute -20 KPX a ydieresis -20 KPX aacute g -10 KPX aacute gbreve -10 KPX aacute gcommaaccent -10 KPX aacute v -15 KPX aacute w -15 KPX aacute y -20 KPX aacute yacute -20 KPX aacute ydieresis -20 KPX abreve g -10 KPX abreve gbreve -10 KPX abreve gcommaaccent -10 KPX abreve v -15 KPX abreve w -15 KPX abreve y -20 KPX abreve yacute -20 KPX abreve ydieresis -20 KPX acircumflex g -10 KPX acircumflex gbreve -10 KPX acircumflex gcommaaccent -10 KPX acircumflex v -15 KPX acircumflex w -15 KPX acircumflex y -20 KPX acircumflex yacute -20 KPX acircumflex ydieresis -20 KPX adieresis g -10 KPX adieresis gbreve -10 KPX adieresis gcommaaccent -10 KPX adieresis v -15 KPX adieresis w -15 KPX adieresis y -20 KPX adieresis yacute -20 KPX adieresis ydieresis -20 KPX agrave g -10 KPX agrave gbreve -10 KPX agrave gcommaaccent -10 KPX agrave v -15 KPX agrave w -15 KPX agrave y -20 KPX agrave yacute -20 KPX agrave ydieresis -20 KPX amacron g -10 KPX amacron gbreve -10 KPX amacron gcommaaccent -10 KPX amacron v -15 KPX amacron w -15 KPX amacron y -20 KPX amacron yacute -20 KPX amacron ydieresis -20 KPX aogonek g -10 KPX aogonek gbreve -10 KPX aogonek gcommaaccent -10 KPX aogonek v -15 KPX aogonek w -15 KPX aogonek y -20 KPX aogonek yacute -20 KPX aogonek ydieresis -20 KPX aring g -10 KPX aring gbreve -10 KPX aring gcommaaccent -10 KPX aring v -15 KPX aring w -15 KPX aring y -20 KPX aring yacute -20 KPX aring ydieresis -20 KPX atilde g -10 KPX atilde gbreve -10 KPX atilde gcommaaccent -10 KPX atilde v -15 KPX atilde w -15 KPX atilde y -20 KPX atilde yacute -20 KPX atilde ydieresis -20 KPX b l -10 KPX b lacute -10 KPX b lcommaaccent -10 KPX b lslash -10 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -20 KPX b y -20 KPX b yacute -20 KPX b ydieresis -20 KPX c h -10 KPX c k -20 KPX c kcommaaccent -20 KPX c l -20 KPX c lacute -20 KPX c lcommaaccent -20 KPX c lslash -20 KPX c y -10 KPX c yacute -10 KPX c ydieresis -10 KPX cacute h -10 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX cacute l -20 KPX cacute lacute -20 KPX cacute lcommaaccent -20 KPX cacute lslash -20 KPX cacute y -10 KPX cacute yacute -10 KPX cacute ydieresis -10 KPX ccaron h -10 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccaron l -20 KPX ccaron lacute -20 KPX ccaron lcommaaccent -20 KPX ccaron lslash -20 KPX ccaron y -10 KPX ccaron yacute -10 KPX ccaron ydieresis -10 KPX ccedilla h -10 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX ccedilla l -20 KPX ccedilla lacute -20 KPX ccedilla lcommaaccent -20 KPX ccedilla lslash -20 KPX ccedilla y -10 KPX ccedilla yacute -10 KPX ccedilla ydieresis -10 KPX colon space -40 KPX comma quotedblright -120 KPX comma quoteright -120 KPX comma space -40 KPX d d -10 KPX d dcroat -10 KPX d v -15 KPX d w -15 KPX d y -15 KPX d yacute -15 KPX d ydieresis -15 KPX dcroat d -10 KPX dcroat dcroat -10 KPX dcroat v -15 KPX dcroat w -15 KPX dcroat y -15 KPX dcroat yacute -15 KPX dcroat ydieresis -15 KPX e comma 10 KPX e period 20 KPX e v -15 KPX e w -15 KPX e x -15 KPX e y -15 KPX e yacute -15 KPX e ydieresis -15 KPX eacute comma 10 KPX eacute period 20 KPX eacute v -15 KPX eacute w -15 KPX eacute x -15 KPX eacute y -15 KPX eacute yacute -15 KPX eacute ydieresis -15 KPX ecaron comma 10 KPX ecaron period 20 KPX ecaron v -15 KPX ecaron w -15 KPX ecaron x -15 KPX ecaron y -15 KPX ecaron yacute -15 KPX ecaron ydieresis -15 KPX ecircumflex comma 10 KPX ecircumflex period 20 KPX ecircumflex v -15 KPX ecircumflex w -15 KPX ecircumflex x -15 KPX ecircumflex y -15 KPX ecircumflex yacute -15 KPX ecircumflex ydieresis -15 KPX edieresis comma 10 KPX edieresis period 20 KPX edieresis v -15 KPX edieresis w -15 KPX edieresis x -15 KPX edieresis y -15 KPX edieresis yacute -15 KPX edieresis ydieresis -15 KPX edotaccent comma 10 KPX edotaccent period 20 KPX edotaccent v -15 KPX edotaccent w -15 KPX edotaccent x -15 KPX edotaccent y -15 KPX edotaccent yacute -15 KPX edotaccent ydieresis -15 KPX egrave comma 10 KPX egrave period 20 KPX egrave v -15 KPX egrave w -15 KPX egrave x -15 KPX egrave y -15 KPX egrave yacute -15 KPX egrave ydieresis -15 KPX emacron comma 10 KPX emacron period 20 KPX emacron v -15 KPX emacron w -15 KPX emacron x -15 KPX emacron y -15 KPX emacron yacute -15 KPX emacron ydieresis -15 KPX eogonek comma 10 KPX eogonek period 20 KPX eogonek v -15 KPX eogonek w -15 KPX eogonek x -15 KPX eogonek y -15 KPX eogonek yacute -15 KPX eogonek ydieresis -15 KPX f comma -10 KPX f e -10 KPX f eacute -10 KPX f ecaron -10 KPX f ecircumflex -10 KPX f edieresis -10 KPX f edotaccent -10 KPX f egrave -10 KPX f emacron -10 KPX f eogonek -10 KPX f o -20 KPX f oacute -20 KPX f ocircumflex -20 KPX f odieresis -20 KPX f ograve -20 KPX f ohungarumlaut -20 KPX f omacron -20 KPX f oslash -20 KPX f otilde -20 KPX f period -10 KPX f quotedblright 30 KPX f quoteright 30 KPX g e 10 KPX g eacute 10 KPX g ecaron 10 KPX g ecircumflex 10 KPX g edieresis 10 KPX g edotaccent 10 KPX g egrave 10 KPX g emacron 10 KPX g eogonek 10 KPX g g -10 KPX g gbreve -10 KPX g gcommaaccent -10 KPX gbreve e 10 KPX gbreve eacute 10 KPX gbreve ecaron 10 KPX gbreve ecircumflex 10 KPX gbreve edieresis 10 KPX gbreve edotaccent 10 KPX gbreve egrave 10 KPX gbreve emacron 10 KPX gbreve eogonek 10 KPX gbreve g -10 KPX gbreve gbreve -10 KPX gbreve gcommaaccent -10 KPX gcommaaccent e 10 KPX gcommaaccent eacute 10 KPX gcommaaccent ecaron 10 KPX gcommaaccent ecircumflex 10 KPX gcommaaccent edieresis 10 KPX gcommaaccent edotaccent 10 KPX gcommaaccent egrave 10 KPX gcommaaccent emacron 10 KPX gcommaaccent eogonek 10 KPX gcommaaccent g -10 KPX gcommaaccent gbreve -10 KPX gcommaaccent gcommaaccent -10 KPX h y -20 KPX h yacute -20 KPX h ydieresis -20 KPX k o -15 KPX k oacute -15 KPX k ocircumflex -15 KPX k odieresis -15 KPX k ograve -15 KPX k ohungarumlaut -15 KPX k omacron -15 KPX k oslash -15 KPX k otilde -15 KPX kcommaaccent o -15 KPX kcommaaccent oacute -15 KPX kcommaaccent ocircumflex -15 KPX kcommaaccent odieresis -15 KPX kcommaaccent ograve -15 KPX kcommaaccent ohungarumlaut -15 KPX kcommaaccent omacron -15 KPX kcommaaccent oslash -15 KPX kcommaaccent otilde -15 KPX l w -15 KPX l y -15 KPX l yacute -15 KPX l ydieresis -15 KPX lacute w -15 KPX lacute y -15 KPX lacute yacute -15 KPX lacute ydieresis -15 KPX lcommaaccent w -15 KPX lcommaaccent y -15 KPX lcommaaccent yacute -15 KPX lcommaaccent ydieresis -15 KPX lslash w -15 KPX lslash y -15 KPX lslash yacute -15 KPX lslash ydieresis -15 KPX m u -20 KPX m uacute -20 KPX m ucircumflex -20 KPX m udieresis -20 KPX m ugrave -20 KPX m uhungarumlaut -20 KPX m umacron -20 KPX m uogonek -20 KPX m uring -20 KPX m y -30 KPX m yacute -30 KPX m ydieresis -30 KPX n u -10 KPX n uacute -10 KPX n ucircumflex -10 KPX n udieresis -10 KPX n ugrave -10 KPX n uhungarumlaut -10 KPX n umacron -10 KPX n uogonek -10 KPX n uring -10 KPX n v -40 KPX n y -20 KPX n yacute -20 KPX n ydieresis -20 KPX nacute u -10 KPX nacute uacute -10 KPX nacute ucircumflex -10 KPX nacute udieresis -10 KPX nacute ugrave -10 KPX nacute uhungarumlaut -10 KPX nacute umacron -10 KPX nacute uogonek -10 KPX nacute uring -10 KPX nacute v -40 KPX nacute y -20 KPX nacute yacute -20 KPX nacute ydieresis -20 KPX ncaron u -10 KPX ncaron uacute -10 KPX ncaron ucircumflex -10 KPX ncaron udieresis -10 KPX ncaron ugrave -10 KPX ncaron uhungarumlaut -10 KPX ncaron umacron -10 KPX ncaron uogonek -10 KPX ncaron uring -10 KPX ncaron v -40 KPX ncaron y -20 KPX ncaron yacute -20 KPX ncaron ydieresis -20 KPX ncommaaccent u -10 KPX ncommaaccent uacute -10 KPX ncommaaccent ucircumflex -10 KPX ncommaaccent udieresis -10 KPX ncommaaccent ugrave -10 KPX ncommaaccent uhungarumlaut -10 KPX ncommaaccent umacron -10 KPX ncommaaccent uogonek -10 KPX ncommaaccent uring -10 KPX ncommaaccent v -40 KPX ncommaaccent y -20 KPX ncommaaccent yacute -20 KPX ncommaaccent ydieresis -20 KPX ntilde u -10 KPX ntilde uacute -10 KPX ntilde ucircumflex -10 KPX ntilde udieresis -10 KPX ntilde ugrave -10 KPX ntilde uhungarumlaut -10 KPX ntilde umacron -10 KPX ntilde uogonek -10 KPX ntilde uring -10 KPX ntilde v -40 KPX ntilde y -20 KPX ntilde yacute -20 KPX ntilde ydieresis -20 KPX o v -20 KPX o w -15 KPX o x -30 KPX o y -20 KPX o yacute -20 KPX o ydieresis -20 KPX oacute v -20 KPX oacute w -15 KPX oacute x -30 KPX oacute y -20 KPX oacute yacute -20 KPX oacute ydieresis -20 KPX ocircumflex v -20 KPX ocircumflex w -15 KPX ocircumflex x -30 KPX ocircumflex y -20 KPX ocircumflex yacute -20 KPX ocircumflex ydieresis -20 KPX odieresis v -20 KPX odieresis w -15 KPX odieresis x -30 KPX odieresis y -20 KPX odieresis yacute -20 KPX odieresis ydieresis -20 KPX ograve v -20 KPX ograve w -15 KPX ograve x -30 KPX ograve y -20 KPX ograve yacute -20 KPX ograve ydieresis -20 KPX ohungarumlaut v -20 KPX ohungarumlaut w -15 KPX ohungarumlaut x -30 KPX ohungarumlaut y -20 KPX ohungarumlaut yacute -20 KPX ohungarumlaut ydieresis -20 KPX omacron v -20 KPX omacron w -15 KPX omacron x -30 KPX omacron y -20 KPX omacron yacute -20 KPX omacron ydieresis -20 KPX oslash v -20 KPX oslash w -15 KPX oslash x -30 KPX oslash y -20 KPX oslash yacute -20 KPX oslash ydieresis -20 KPX otilde v -20 KPX otilde w -15 KPX otilde x -30 KPX otilde y -20 KPX otilde yacute -20 KPX otilde ydieresis -20 KPX p y -15 KPX p yacute -15 KPX p ydieresis -15 KPX period quotedblright -120 KPX period quoteright -120 KPX period space -40 KPX quotedblright space -80 KPX quoteleft quoteleft -46 KPX quoteright d -80 KPX quoteright dcroat -80 KPX quoteright l -20 KPX quoteright lacute -20 KPX quoteright lcommaaccent -20 KPX quoteright lslash -20 KPX quoteright quoteright -46 KPX quoteright r -40 KPX quoteright racute -40 KPX quoteright rcaron -40 KPX quoteright rcommaaccent -40 KPX quoteright s -60 KPX quoteright sacute -60 KPX quoteright scaron -60 KPX quoteright scedilla -60 KPX quoteright scommaaccent -60 KPX quoteright space -80 KPX quoteright v -20 KPX r c -20 KPX r cacute -20 KPX r ccaron -20 KPX r ccedilla -20 KPX r comma -60 KPX r d -20 KPX r dcroat -20 KPX r g -15 KPX r gbreve -15 KPX r gcommaaccent -15 KPX r hyphen -20 KPX r o -20 KPX r oacute -20 KPX r ocircumflex -20 KPX r odieresis -20 KPX r ograve -20 KPX r ohungarumlaut -20 KPX r omacron -20 KPX r oslash -20 KPX r otilde -20 KPX r period -60 KPX r q -20 KPX r s -15 KPX r sacute -15 KPX r scaron -15 KPX r scedilla -15 KPX r scommaaccent -15 KPX r t 20 KPX r tcommaaccent 20 KPX r v 10 KPX r y 10 KPX r yacute 10 KPX r ydieresis 10 KPX racute c -20 KPX racute cacute -20 KPX racute ccaron -20 KPX racute ccedilla -20 KPX racute comma -60 KPX racute d -20 KPX racute dcroat -20 KPX racute g -15 KPX racute gbreve -15 KPX racute gcommaaccent -15 KPX racute hyphen -20 KPX racute o -20 KPX racute oacute -20 KPX racute ocircumflex -20 KPX racute odieresis -20 KPX racute ograve -20 KPX racute ohungarumlaut -20 KPX racute omacron -20 KPX racute oslash -20 KPX racute otilde -20 KPX racute period -60 KPX racute q -20 KPX racute s -15 KPX racute sacute -15 KPX racute scaron -15 KPX racute scedilla -15 KPX racute scommaaccent -15 KPX racute t 20 KPX racute tcommaaccent 20 KPX racute v 10 KPX racute y 10 KPX racute yacute 10 KPX racute ydieresis 10 KPX rcaron c -20 KPX rcaron cacute -20 KPX rcaron ccaron -20 KPX rcaron ccedilla -20 KPX rcaron comma -60 KPX rcaron d -20 KPX rcaron dcroat -20 KPX rcaron g -15 KPX rcaron gbreve -15 KPX rcaron gcommaaccent -15 KPX rcaron hyphen -20 KPX rcaron o -20 KPX rcaron oacute -20 KPX rcaron ocircumflex -20 KPX rcaron odieresis -20 KPX rcaron ograve -20 KPX rcaron ohungarumlaut -20 KPX rcaron omacron -20 KPX rcaron oslash -20 KPX rcaron otilde -20 KPX rcaron period -60 KPX rcaron q -20 KPX rcaron s -15 KPX rcaron sacute -15 KPX rcaron scaron -15 KPX rcaron scedilla -15 KPX rcaron scommaaccent -15 KPX rcaron t 20 KPX rcaron tcommaaccent 20 KPX rcaron v 10 KPX rcaron y 10 KPX rcaron yacute 10 KPX rcaron ydieresis 10 KPX rcommaaccent c -20 KPX rcommaaccent cacute -20 KPX rcommaaccent ccaron -20 KPX rcommaaccent ccedilla -20 KPX rcommaaccent comma -60 KPX rcommaaccent d -20 KPX rcommaaccent dcroat -20 KPX rcommaaccent g -15 KPX rcommaaccent gbreve -15 KPX rcommaaccent gcommaaccent -15 KPX rcommaaccent hyphen -20 KPX rcommaaccent o -20 KPX rcommaaccent oacute -20 KPX rcommaaccent ocircumflex -20 KPX rcommaaccent odieresis -20 KPX rcommaaccent ograve -20 KPX rcommaaccent ohungarumlaut -20 KPX rcommaaccent omacron -20 KPX rcommaaccent oslash -20 KPX rcommaaccent otilde -20 KPX rcommaaccent period -60 KPX rcommaaccent q -20 KPX rcommaaccent s -15 KPX rcommaaccent sacute -15 KPX rcommaaccent scaron -15 KPX rcommaaccent scedilla -15 KPX rcommaaccent scommaaccent -15 KPX rcommaaccent t 20 KPX rcommaaccent tcommaaccent 20 KPX rcommaaccent v 10 KPX rcommaaccent y 10 KPX rcommaaccent yacute 10 KPX rcommaaccent ydieresis 10 KPX s w -15 KPX sacute w -15 KPX scaron w -15 KPX scedilla w -15 KPX scommaaccent w -15 KPX semicolon space -40 KPX space T -100 KPX space Tcaron -100 KPX space Tcommaaccent -100 KPX space V -80 KPX space W -80 KPX space Y -120 KPX space Yacute -120 KPX space Ydieresis -120 KPX space quotedblleft -80 KPX space quoteleft -60 KPX v a -20 KPX v aacute -20 KPX v abreve -20 KPX v acircumflex -20 KPX v adieresis -20 KPX v agrave -20 KPX v amacron -20 KPX v aogonek -20 KPX v aring -20 KPX v atilde -20 KPX v comma -80 KPX v o -30 KPX v oacute -30 KPX v ocircumflex -30 KPX v odieresis -30 KPX v ograve -30 KPX v ohungarumlaut -30 KPX v omacron -30 KPX v oslash -30 KPX v otilde -30 KPX v period -80 KPX w comma -40 KPX w o -20 KPX w oacute -20 KPX w ocircumflex -20 KPX w odieresis -20 KPX w ograve -20 KPX w ohungarumlaut -20 KPX w omacron -20 KPX w oslash -20 KPX w otilde -20 KPX w period -40 KPX x e -10 KPX x eacute -10 KPX x ecaron -10 KPX x ecircumflex -10 KPX x edieresis -10 KPX x edotaccent -10 KPX x egrave -10 KPX x emacron -10 KPX x eogonek -10 KPX y a -30 KPX y aacute -30 KPX y abreve -30 KPX y acircumflex -30 KPX y adieresis -30 KPX y agrave -30 KPX y amacron -30 KPX y aogonek -30 KPX y aring -30 KPX y atilde -30 KPX y comma -80 KPX y e -10 KPX y eacute -10 KPX y ecaron -10 KPX y ecircumflex -10 KPX y edieresis -10 KPX y edotaccent -10 KPX y egrave -10 KPX y emacron -10 KPX y eogonek -10 KPX y o -25 KPX y oacute -25 KPX y ocircumflex -25 KPX y odieresis -25 KPX y ograve -25 KPX y ohungarumlaut -25 KPX y omacron -25 KPX y oslash -25 KPX y otilde -25 KPX y period -80 KPX yacute a -30 KPX yacute aacute -30 KPX yacute abreve -30 KPX yacute acircumflex -30 KPX yacute adieresis -30 KPX yacute agrave -30 KPX yacute amacron -30 KPX yacute aogonek -30 KPX yacute aring -30 KPX yacute atilde -30 KPX yacute comma -80 KPX yacute e -10 KPX yacute eacute -10 KPX yacute ecaron -10 KPX yacute ecircumflex -10 KPX yacute edieresis -10 KPX yacute edotaccent -10 KPX yacute egrave -10 KPX yacute emacron -10 KPX yacute eogonek -10 KPX yacute o -25 KPX yacute oacute -25 KPX yacute ocircumflex -25 KPX yacute odieresis -25 KPX yacute ograve -25 KPX yacute ohungarumlaut -25 KPX yacute omacron -25 KPX yacute oslash -25 KPX yacute otilde -25 KPX yacute period -80 KPX ydieresis a -30 KPX ydieresis aacute -30 KPX ydieresis abreve -30 KPX ydieresis acircumflex -30 KPX ydieresis adieresis -30 KPX ydieresis agrave -30 KPX ydieresis amacron -30 KPX ydieresis aogonek -30 KPX ydieresis aring -30 KPX ydieresis atilde -30 KPX ydieresis comma -80 KPX ydieresis e -10 KPX ydieresis eacute -10 KPX ydieresis ecaron -10 KPX ydieresis ecircumflex -10 KPX ydieresis edieresis -10 KPX ydieresis edotaccent -10 KPX ydieresis egrave -10 KPX ydieresis emacron -10 KPX ydieresis eogonek -10 KPX ydieresis o -25 KPX ydieresis oacute -25 KPX ydieresis ocircumflex -25 KPX ydieresis odieresis -25 KPX ydieresis ograve -25 KPX ydieresis ohungarumlaut -25 KPX ydieresis omacron -25 KPX ydieresis oslash -25 KPX ydieresis otilde -25 KPX ydieresis period -80 KPX z e 10 KPX z eacute 10 KPX z ecaron 10 KPX z ecircumflex 10 KPX z edieresis 10 KPX z edotaccent 10 KPX z egrave 10 KPX z emacron 10 KPX z eogonek 10 KPX zacute e 10 KPX zacute eacute 10 KPX zacute ecaron 10 KPX zacute ecircumflex 10 KPX zacute edieresis 10 KPX zacute edotaccent 10 KPX zacute egrave 10 KPX zacute emacron 10 KPX zacute eogonek 10 KPX zcaron e 10 KPX zcaron eacute 10 KPX zcaron ecaron 10 KPX zcaron ecircumflex 10 KPX zcaron edieresis 10 KPX zcaron edotaccent 10 KPX zcaron egrave 10 KPX zcaron emacron 10 KPX zcaron eogonek 10 KPX zdotaccent e 10 KPX zdotaccent eacute 10 KPX zdotaccent ecaron 10 KPX zdotaccent ecircumflex 10 KPX zdotaccent edieresis 10 KPX zdotaccent edotaccent 10 KPX zdotaccent egrave 10 KPX zdotaccent emacron 10 KPX zdotaccent eogonek 10 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/NewCenturySchlbk-Bold.afm0000644000222100022210000012563214541067540017504 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1988, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 14:22:15 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43095 Comment VMusage 44510 55535 FontName NewCenturySchlbk-Bold FullName New Century Schoolbook Bold FamilyName New Century Schoolbook Weight Bold ItalicAngle 0 IsFixedPitch false FontBBox -165 -250 1000 988 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1988, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 722 XHeight 475 Ascender 737 Descender -205 StdHW 54 StdVW 154 StartCharMetrics 361 C 32 ; WX 287 ; N space ; B 0 0 0 0 ; C 33 ; WX 296 ; N exclam ; B 53 -15 243 737 ; C 34 ; WX 333 ; N quotedbl ; B 0 378 333 737 ; C 35 ; WX 574 ; N numbersign ; B 36 0 538 690 ; C 36 ; WX 574 ; N dollar ; B 25 -141 549 810 ; C 37 ; WX 833 ; N percent ; B 14 -15 819 705 ; C 38 ; WX 852 ; N ampersand ; B 34 -15 818 737 ; C 39 ; WX 241 ; N quoteright ; B 22 378 220 737 ; C 40 ; WX 389 ; N parenleft ; B 77 -117 345 745 ; C 41 ; WX 389 ; N parenright ; B 44 -117 312 745 ; C 42 ; WX 500 ; N asterisk ; B 54 302 446 737 ; C 43 ; WX 606 ; N plus ; B 50 0 556 506 ; C 44 ; WX 278 ; N comma ; B 40 -184 238 175 ; C 45 ; WX 333 ; N hyphen ; B 42 174 291 302 ; C 46 ; WX 278 ; N period ; B 44 -15 234 175 ; C 47 ; WX 278 ; N slash ; B -42 -15 320 737 ; C 48 ; WX 574 ; N zero ; B 27 -15 547 705 ; C 49 ; WX 574 ; N one ; B 83 0 491 705 ; C 50 ; WX 574 ; N two ; B 19 0 531 705 ; C 51 ; WX 574 ; N three ; B 23 -15 531 705 ; C 52 ; WX 574 ; N four ; B 19 0 547 705 ; C 53 ; WX 574 ; N five ; B 32 -15 534 705 ; C 54 ; WX 574 ; N six ; B 27 -15 547 705 ; C 55 ; WX 574 ; N seven ; B 45 -15 547 705 ; C 56 ; WX 574 ; N eight ; B 27 -15 548 705 ; C 57 ; WX 574 ; N nine ; B 27 -15 547 705 ; C 58 ; WX 278 ; N colon ; B 44 -15 234 485 ; C 59 ; WX 278 ; N semicolon ; B 40 -184 238 485 ; C 60 ; WX 606 ; N less ; B 50 -9 556 515 ; C 61 ; WX 606 ; N equal ; B 50 103 556 403 ; C 62 ; WX 606 ; N greater ; B 50 -9 556 515 ; C 63 ; WX 500 ; N question ; B 23 -15 477 737 ; C 64 ; WX 747 ; N at ; B -2 -15 750 737 ; C 65 ; WX 759 ; N A ; B -19 0 778 737 ; C 66 ; WX 778 ; N B ; B 19 0 739 722 ; C 67 ; WX 778 ; N C ; B 39 -15 723 737 ; C 68 ; WX 833 ; N D ; B 19 0 794 722 ; C 69 ; WX 759 ; N E ; B 19 0 708 722 ; C 70 ; WX 722 ; N F ; B 19 0 697 722 ; C 71 ; WX 833 ; N G ; B 39 -15 818 737 ; C 72 ; WX 870 ; N H ; B 19 0 851 722 ; C 73 ; WX 444 ; N I ; B 29 0 415 722 ; C 74 ; WX 648 ; N J ; B 6 -15 642 722 ; C 75 ; WX 815 ; N K ; B 19 0 822 722 ; C 76 ; WX 722 ; N L ; B 19 0 703 722 ; C 77 ; WX 981 ; N M ; B 10 0 971 722 ; C 78 ; WX 833 ; N N ; B 5 -10 828 722 ; C 79 ; WX 833 ; N O ; B 39 -15 794 737 ; C 80 ; WX 759 ; N P ; B 24 0 735 722 ; C 81 ; WX 833 ; N Q ; B 39 -189 808 737 ; C 82 ; WX 815 ; N R ; B 19 -15 815 722 ; C 83 ; WX 667 ; N S ; B 51 -15 634 737 ; C 84 ; WX 722 ; N T ; B 16 0 706 722 ; C 85 ; WX 833 ; N U ; B 14 -15 825 722 ; C 86 ; WX 759 ; N V ; B -19 -10 778 722 ; C 87 ; WX 981 ; N W ; B 7 -10 974 722 ; C 88 ; WX 722 ; N X ; B -12 0 734 722 ; C 89 ; WX 722 ; N Y ; B -12 0 734 722 ; C 90 ; WX 667 ; N Z ; B 28 0 639 722 ; C 91 ; WX 389 ; N bracketleft ; B 84 -109 339 737 ; C 92 ; WX 606 ; N backslash ; B 122 -15 484 737 ; C 93 ; WX 389 ; N bracketright ; B 50 -109 305 737 ; C 94 ; WX 606 ; N asciicircum ; B 66 325 540 690 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 241 ; N quoteleft ; B 22 378 220 737 ; C 97 ; WX 611 ; N a ; B 40 -15 601 485 ; C 98 ; WX 648 ; N b ; B 4 -15 616 737 ; C 99 ; WX 556 ; N c ; B 32 -15 524 485 ; C 100 ; WX 667 ; N d ; B 32 -15 644 737 ; C 101 ; WX 574 ; N e ; B 32 -15 542 485 ; C 102 ; WX 389 ; N f ; B 11 0 461 737 ; L i fi ; L l fl ; C 103 ; WX 611 ; N g ; B 30 -205 623 535 ; C 104 ; WX 685 ; N h ; B 17 0 662 737 ; C 105 ; WX 370 ; N i ; B 26 0 338 737 ; C 106 ; WX 352 ; N j ; B -86 -205 271 737 ; C 107 ; WX 667 ; N k ; B 17 0 662 737 ; C 108 ; WX 352 ; N l ; B 17 0 329 737 ; C 109 ; WX 963 ; N m ; B 17 0 940 485 ; C 110 ; WX 685 ; N n ; B 17 0 662 485 ; C 111 ; WX 611 ; N o ; B 32 -15 579 485 ; C 112 ; WX 667 ; N p ; B 17 -205 629 485 ; C 113 ; WX 648 ; N q ; B 32 -205 638 485 ; C 114 ; WX 519 ; N r ; B 17 0 516 485 ; C 115 ; WX 500 ; N s ; B 48 -15 476 485 ; C 116 ; WX 426 ; N t ; B 21 -15 405 675 ; C 117 ; WX 685 ; N u ; B 17 -15 668 475 ; C 118 ; WX 611 ; N v ; B 12 -10 599 475 ; C 119 ; WX 889 ; N w ; B 16 -10 873 475 ; C 120 ; WX 611 ; N x ; B 12 0 599 475 ; C 121 ; WX 611 ; N y ; B 12 -205 599 475 ; C 122 ; WX 537 ; N z ; B 38 0 499 475 ; C 123 ; WX 389 ; N braceleft ; B 36 -109 313 737 ; C 124 ; WX 606 ; N bar ; B 249 -250 357 750 ; C 125 ; WX 389 ; N braceright ; B 76 -109 353 737 ; C 126 ; WX 606 ; N asciitilde ; B 72 160 534 346 ; C 160 ; WX 287 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 296 ; N exclamdown ; B 53 -205 243 547 ; C 162 ; WX 574 ; N cent ; B 32 -102 528 572 ; C 163 ; WX 574 ; N sterling ; B 16 -15 558 705 ; C 164 ; WX 167 ; N fraction ; B -165 -15 332 705 ; C 165 ; WX 574 ; N yen ; B -10 0 584 690 ; C 166 ; WX 574 ; N florin ; B 14 -205 548 737 ; C 167 ; WX 500 ; N section ; B 62 -86 438 737 ; C 168 ; WX 574 ; N currency ; B 27 84 547 605 ; C 169 ; WX 241 ; N quotesingle ; B 53 378 189 737 ; C 170 ; WX 481 ; N quotedblleft ; B 22 378 459 737 ; C 171 ; WX 500 ; N guillemotleft ; B 46 79 454 397 ; C 172 ; WX 333 ; N guilsinglleft ; B 62 79 271 397 ; C 173 ; WX 333 ; N guilsinglright ; B 62 79 271 397 ; C 174 ; WX 685 ; N fi ; B 11 0 666 737 ; C 175 ; WX 685 ; N fl ; B 11 0 666 737 ; C 177 ; WX 500 ; N endash ; B 0 184 500 292 ; C 178 ; WX 500 ; N dagger ; B 39 -101 461 737 ; C 179 ; WX 500 ; N daggerdbl ; B 39 -89 461 737 ; C 180 ; WX 278 ; N periodcentered ; B 53 200 225 372 ; C 182 ; WX 747 ; N paragraph ; B 96 -71 631 722 ; C 183 ; WX 606 ; N bullet ; B 122 180 484 542 ; C 184 ; WX 241 ; N quotesinglbase ; B 22 -184 220 175 ; C 185 ; WX 481 ; N quotedblbase ; B 22 -184 459 175 ; C 186 ; WX 481 ; N quotedblright ; B 22 378 459 737 ; C 187 ; WX 500 ; N guillemotright ; B 46 79 454 397 ; C 188 ; WX 1000 ; N ellipsis ; B 72 -15 928 175 ; C 189 ; WX 1000 ; N perthousand ; B 7 -15 993 705 ; C 191 ; WX 500 ; N questiondown ; B 23 -205 477 547 ; C 193 ; WX 333 ; N grave ; B 2 547 249 737 ; C 194 ; WX 333 ; N acute ; B 84 547 331 737 ; C 195 ; WX 333 ; N circumflex ; B -10 547 344 725 ; C 196 ; WX 333 ; N tilde ; B -24 563 357 705 ; C 197 ; WX 333 ; N macron ; B -6 582 339 664 ; C 198 ; WX 333 ; N breve ; B 9 547 324 714 ; C 199 ; WX 333 ; N dotaccent ; B 95 565 267 737 ; C 200 ; WX 333 ; N dieresis ; B -12 565 345 707 ; C 202 ; WX 333 ; N ring ; B 58 545 274 761 ; C 203 ; WX 333 ; N cedilla ; B 17 -224 248 0 ; C 205 ; WX 333 ; N hungarumlaut ; B -16 547 431 737 ; C 206 ; WX 333 ; N ogonek ; B 72 -220 330 4 ; C 207 ; WX 333 ; N caron ; B -10 547 344 725 ; C 208 ; WX 1000 ; N emdash ; B 0 184 1000 292 ; C 225 ; WX 981 ; N AE ; B -29 0 963 722 ; C 227 ; WX 367 ; N ordfeminine ; B 1 407 393 705 ; C 232 ; WX 722 ; N Lslash ; B 19 0 703 722 ; C 233 ; WX 833 ; N Oslash ; B 39 -53 794 775 ; C 234 ; WX 1000 ; N OE ; B 0 0 982 722 ; C 235 ; WX 367 ; N ordmasculine ; B 1 407 366 705 ; C 241 ; WX 870 ; N ae ; B 32 -15 838 485 ; C 245 ; WX 370 ; N dotlessi ; B 26 0 338 475 ; C 248 ; WX 352 ; N lslash ; B 17 0 329 737 ; C 249 ; WX 611 ; N oslash ; B 32 -103 579 573 ; C 250 ; WX 907 ; N oe ; B 32 -15 875 485 ; C 251 ; WX 611 ; N germandbls ; B -2 -15 580 737 ; C -1 ; WX 444 ; N Idieresis ; B 29 0 415 921 ; C -1 ; WX 574 ; N eacute ; B 32 -15 542 737 ; C -1 ; WX 611 ; N abreve ; B 40 -15 601 714 ; C -1 ; WX 685 ; N uhungarumlaut ; B 17 -15 668 737 ; C -1 ; WX 574 ; N ecaron ; B 32 -15 542 725 ; C -1 ; WX 722 ; N Ydieresis ; B -12 0 734 921 ; C -1 ; WX 606 ; N divide ; B 50 -40 556 546 ; C -1 ; WX 722 ; N Yacute ; B -12 0 734 964 ; C -1 ; WX 759 ; N Acircumflex ; B -19 0 778 952 ; C -1 ; WX 611 ; N aacute ; B 40 -15 601 737 ; C -1 ; WX 833 ; N Ucircumflex ; B 14 -15 825 952 ; C -1 ; WX 611 ; N yacute ; B 12 -205 599 737 ; C -1 ; WX 500 ; N scommaaccent ; B 48 -250 476 485 ; C -1 ; WX 574 ; N ecircumflex ; B 32 -15 542 725 ; C -1 ; WX 833 ; N Uring ; B 14 -15 825 988 ; C -1 ; WX 833 ; N Udieresis ; B 14 -15 825 921 ; C -1 ; WX 611 ; N aogonek ; B 40 -231 628 485 ; C -1 ; WX 833 ; N Uacute ; B 14 -15 825 964 ; C -1 ; WX 685 ; N uogonek ; B 17 -220 670 475 ; C -1 ; WX 759 ; N Edieresis ; B 19 0 708 921 ; C -1 ; WX 833 ; N Dcroat ; B 19 0 794 722 ; C -1 ; WX 250 ; N commaaccent ; B 45 -250 187 -50 ; C -1 ; WX 747 ; N copyright ; B -2 -15 750 737 ; C -1 ; WX 759 ; N Emacron ; B 19 0 708 891 ; C -1 ; WX 556 ; N ccaron ; B 32 -15 524 725 ; C -1 ; WX 611 ; N aring ; B 40 -15 601 761 ; C -1 ; WX 833 ; N Ncommaaccent ; B 5 -230 828 722 ; C -1 ; WX 352 ; N lacute ; B 17 0 341 964 ; C -1 ; WX 611 ; N agrave ; B 40 -15 601 737 ; C -1 ; WX 722 ; N Tcommaaccent ; B 16 -250 706 722 ; C -1 ; WX 778 ; N Cacute ; B 39 -15 723 964 ; C -1 ; WX 611 ; N atilde ; B 40 -15 601 705 ; C -1 ; WX 759 ; N Edotaccent ; B 19 0 708 951 ; C -1 ; WX 500 ; N scaron ; B 48 -15 476 725 ; C -1 ; WX 500 ; N scedilla ; B 48 -224 476 485 ; C -1 ; WX 370 ; N iacute ; B 26 0 350 737 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 815 ; N Rcaron ; B 19 -15 815 952 ; C -1 ; WX 833 ; N Gcommaaccent ; B 39 -250 818 737 ; C -1 ; WX 685 ; N ucircumflex ; B 17 -15 668 725 ; C -1 ; WX 611 ; N acircumflex ; B 40 -15 601 725 ; C -1 ; WX 759 ; N Amacron ; B -19 0 778 891 ; C -1 ; WX 519 ; N rcaron ; B 17 0 516 725 ; C -1 ; WX 556 ; N ccedilla ; B 32 -224 524 485 ; C -1 ; WX 667 ; N Zdotaccent ; B 28 0 639 951 ; C -1 ; WX 759 ; N Thorn ; B 24 0 735 722 ; C -1 ; WX 833 ; N Omacron ; B 39 -15 794 891 ; C -1 ; WX 815 ; N Racute ; B 19 -15 815 964 ; C -1 ; WX 667 ; N Sacute ; B 51 -15 634 964 ; C -1 ; WX 747 ; N dcaron ; B 32 -15 748 737 ; C -1 ; WX 833 ; N Umacron ; B 14 -15 825 891 ; C -1 ; WX 685 ; N uring ; B 17 -15 668 761 ; C -1 ; WX 344 ; N threesuperior ; B -3 273 355 705 ; C -1 ; WX 833 ; N Ograve ; B 39 -15 794 964 ; C -1 ; WX 759 ; N Agrave ; B -19 0 778 964 ; C -1 ; WX 759 ; N Abreve ; B -19 0 778 941 ; C -1 ; WX 606 ; N multiply ; B 65 15 541 491 ; C -1 ; WX 685 ; N uacute ; B 17 -15 668 737 ; C -1 ; WX 722 ; N Tcaron ; B 16 0 706 952 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 611 ; N ydieresis ; B 12 -205 599 694 ; C -1 ; WX 833 ; N Nacute ; B 5 -10 828 964 ; C -1 ; WX 370 ; N icircumflex ; B 9 0 363 725 ; C -1 ; WX 759 ; N Ecircumflex ; B 19 0 708 952 ; C -1 ; WX 611 ; N adieresis ; B 40 -15 601 694 ; C -1 ; WX 574 ; N edieresis ; B 32 -15 542 694 ; C -1 ; WX 556 ; N cacute ; B 32 -15 524 737 ; C -1 ; WX 685 ; N nacute ; B 17 0 662 737 ; C -1 ; WX 685 ; N umacron ; B 17 -15 668 664 ; C -1 ; WX 833 ; N Ncaron ; B 5 -10 828 952 ; C -1 ; WX 444 ; N Iacute ; B 29 0 415 964 ; C -1 ; WX 606 ; N plusminus ; B 50 0 556 506 ; C -1 ; WX 606 ; N brokenbar ; B 249 -175 357 675 ; C -1 ; WX 747 ; N registered ; B -2 -15 750 737 ; C -1 ; WX 833 ; N Gbreve ; B 39 -15 818 941 ; C -1 ; WX 444 ; N Idotaccent ; B 29 0 415 951 ; C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 759 ; N Egrave ; B 19 0 708 964 ; C -1 ; WX 519 ; N racute ; B 17 0 516 737 ; C -1 ; WX 611 ; N omacron ; B 32 -15 579 664 ; C -1 ; WX 667 ; N Zacute ; B 28 0 639 964 ; C -1 ; WX 667 ; N Zcaron ; B 28 0 639 952 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 833 ; N Eth ; B 19 0 794 722 ; C -1 ; WX 778 ; N Ccedilla ; B 39 -224 723 737 ; C -1 ; WX 352 ; N lcommaaccent ; B 17 -250 329 737 ; C -1 ; WX 456 ; N tcaron ; B 21 -15 450 795 ; C -1 ; WX 574 ; N eogonek ; B 32 -220 542 485 ; C -1 ; WX 833 ; N Uogonek ; B 14 -220 825 722 ; C -1 ; WX 759 ; N Aacute ; B -19 0 778 964 ; C -1 ; WX 759 ; N Adieresis ; B -19 0 778 921 ; C -1 ; WX 574 ; N egrave ; B 32 -15 542 737 ; C -1 ; WX 537 ; N zacute ; B 38 0 499 737 ; C -1 ; WX 370 ; N iogonek ; B 26 -224 353 737 ; C -1 ; WX 833 ; N Oacute ; B 39 -15 794 964 ; C -1 ; WX 611 ; N oacute ; B 32 -15 579 737 ; C -1 ; WX 611 ; N amacron ; B 40 -15 601 664 ; C -1 ; WX 500 ; N sacute ; B 48 -15 476 737 ; C -1 ; WX 370 ; N idieresis ; B 7 0 364 694 ; C -1 ; WX 833 ; N Ocircumflex ; B 39 -15 794 952 ; C -1 ; WX 833 ; N Ugrave ; B 14 -15 825 964 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 667 ; N thorn ; B 17 -205 629 737 ; C -1 ; WX 344 ; N twosuperior ; B -3 282 350 705 ; C -1 ; WX 833 ; N Odieresis ; B 39 -15 794 921 ; C -1 ; WX 685 ; N mu ; B 17 -205 668 475 ; C -1 ; WX 370 ; N igrave ; B 21 0 338 737 ; C -1 ; WX 611 ; N ohungarumlaut ; B 32 -15 579 737 ; C -1 ; WX 759 ; N Eogonek ; B 19 -224 712 722 ; C -1 ; WX 667 ; N dcroat ; B 32 -15 644 737 ; C -1 ; WX 861 ; N threequarters ; B 15 -15 838 705 ; C -1 ; WX 667 ; N Scedilla ; B 51 -224 634 737 ; C -1 ; WX 448 ; N lcaron ; B 17 0 439 737 ; C -1 ; WX 815 ; N Kcommaaccent ; B 19 -250 822 722 ; C -1 ; WX 722 ; N Lacute ; B 19 0 703 964 ; C -1 ; WX 1000 ; N trademark ; B 6 317 982 722 ; C -1 ; WX 574 ; N edotaccent ; B 32 -15 542 724 ; C -1 ; WX 444 ; N Igrave ; B 29 0 415 964 ; C -1 ; WX 444 ; N Imacron ; B 29 0 415 891 ; C -1 ; WX 722 ; N Lcaron ; B 19 0 703 737 ; C -1 ; WX 861 ; N onehalf ; B 31 -15 838 705 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 611 ; N ocircumflex ; B 32 -15 579 725 ; C -1 ; WX 685 ; N ntilde ; B 17 0 662 705 ; C -1 ; WX 833 ; N Uhungarumlaut ; B 14 -15 825 964 ; C -1 ; WX 759 ; N Eacute ; B 19 0 708 964 ; C -1 ; WX 574 ; N emacron ; B 32 -15 542 664 ; C -1 ; WX 611 ; N gbreve ; B 30 -205 623 734 ; C -1 ; WX 861 ; N onequarter ; B 31 -15 838 705 ; C -1 ; WX 667 ; N Scaron ; B 51 -15 634 952 ; C -1 ; WX 667 ; N Scommaaccent ; B 51 -250 634 737 ; C -1 ; WX 833 ; N Ohungarumlaut ; B 39 -15 794 964 ; C -1 ; WX 400 ; N degree ; B 57 419 343 705 ; C -1 ; WX 611 ; N ograve ; B 32 -15 579 737 ; C -1 ; WX 778 ; N Ccaron ; B 39 -15 723 952 ; C -1 ; WX 685 ; N ugrave ; B 17 -15 668 737 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 833 ; N Dcaron ; B 19 0 794 952 ; C -1 ; WX 519 ; N rcommaaccent ; B 17 -250 516 485 ; C -1 ; WX 833 ; N Ntilde ; B 5 -10 828 932 ; C -1 ; WX 611 ; N otilde ; B 32 -15 579 705 ; C -1 ; WX 815 ; N Rcommaaccent ; B 19 -230 815 722 ; C -1 ; WX 722 ; N Lcommaaccent ; B 19 -250 703 722 ; C -1 ; WX 759 ; N Atilde ; B -19 0 778 932 ; C -1 ; WX 759 ; N Aogonek ; B -19 -224 793 737 ; C -1 ; WX 759 ; N Aring ; B -19 0 778 988 ; C -1 ; WX 833 ; N Otilde ; B 39 -15 794 932 ; C -1 ; WX 537 ; N zdotaccent ; B 38 0 499 724 ; C -1 ; WX 759 ; N Ecaron ; B 19 0 708 952 ; C -1 ; WX 444 ; N Iogonek ; B 29 -220 415 722 ; C -1 ; WX 667 ; N kcommaaccent ; B 17 -250 662 737 ; C -1 ; WX 606 ; N minus ; B 50 199 556 307 ; C -1 ; WX 444 ; N Icircumflex ; B 29 0 415 952 ; C -1 ; WX 685 ; N ncaron ; B 17 0 662 725 ; C -1 ; WX 426 ; N tcommaaccent ; B 21 -250 405 675 ; C -1 ; WX 606 ; N logicalnot ; B 50 103 556 403 ; C -1 ; WX 611 ; N odieresis ; B 32 -15 579 694 ; C -1 ; WX 685 ; N udieresis ; B 17 -15 668 694 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 611 ; N gcommaaccent ; B 30 -205 623 842 ; C -1 ; WX 611 ; N eth ; B 32 -15 579 737 ; C -1 ; WX 537 ; N zcaron ; B 38 0 499 725 ; C -1 ; WX 685 ; N ncommaaccent ; B 17 -250 662 485 ; C -1 ; WX 344 ; N onesuperior ; B 31 282 309 705 ; C -1 ; WX 370 ; N imacron ; B 26 0 338 664 ; C -1 ; WX 574 ; N Euro ; B 3 -15 563 717 ; C -1 ; WX 778 ; N Ccircumflex ; B 40 -15 723 1000 ; C -1 ; WX 556 ; N ccircumflex ; B 31 -15 527 751 ; C -1 ; WX 778 ; N Cdotaccent ; B 40 -15 723 963 ; C -1 ; WX 556 ; N cdotaccent ; B 31 -15 527 714 ; C -1 ; WX 759 ; N Ebreve ; B 16 0 707 989 ; C -1 ; WX 574 ; N ebreve ; B 32 -15 540 740 ; C -1 ; WX 833 ; N Gcircumflex ; B 39 -15 817 1000 ; C -1 ; WX 611 ; N gcircumflex ; B 30 -202 623 816 ; C -1 ; WX 833 ; N Gdotaccent ; B 39 -15 817 963 ; C -1 ; WX 611 ; N gdotaccent ; B 30 -202 623 779 ; C -1 ; WX 870 ; N Hcircumflex ; B 20 0 850 1000 ; C -1 ; WX 685 ; N hcircumflex ; B 16 0 666 975 ; C -1 ; WX 870 ; N Hbar ; B 20 0 850 722 ; C -1 ; WX 685 ; N hbar ; B 13 0 666 737 ; C -1 ; WX 444 ; N Itilde ; B 28 0 417 961 ; C -1 ; WX 370 ; N itilde ; B -6 0 375 712 ; C -1 ; WX 444 ; N Ibreve ; B 28 0 417 989 ; C -1 ; WX 370 ; N ibreve ; B 27 0 342 740 ; C -1 ; WX 1113 ; N IJ ; B 28 -15 1078 722 ; C -1 ; WX 724 ; N ij ; B 28 -202 602 737 ; C -1 ; WX 648 ; N Jcircumflex ; B 4 -15 639 1000 ; C -1 ; WX 352 ; N jcircumflex ; B -82 -202 343 722 ; C -1 ; WX 632 ; N kgreenlandic ; B 20 -14 627 492 ; C -1 ; WX 722 ; N Ldot ; B 19 0 701 722 ; C -1 ; WX 540 ; N ldot ; B 16 0 500 737 ; C -1 ; WX 685 ; N napostrophe ; B 20 0 668 847 ; C -1 ; WX 833 ; N Eng ; B 16 -196 833 722 ; C -1 ; WX 625 ; N eng ; B 20 -138 589 488 ; C -1 ; WX 833 ; N Obreve ; B 39 -15 794 989 ; C -1 ; WX 611 ; N obreve ; B 31 -15 579 740 ; C -1 ; WX 667 ; N Scircumflex ; B 51 -15 633 1000 ; C -1 ; WX 500 ; N scircumflex ; B 38 -15 466 751 ; C -1 ; WX 722 ; N Tbar ; B 15 0 707 722 ; C -1 ; WX 426 ; N tbar ; B 19 -15 405 671 ; C -1 ; WX 722 ; N Tcedilla ; B 16 -250 706 722 ; C -1 ; WX 426 ; N tcedilla ; B 21 -250 405 675 ; C -1 ; WX 833 ; N Utilde ; B 15 -15 824 961 ; C -1 ; WX 685 ; N utilde ; B 13 -15 667 712 ; C -1 ; WX 833 ; N Ubreve ; B 15 -15 824 989 ; C -1 ; WX 685 ; N ubreve ; B 13 -15 667 740 ; C -1 ; WX 981 ; N Wcircumflex ; B 6 -15 973 1000 ; C -1 ; WX 889 ; N wcircumflex ; B 19 -14 876 751 ; C -1 ; WX 722 ; N Ycircumflex ; B -12 0 735 1000 ; C -1 ; WX 611 ; N ycircumflex ; B 10 -206 598 751 ; C -1 ; WX 389 ; N longs ; B 14 0 464 733 ; C -1 ; WX 729 ; N infinity ; B 22 51 711 521 ; EndCharMetrics StartKernData StartKernPairs 1205 KPX A T -55 KPX A Tcaron -55 KPX A Tcommaaccent -55 KPX A U -18 KPX A Uacute -18 KPX A Ucircumflex -18 KPX A Udieresis -18 KPX A Ugrave -18 KPX A Uhungarumlaut -18 KPX A Umacron -18 KPX A Uogonek -18 KPX A Uring -18 KPX A V -74 KPX A W -74 KPX A Y -91 KPX A Yacute -91 KPX A Ydieresis -91 KPX A quotedblright -74 KPX A quoteright -74 KPX A v -18 KPX A w -18 KPX A y -18 KPX A yacute -18 KPX A ydieresis -18 KPX Aacute T -55 KPX Aacute Tcaron -55 KPX Aacute Tcommaaccent -55 KPX Aacute U -18 KPX Aacute Uacute -18 KPX Aacute Ucircumflex -18 KPX Aacute Udieresis -18 KPX Aacute Ugrave -18 KPX Aacute Uhungarumlaut -18 KPX Aacute Umacron -18 KPX Aacute Uogonek -18 KPX Aacute Uring -18 KPX Aacute V -74 KPX Aacute W -74 KPX Aacute Y -91 KPX Aacute Yacute -91 KPX Aacute Ydieresis -91 KPX Aacute quotedblright -74 KPX Aacute quoteright -74 KPX Aacute v -18 KPX Aacute w -18 KPX Aacute y -18 KPX Aacute yacute -18 KPX Aacute ydieresis -18 KPX Abreve T -55 KPX Abreve Tcaron -55 KPX Abreve Tcommaaccent -55 KPX Abreve U -18 KPX Abreve Uacute -18 KPX Abreve Ucircumflex -18 KPX Abreve Udieresis -18 KPX Abreve Ugrave -18 KPX Abreve Uhungarumlaut -18 KPX Abreve Umacron -18 KPX Abreve Uogonek -18 KPX Abreve Uring -18 KPX Abreve V -74 KPX Abreve W -74 KPX Abreve Y -91 KPX Abreve Yacute -91 KPX Abreve Ydieresis -91 KPX Abreve quotedblright -74 KPX Abreve quoteright -74 KPX Abreve v -18 KPX Abreve w -18 KPX Abreve y -18 KPX Abreve yacute -18 KPX Abreve ydieresis -18 KPX Acircumflex T -55 KPX Acircumflex Tcaron -55 KPX Acircumflex Tcommaaccent -55 KPX Acircumflex U -18 KPX Acircumflex Uacute -18 KPX Acircumflex Ucircumflex -18 KPX Acircumflex Udieresis -18 KPX Acircumflex Ugrave -18 KPX Acircumflex Uhungarumlaut -18 KPX Acircumflex Umacron -18 KPX Acircumflex Uogonek -18 KPX Acircumflex Uring -18 KPX Acircumflex V -74 KPX Acircumflex W -74 KPX Acircumflex Y -91 KPX Acircumflex Yacute -91 KPX Acircumflex Ydieresis -91 KPX Acircumflex quotedblright -74 KPX Acircumflex quoteright -74 KPX Acircumflex v -18 KPX Acircumflex w -18 KPX Acircumflex y -18 KPX Acircumflex yacute -18 KPX Acircumflex ydieresis -18 KPX Adieresis T -55 KPX Adieresis Tcaron -55 KPX Adieresis Tcommaaccent -55 KPX Adieresis U -18 KPX Adieresis Uacute -18 KPX Adieresis Ucircumflex -18 KPX Adieresis Udieresis -18 KPX Adieresis Ugrave -18 KPX Adieresis Uhungarumlaut -18 KPX Adieresis Umacron -18 KPX Adieresis Uogonek -18 KPX Adieresis Uring -18 KPX Adieresis V -74 KPX Adieresis W -74 KPX Adieresis Y -91 KPX Adieresis Yacute -91 KPX Adieresis Ydieresis -91 KPX Adieresis quotedblright -74 KPX Adieresis quoteright -74 KPX Adieresis v -18 KPX Adieresis w -18 KPX Adieresis y -18 KPX Adieresis yacute -18 KPX Adieresis ydieresis -18 KPX Agrave T -55 KPX Agrave Tcaron -55 KPX Agrave Tcommaaccent -55 KPX Agrave U -18 KPX Agrave Uacute -18 KPX Agrave Ucircumflex -18 KPX Agrave Udieresis -18 KPX Agrave Ugrave -18 KPX Agrave Uhungarumlaut -18 KPX Agrave Umacron -18 KPX Agrave Uogonek -18 KPX Agrave Uring -18 KPX Agrave V -74 KPX Agrave W -74 KPX Agrave Y -91 KPX Agrave Yacute -91 KPX Agrave Ydieresis -91 KPX Agrave quotedblright -74 KPX Agrave quoteright -74 KPX Agrave v -18 KPX Agrave w -18 KPX Agrave y -18 KPX Agrave yacute -18 KPX Agrave ydieresis -18 KPX Amacron T -55 KPX Amacron Tcaron -55 KPX Amacron Tcommaaccent -55 KPX Amacron U -18 KPX Amacron Uacute -18 KPX Amacron Ucircumflex -18 KPX Amacron Udieresis -18 KPX Amacron Ugrave -18 KPX Amacron Uhungarumlaut -18 KPX Amacron Umacron -18 KPX Amacron Uogonek -18 KPX Amacron Uring -18 KPX Amacron V -74 KPX Amacron W -74 KPX Amacron Y -91 KPX Amacron Yacute -91 KPX Amacron Ydieresis -91 KPX Amacron quotedblright -74 KPX Amacron quoteright -74 KPX Amacron v -18 KPX Amacron w -18 KPX Amacron y -18 KPX Amacron yacute -18 KPX Amacron ydieresis -18 KPX Aogonek T -55 KPX Aogonek Tcaron -55 KPX Aogonek Tcommaaccent -55 KPX Aogonek U -18 KPX Aogonek Uacute -18 KPX Aogonek Ucircumflex -18 KPX Aogonek Udieresis -18 KPX Aogonek Ugrave -18 KPX Aogonek Uhungarumlaut -18 KPX Aogonek Umacron -18 KPX Aogonek Uogonek -18 KPX Aogonek Uring -18 KPX Aogonek V -74 KPX Aogonek W -74 KPX Aogonek Y -91 KPX Aogonek Yacute -91 KPX Aogonek Ydieresis -91 KPX Aogonek quotedblright -74 KPX Aogonek quoteright -74 KPX Aogonek v -18 KPX Aogonek w -18 KPX Aring T -55 KPX Aring Tcaron -55 KPX Aring Tcommaaccent -55 KPX Aring U -18 KPX Aring Uacute -18 KPX Aring Ucircumflex -18 KPX Aring Udieresis -18 KPX Aring Ugrave -18 KPX Aring Uhungarumlaut -18 KPX Aring Umacron -18 KPX Aring Uogonek -18 KPX Aring Uring -18 KPX Aring V -74 KPX Aring W -74 KPX Aring Y -91 KPX Aring Yacute -91 KPX Aring Ydieresis -91 KPX Aring quotedblright -74 KPX Aring quoteright -74 KPX Aring v -18 KPX Aring w -18 KPX Aring y -18 KPX Aring yacute -18 KPX Aring ydieresis -18 KPX Atilde T -55 KPX Atilde Tcaron -55 KPX Atilde Tcommaaccent -55 KPX Atilde U -18 KPX Atilde Uacute -18 KPX Atilde Ucircumflex -18 KPX Atilde Udieresis -18 KPX Atilde Ugrave -18 KPX Atilde Uhungarumlaut -18 KPX Atilde Umacron -18 KPX Atilde Uogonek -18 KPX Atilde Uring -18 KPX Atilde V -74 KPX Atilde W -74 KPX Atilde Y -91 KPX Atilde Yacute -91 KPX Atilde Ydieresis -91 KPX Atilde quotedblright -74 KPX Atilde quoteright -74 KPX Atilde v -18 KPX Atilde w -18 KPX Atilde y -18 KPX Atilde yacute -18 KPX Atilde ydieresis -18 KPX C comma -18 KPX C period -18 KPX Cacute comma -18 KPX Cacute period -18 KPX Ccaron comma -18 KPX Ccaron period -18 KPX Ccedilla comma -18 KPX Ccedilla period -18 KPX D comma -25 KPX D period -25 KPX Dcaron comma -25 KPX Dcaron period -25 KPX Dcroat comma -25 KPX Dcroat period -25 KPX F a -74 KPX F aacute -74 KPX F abreve -74 KPX F acircumflex -74 KPX F adieresis -74 KPX F agrave -74 KPX F amacron -74 KPX F aogonek -74 KPX F aring -74 KPX F atilde -74 KPX F comma -125 KPX F e -55 KPX F eacute -55 KPX F ecaron -55 KPX F ecircumflex -55 KPX F edieresis -55 KPX F edotaccent -55 KPX F egrave -55 KPX F emacron -55 KPX F eogonek -55 KPX F i -18 KPX F iacute -18 KPX F icircumflex -18 KPX F idieresis -18 KPX F igrave -18 KPX F imacron -18 KPX F iogonek -18 KPX F o -55 KPX F oacute -55 KPX F ocircumflex -55 KPX F odieresis -55 KPX F ograve -55 KPX F ohungarumlaut -55 KPX F omacron -55 KPX F oslash -55 KPX F otilde -55 KPX F period -125 KPX F r -18 KPX F racute -18 KPX F rcaron -18 KPX F rcommaaccent -18 KPX J A -18 KPX J Aacute -18 KPX J Abreve -18 KPX J Acircumflex -18 KPX J Adieresis -18 KPX J Agrave -18 KPX J Amacron -18 KPX J Aogonek -18 KPX J Aring -18 KPX J Atilde -18 KPX J a -18 KPX J aacute -18 KPX J abreve -18 KPX J acircumflex -18 KPX J adieresis -18 KPX J agrave -18 KPX J amacron -18 KPX J aogonek -18 KPX J aring -18 KPX J atilde -18 KPX J comma -55 KPX J e -18 KPX J eacute -18 KPX J ecaron -18 KPX J ecircumflex -18 KPX J edieresis -18 KPX J edotaccent -18 KPX J egrave -18 KPX J emacron -18 KPX J eogonek -18 KPX J o -18 KPX J oacute -18 KPX J ocircumflex -18 KPX J odieresis -18 KPX J ograve -18 KPX J ohungarumlaut -18 KPX J omacron -18 KPX J oslash -18 KPX J otilde -18 KPX J period -55 KPX J u -18 KPX J uacute -18 KPX J ucircumflex -18 KPX J udieresis -18 KPX J ugrave -18 KPX J uhungarumlaut -18 KPX J umacron -18 KPX J uogonek -18 KPX J uring -18 KPX K u -18 KPX K uacute -18 KPX K ucircumflex -18 KPX K udieresis -18 KPX K ugrave -18 KPX K uhungarumlaut -18 KPX K umacron -18 KPX K uogonek -18 KPX K uring -18 KPX K y -25 KPX K yacute -25 KPX K ydieresis -25 KPX Kcommaaccent u -18 KPX Kcommaaccent uacute -18 KPX Kcommaaccent ucircumflex -18 KPX Kcommaaccent udieresis -18 KPX Kcommaaccent ugrave -18 KPX Kcommaaccent uhungarumlaut -18 KPX Kcommaaccent umacron -18 KPX Kcommaaccent uogonek -18 KPX Kcommaaccent uring -18 KPX Kcommaaccent y -25 KPX Kcommaaccent yacute -25 KPX Kcommaaccent ydieresis -25 KPX L T -100 KPX L Tcaron -100 KPX L Tcommaaccent -100 KPX L V -100 KPX L W -74 KPX L Y -74 KPX L Yacute -74 KPX L Ydieresis -74 KPX L quotedblright -100 KPX L quoteright -100 KPX L y -25 KPX L yacute -25 KPX L ydieresis -25 KPX Lacute T -100 KPX Lacute Tcaron -100 KPX Lacute Tcommaaccent -100 KPX Lacute V -100 KPX Lacute W -74 KPX Lacute Y -74 KPX Lacute Yacute -74 KPX Lacute Ydieresis -74 KPX Lacute quotedblright -100 KPX Lacute quoteright -100 KPX Lacute y -25 KPX Lacute yacute -25 KPX Lacute ydieresis -25 KPX Lcommaaccent T -100 KPX Lcommaaccent Tcaron -100 KPX Lcommaaccent Tcommaaccent -100 KPX Lcommaaccent V -100 KPX Lcommaaccent W -74 KPX Lcommaaccent Y -74 KPX Lcommaaccent Yacute -74 KPX Lcommaaccent Ydieresis -74 KPX Lcommaaccent quotedblright -100 KPX Lcommaaccent quoteright -100 KPX Lcommaaccent y -25 KPX Lcommaaccent yacute -25 KPX Lcommaaccent ydieresis -25 KPX Lslash T -100 KPX Lslash Tcaron -100 KPX Lslash Tcommaaccent -100 KPX Lslash V -100 KPX Lslash W -74 KPX Lslash Y -74 KPX Lslash Yacute -74 KPX Lslash Ydieresis -74 KPX Lslash quotedblright -100 KPX Lslash quoteright -100 KPX Lslash y -25 KPX Lslash yacute -25 KPX Lslash ydieresis -25 KPX N comma -18 KPX N period -18 KPX Nacute comma -18 KPX Nacute period -18 KPX Ncaron comma -18 KPX Ncaron period -18 KPX Ncommaaccent comma -18 KPX Ncommaaccent period -18 KPX Ntilde comma -18 KPX Ntilde period -18 KPX O T 10 KPX O Tcaron 10 KPX O Tcommaaccent 10 KPX O comma -25 KPX O period -25 KPX Oacute T 10 KPX Oacute Tcaron 10 KPX Oacute Tcommaaccent 10 KPX Oacute comma -25 KPX Oacute period -25 KPX Ocircumflex T 10 KPX Ocircumflex Tcaron 10 KPX Ocircumflex Tcommaaccent 10 KPX Ocircumflex comma -25 KPX Ocircumflex period -25 KPX Odieresis T 10 KPX Odieresis Tcaron 10 KPX Odieresis Tcommaaccent 10 KPX Odieresis comma -25 KPX Odieresis period -25 KPX Ograve T 10 KPX Ograve Tcaron 10 KPX Ograve Tcommaaccent 10 KPX Ograve comma -25 KPX Ograve period -25 KPX Ohungarumlaut T 10 KPX Ohungarumlaut Tcaron 10 KPX Ohungarumlaut Tcommaaccent 10 KPX Ohungarumlaut comma -25 KPX Ohungarumlaut period -25 KPX Omacron T 10 KPX Omacron Tcaron 10 KPX Omacron Tcommaaccent 10 KPX Omacron comma -25 KPX Omacron period -25 KPX Oslash T 10 KPX Oslash Tcaron 10 KPX Oslash Tcommaaccent 10 KPX Oslash comma -25 KPX Oslash period -25 KPX Otilde T 10 KPX Otilde Tcaron 10 KPX Otilde Tcommaaccent 10 KPX Otilde comma -25 KPX Otilde period -25 KPX P A -74 KPX P Aacute -74 KPX P Abreve -74 KPX P Acircumflex -74 KPX P Adieresis -74 KPX P Agrave -74 KPX P Amacron -74 KPX P Aogonek -74 KPX P Aring -74 KPX P Atilde -74 KPX P a -55 KPX P aacute -55 KPX P abreve -55 KPX P acircumflex -55 KPX P adieresis -55 KPX P agrave -55 KPX P amacron -55 KPX P aogonek -55 KPX P aring -55 KPX P atilde -55 KPX P comma -150 KPX P e -55 KPX P eacute -55 KPX P ecaron -55 KPX P ecircumflex -55 KPX P edieresis -55 KPX P edotaccent -55 KPX P egrave -55 KPX P emacron -55 KPX P eogonek -55 KPX P o -55 KPX P oacute -55 KPX P ocircumflex -55 KPX P odieresis -55 KPX P ograve -55 KPX P ohungarumlaut -55 KPX P omacron -55 KPX P oslash -55 KPX P otilde -55 KPX P period -150 KPX S comma -18 KPX S period -18 KPX Sacute comma -18 KPX Sacute period -18 KPX Scaron comma -18 KPX Scaron period -18 KPX Scedilla comma -18 KPX Scedilla period -18 KPX Scommaaccent comma -18 KPX Scommaaccent period -18 KPX T A -55 KPX T Aacute -55 KPX T Abreve -55 KPX T Acircumflex -55 KPX T Adieresis -55 KPX T Agrave -55 KPX T Amacron -55 KPX T Aogonek -55 KPX T Aring -55 KPX T Atilde -55 KPX T O 10 KPX T Oacute 10 KPX T Ocircumflex 10 KPX T Odieresis 10 KPX T Ograve 10 KPX T Ohungarumlaut 10 KPX T Omacron 10 KPX T Oslash 10 KPX T Otilde 10 KPX T a -74 KPX T aacute -74 KPX T abreve -74 KPX T acircumflex -74 KPX T adieresis -74 KPX T agrave -74 KPX T amacron -74 KPX T aogonek -74 KPX T aring -74 KPX T atilde -74 KPX T comma -100 KPX T e -74 KPX T eacute -74 KPX T ecaron -74 KPX T ecircumflex -74 KPX T edieresis -74 KPX T edotaccent -74 KPX T egrave -74 KPX T emacron -74 KPX T eogonek -74 KPX T hyphen -125 KPX T i -18 KPX T iacute -18 KPX T icircumflex -18 KPX T idieresis -18 KPX T igrave -18 KPX T imacron -18 KPX T iogonek -18 KPX T o -74 KPX T oacute -74 KPX T ocircumflex -74 KPX T odieresis -74 KPX T ograve -74 KPX T ohungarumlaut -74 KPX T omacron -74 KPX T oslash -74 KPX T otilde -74 KPX T period -100 KPX T r -18 KPX T racute -18 KPX T rcaron -18 KPX T rcommaaccent -18 KPX T u -18 KPX T uacute -18 KPX T ucircumflex -18 KPX T udieresis -18 KPX T ugrave -18 KPX T uhungarumlaut -18 KPX T umacron -18 KPX T uogonek -18 KPX T uring -18 KPX Tcaron A -55 KPX Tcaron Aacute -55 KPX Tcaron Abreve -55 KPX Tcaron Acircumflex -55 KPX Tcaron Adieresis -55 KPX Tcaron Agrave -55 KPX Tcaron Amacron -55 KPX Tcaron Aogonek -55 KPX Tcaron Aring -55 KPX Tcaron Atilde -55 KPX Tcaron O 10 KPX Tcaron Oacute 10 KPX Tcaron Ocircumflex 10 KPX Tcaron Odieresis 10 KPX Tcaron Ograve 10 KPX Tcaron Ohungarumlaut 10 KPX Tcaron Omacron 10 KPX Tcaron Oslash 10 KPX Tcaron Otilde 10 KPX Tcaron a -74 KPX Tcaron aacute -74 KPX Tcaron abreve -74 KPX Tcaron acircumflex -74 KPX Tcaron adieresis -74 KPX Tcaron agrave -74 KPX Tcaron amacron -74 KPX Tcaron aogonek -74 KPX Tcaron aring -74 KPX Tcaron atilde -74 KPX Tcaron comma -100 KPX Tcaron e -74 KPX Tcaron eacute -74 KPX Tcaron ecaron -74 KPX Tcaron ecircumflex -74 KPX Tcaron edieresis -74 KPX Tcaron edotaccent -74 KPX Tcaron egrave -74 KPX Tcaron emacron -74 KPX Tcaron eogonek -74 KPX Tcaron hyphen -125 KPX Tcaron i -18 KPX Tcaron iacute -18 KPX Tcaron icircumflex -18 KPX Tcaron idieresis -18 KPX Tcaron igrave -18 KPX Tcaron imacron -18 KPX Tcaron iogonek -18 KPX Tcaron o -74 KPX Tcaron oacute -74 KPX Tcaron ocircumflex -74 KPX Tcaron odieresis -74 KPX Tcaron ograve -74 KPX Tcaron ohungarumlaut -74 KPX Tcaron omacron -74 KPX Tcaron oslash -74 KPX Tcaron otilde -74 KPX Tcaron period -100 KPX Tcaron r -18 KPX Tcaron racute -18 KPX Tcaron rcaron -18 KPX Tcaron rcommaaccent -18 KPX Tcaron u -18 KPX Tcaron uacute -18 KPX Tcaron ucircumflex -18 KPX Tcaron udieresis -18 KPX Tcaron ugrave -18 KPX Tcaron uhungarumlaut -18 KPX Tcaron umacron -18 KPX Tcaron uogonek -18 KPX Tcaron uring -18 KPX Tcommaaccent A -55 KPX Tcommaaccent Aacute -55 KPX Tcommaaccent Abreve -55 KPX Tcommaaccent Acircumflex -55 KPX Tcommaaccent Adieresis -55 KPX Tcommaaccent Agrave -55 KPX Tcommaaccent Amacron -55 KPX Tcommaaccent Aogonek -55 KPX Tcommaaccent Aring -55 KPX Tcommaaccent Atilde -55 KPX Tcommaaccent O 10 KPX Tcommaaccent Oacute 10 KPX Tcommaaccent Ocircumflex 10 KPX Tcommaaccent Odieresis 10 KPX Tcommaaccent Ograve 10 KPX Tcommaaccent Ohungarumlaut 10 KPX Tcommaaccent Omacron 10 KPX Tcommaaccent Oslash 10 KPX Tcommaaccent Otilde 10 KPX Tcommaaccent a -74 KPX Tcommaaccent aacute -74 KPX Tcommaaccent abreve -74 KPX Tcommaaccent acircumflex -74 KPX Tcommaaccent adieresis -74 KPX Tcommaaccent agrave -74 KPX Tcommaaccent amacron -74 KPX Tcommaaccent aogonek -74 KPX Tcommaaccent aring -74 KPX Tcommaaccent atilde -74 KPX Tcommaaccent comma -100 KPX Tcommaaccent e -74 KPX Tcommaaccent eacute -74 KPX Tcommaaccent ecaron -74 KPX Tcommaaccent ecircumflex -74 KPX Tcommaaccent edieresis -74 KPX Tcommaaccent edotaccent -74 KPX Tcommaaccent egrave -74 KPX Tcommaaccent emacron -74 KPX Tcommaaccent eogonek -74 KPX Tcommaaccent hyphen -125 KPX Tcommaaccent i -18 KPX Tcommaaccent iacute -18 KPX Tcommaaccent icircumflex -18 KPX Tcommaaccent idieresis -18 KPX Tcommaaccent igrave -18 KPX Tcommaaccent imacron -18 KPX Tcommaaccent iogonek -18 KPX Tcommaaccent o -74 KPX Tcommaaccent oacute -74 KPX Tcommaaccent ocircumflex -74 KPX Tcommaaccent odieresis -74 KPX Tcommaaccent ograve -74 KPX Tcommaaccent ohungarumlaut -74 KPX Tcommaaccent omacron -74 KPX Tcommaaccent oslash -74 KPX Tcommaaccent otilde -74 KPX Tcommaaccent period -100 KPX Tcommaaccent r -18 KPX Tcommaaccent racute -18 KPX Tcommaaccent rcaron -18 KPX Tcommaaccent rcommaaccent -18 KPX Tcommaaccent u -18 KPX Tcommaaccent uacute -18 KPX Tcommaaccent ucircumflex -18 KPX Tcommaaccent udieresis -18 KPX Tcommaaccent ugrave -18 KPX Tcommaaccent uhungarumlaut -18 KPX Tcommaaccent umacron -18 KPX Tcommaaccent uogonek -18 KPX Tcommaaccent uring -18 KPX U A -18 KPX U Aacute -18 KPX U Abreve -18 KPX U Acircumflex -18 KPX U Adieresis -18 KPX U Agrave -18 KPX U Amacron -18 KPX U Aogonek -18 KPX U Aring -18 KPX U Atilde -18 KPX U comma -25 KPX U period -25 KPX Uacute A -18 KPX Uacute Aacute -18 KPX Uacute Abreve -18 KPX Uacute Acircumflex -18 KPX Uacute Adieresis -18 KPX Uacute Agrave -18 KPX Uacute Amacron -18 KPX Uacute Aogonek -18 KPX Uacute Aring -18 KPX Uacute Atilde -18 KPX Uacute comma -25 KPX Uacute period -25 KPX Ucircumflex A -18 KPX Ucircumflex Aacute -18 KPX Ucircumflex Abreve -18 KPX Ucircumflex Acircumflex -18 KPX Ucircumflex Adieresis -18 KPX Ucircumflex Agrave -18 KPX Ucircumflex Amacron -18 KPX Ucircumflex Aogonek -18 KPX Ucircumflex Aring -18 KPX Ucircumflex Atilde -18 KPX Ucircumflex comma -25 KPX Ucircumflex period -25 KPX Udieresis A -18 KPX Udieresis Aacute -18 KPX Udieresis Abreve -18 KPX Udieresis Acircumflex -18 KPX Udieresis Adieresis -18 KPX Udieresis Agrave -18 KPX Udieresis Amacron -18 KPX Udieresis Aogonek -18 KPX Udieresis Aring -18 KPX Udieresis Atilde -18 KPX Udieresis comma -25 KPX Udieresis period -25 KPX Ugrave A -18 KPX Ugrave Aacute -18 KPX Ugrave Abreve -18 KPX Ugrave Acircumflex -18 KPX Ugrave Adieresis -18 KPX Ugrave Agrave -18 KPX Ugrave Amacron -18 KPX Ugrave Aogonek -18 KPX Ugrave Aring -18 KPX Ugrave Atilde -18 KPX Ugrave comma -25 KPX Ugrave period -25 KPX Uhungarumlaut A -18 KPX Uhungarumlaut Aacute -18 KPX Uhungarumlaut Abreve -18 KPX Uhungarumlaut Acircumflex -18 KPX Uhungarumlaut Adieresis -18 KPX Uhungarumlaut Agrave -18 KPX Uhungarumlaut Amacron -18 KPX Uhungarumlaut Aogonek -18 KPX Uhungarumlaut Aring -18 KPX Uhungarumlaut Atilde -18 KPX Uhungarumlaut comma -25 KPX Uhungarumlaut period -25 KPX Umacron A -18 KPX Umacron Aacute -18 KPX Umacron Abreve -18 KPX Umacron Acircumflex -18 KPX Umacron Adieresis -18 KPX Umacron Agrave -18 KPX Umacron Amacron -18 KPX Umacron Aogonek -18 KPX Umacron Aring -18 KPX Umacron Atilde -18 KPX Umacron comma -25 KPX Umacron period -25 KPX Uogonek A -18 KPX Uogonek Aacute -18 KPX Uogonek Abreve -18 KPX Uogonek Acircumflex -18 KPX Uogonek Adieresis -18 KPX Uogonek Agrave -18 KPX Uogonek Amacron -18 KPX Uogonek Aogonek -18 KPX Uogonek Aring -18 KPX Uogonek Atilde -18 KPX Uogonek comma -25 KPX Uogonek period -25 KPX Uring A -18 KPX Uring Aacute -18 KPX Uring Abreve -18 KPX Uring Acircumflex -18 KPX Uring Adieresis -18 KPX Uring Agrave -18 KPX Uring Amacron -18 KPX Uring Aogonek -18 KPX Uring Aring -18 KPX Uring Atilde -18 KPX Uring comma -25 KPX Uring period -25 KPX V A -74 KPX V Aacute -74 KPX V Abreve -74 KPX V Acircumflex -74 KPX V Adieresis -74 KPX V Agrave -74 KPX V Amacron -74 KPX V Aogonek -74 KPX V Aring -74 KPX V Atilde -74 KPX V a -74 KPX V aacute -74 KPX V abreve -74 KPX V acircumflex -74 KPX V adieresis -74 KPX V agrave -74 KPX V amacron -74 KPX V aogonek -74 KPX V aring -74 KPX V atilde -74 KPX V colon -37 KPX V comma -125 KPX V e -74 KPX V eacute -74 KPX V ecaron -74 KPX V ecircumflex -74 KPX V edieresis -74 KPX V edotaccent -74 KPX V egrave -74 KPX V emacron -74 KPX V eogonek -74 KPX V hyphen -100 KPX V i -18 KPX V iacute -18 KPX V icircumflex -18 KPX V idieresis -18 KPX V igrave -18 KPX V imacron -18 KPX V iogonek -18 KPX V o -74 KPX V oacute -74 KPX V ocircumflex -74 KPX V odieresis -74 KPX V ograve -74 KPX V ohungarumlaut -74 KPX V omacron -74 KPX V oslash -74 KPX V otilde -74 KPX V period -125 KPX V semicolon -37 KPX V u -55 KPX V uacute -55 KPX V ucircumflex -55 KPX V udieresis -55 KPX V ugrave -55 KPX V uhungarumlaut -55 KPX V umacron -55 KPX V uogonek -55 KPX V uring -55 KPX W A -74 KPX W Aacute -74 KPX W Abreve -74 KPX W Acircumflex -74 KPX W Adieresis -74 KPX W Agrave -74 KPX W Amacron -74 KPX W Aogonek -74 KPX W Aring -74 KPX W Atilde -74 KPX W a -74 KPX W aacute -74 KPX W abreve -74 KPX W acircumflex -74 KPX W adieresis -74 KPX W agrave -74 KPX W amacron -74 KPX W aogonek -74 KPX W aring -74 KPX W atilde -74 KPX W colon -55 KPX W comma -100 KPX W e -74 KPX W eacute -74 KPX W ecaron -74 KPX W ecircumflex -74 KPX W edieresis -74 KPX W edotaccent -74 KPX W egrave -74 KPX W emacron -74 KPX W eogonek -74 KPX W hyphen -100 KPX W i -18 KPX W iacute -18 KPX W icircumflex -18 KPX W idieresis -18 KPX W igrave -18 KPX W imacron -18 KPX W iogonek -18 KPX W o -74 KPX W oacute -74 KPX W ocircumflex -74 KPX W odieresis -74 KPX W ograve -74 KPX W ohungarumlaut -74 KPX W omacron -74 KPX W oslash -74 KPX W otilde -74 KPX W period -100 KPX W semicolon -55 KPX W u -37 KPX W uacute -37 KPX W ucircumflex -37 KPX W udieresis -37 KPX W ugrave -37 KPX W uhungarumlaut -37 KPX W umacron -37 KPX W uogonek -37 KPX W uring -37 KPX W y -25 KPX W yacute -25 KPX W ydieresis -25 KPX Y A -91 KPX Y Aacute -91 KPX Y Abreve -91 KPX Y Acircumflex -91 KPX Y Adieresis -91 KPX Y Agrave -91 KPX Y Amacron -91 KPX Y Aogonek -91 KPX Y Aring -91 KPX Y Atilde -91 KPX Y a -100 KPX Y aacute -100 KPX Y abreve -100 KPX Y acircumflex -100 KPX Y adieresis -100 KPX Y agrave -100 KPX Y amacron -100 KPX Y aogonek -100 KPX Y aring -100 KPX Y atilde -100 KPX Y colon -25 KPX Y comma -100 KPX Y e -100 KPX Y eacute -100 KPX Y ecaron -40 KPX Y ecircumflex -100 KPX Y edieresis -40 KPX Y edotaccent -100 KPX Y egrave -40 KPX Y emacron -40 KPX Y eogonek -100 KPX Y hyphen -125 KPX Y i -18 KPX Y iacute -18 KPX Y icircumflex -18 KPX Y iogonek -18 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -40 KPX Y ograve -40 KPX Y ohungarumlaut -100 KPX Y omacron -40 KPX Y oslash -100 KPX Y otilde -100 KPX Y period -100 KPX Y semicolon -25 KPX Y u -55 KPX Y uacute -55 KPX Y ucircumflex -55 KPX Y udieresis -55 KPX Y ugrave -55 KPX Y uhungarumlaut -55 KPX Y umacron -55 KPX Y uogonek -55 KPX Y uring -55 KPX Yacute A -91 KPX Yacute Aacute -91 KPX Yacute Abreve -91 KPX Yacute Acircumflex -91 KPX Yacute Adieresis -91 KPX Yacute Agrave -91 KPX Yacute Amacron -91 KPX Yacute Aogonek -91 KPX Yacute Aring -91 KPX Yacute Atilde -91 KPX Yacute a -100 KPX Yacute aacute -100 KPX Yacute abreve -100 KPX Yacute acircumflex -100 KPX Yacute adieresis -100 KPX Yacute agrave -100 KPX Yacute amacron -100 KPX Yacute aogonek -100 KPX Yacute aring -100 KPX Yacute atilde -100 KPX Yacute colon -25 KPX Yacute comma -100 KPX Yacute e -100 KPX Yacute eacute -100 KPX Yacute ecaron -40 KPX Yacute ecircumflex -100 KPX Yacute edieresis -40 KPX Yacute edotaccent -100 KPX Yacute egrave -40 KPX Yacute emacron -40 KPX Yacute eogonek -100 KPX Yacute hyphen -125 KPX Yacute i -18 KPX Yacute iacute -18 KPX Yacute icircumflex -18 KPX Yacute iogonek -18 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -40 KPX Yacute ograve -40 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -40 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute period -100 KPX Yacute semicolon -25 KPX Yacute u -55 KPX Yacute uacute -55 KPX Yacute ucircumflex -55 KPX Yacute udieresis -55 KPX Yacute ugrave -55 KPX Yacute uhungarumlaut -55 KPX Yacute umacron -55 KPX Yacute uogonek -55 KPX Yacute uring -55 KPX Ydieresis A -91 KPX Ydieresis Aacute -91 KPX Ydieresis Abreve -91 KPX Ydieresis Acircumflex -91 KPX Ydieresis Adieresis -91 KPX Ydieresis Agrave -91 KPX Ydieresis Amacron -91 KPX Ydieresis Aogonek -91 KPX Ydieresis Aring -91 KPX Ydieresis Atilde -91 KPX Ydieresis a -100 KPX Ydieresis aacute -100 KPX Ydieresis abreve -100 KPX Ydieresis acircumflex -100 KPX Ydieresis adieresis -100 KPX Ydieresis agrave -100 KPX Ydieresis amacron -100 KPX Ydieresis aogonek -100 KPX Ydieresis aring -100 KPX Ydieresis atilde -100 KPX Ydieresis colon -25 KPX Ydieresis comma -100 KPX Ydieresis e -100 KPX Ydieresis eacute -100 KPX Ydieresis ecaron -40 KPX Ydieresis ecircumflex -100 KPX Ydieresis edieresis -40 KPX Ydieresis edotaccent -100 KPX Ydieresis egrave -40 KPX Ydieresis emacron -40 KPX Ydieresis eogonek -100 KPX Ydieresis hyphen -125 KPX Ydieresis i -18 KPX Ydieresis iacute -18 KPX Ydieresis icircumflex -18 KPX Ydieresis iogonek -18 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -40 KPX Ydieresis ograve -40 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -40 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis period -100 KPX Ydieresis semicolon -25 KPX Ydieresis u -55 KPX Ydieresis uacute -55 KPX Ydieresis ucircumflex -55 KPX Ydieresis udieresis -55 KPX Ydieresis ugrave -55 KPX Ydieresis uhungarumlaut -55 KPX Ydieresis umacron -55 KPX Ydieresis uogonek -55 KPX Ydieresis uring -55 KPX colon space -18 KPX comma quotedblright -18 KPX comma quoteright -18 KPX comma space -18 KPX f quotedblright 75 KPX f quoteright 75 KPX period quotedblright -18 KPX period quoteright -18 KPX period space -18 KPX quotedblleft A -74 KPX quotedblleft Aacute -74 KPX quotedblleft Abreve -74 KPX quotedblleft Acircumflex -74 KPX quotedblleft Adieresis -74 KPX quotedblleft Agrave -74 KPX quotedblleft Amacron -74 KPX quotedblleft Aogonek -74 KPX quotedblleft Aring -74 KPX quotedblleft Atilde -74 KPX quotedblright space -18 KPX quoteleft A -74 KPX quoteleft Aacute -74 KPX quoteleft Abreve -74 KPX quoteleft Acircumflex -74 KPX quoteleft Adieresis -74 KPX quoteleft Agrave -74 KPX quoteleft Amacron -74 KPX quoteleft Aogonek -74 KPX quoteleft Aring -74 KPX quoteleft Atilde -74 KPX quoteright d -25 KPX quoteright dcroat -25 KPX quoteright s -25 KPX quoteright sacute -25 KPX quoteright scaron -25 KPX quoteright scedilla -25 KPX quoteright scommaaccent -25 KPX r comma -74 KPX r period -74 KPX racute comma -74 KPX racute period -74 KPX rcaron comma -74 KPX rcaron period -74 KPX rcommaaccent comma -74 KPX rcommaaccent period -74 KPX semicolon space -18 KPX space A -18 KPX space Aacute -18 KPX space Abreve -18 KPX space Acircumflex -18 KPX space Adieresis -18 KPX space Agrave -18 KPX space Amacron -18 KPX space Aogonek -18 KPX space Aring -18 KPX space Atilde -18 KPX space T -18 KPX space Tcaron -18 KPX space Tcommaaccent -18 KPX space V -18 KPX space W -18 KPX space Y -18 KPX space Yacute -18 KPX space Ydieresis -18 KPX space quotedblleft -18 KPX space quoteleft -18 KPX v comma -100 KPX v period -100 KPX w comma -100 KPX w period -100 KPX y comma -100 KPX y period -100 KPX yacute comma -100 KPX yacute period -100 KPX ydieresis comma -100 KPX ydieresis period -100 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/NewCenturySchlbk-BoldItalic.afm0000644000222100022210000022043214541067540020624 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 14:34:01 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43097 Comment VMusage 44127 55152 FontName NewCenturySchlbk-BoldItalic FullName New Century Schoolbook Bold Italic FamilyName New Century Schoolbook Weight Bold ItalicAngle -16 IsFixedPitch false FontBBox -205 -250 1147 991 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 722 XHeight 477 Ascender 737 Descender -205 StdHW 54 StdVW 150 StartCharMetrics 361 C 32 ; WX 287 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 0 -15 333 737 ; C 34 ; WX 400 ; N quotedbl ; B 66 388 428 737 ; C 35 ; WX 574 ; N numbersign ; B 30 0 544 690 ; C 36 ; WX 574 ; N dollar ; B 9 -120 565 810 ; C 37 ; WX 889 ; N percent ; B 54 -28 835 727 ; C 38 ; WX 889 ; N ampersand ; B 32 -15 823 737 ; C 39 ; WX 259 ; N quoteright ; B 48 388 275 737 ; C 40 ; WX 407 ; N parenleft ; B 72 -117 454 745 ; C 41 ; WX 407 ; N parenright ; B -70 -117 310 745 ; C 42 ; WX 500 ; N asterisk ; B 58 301 498 737 ; C 43 ; WX 606 ; N plus ; B 50 0 556 506 ; C 44 ; WX 287 ; N comma ; B -57 -192 170 157 ; C 45 ; WX 333 ; N hyphen ; B 2 177 263 299 ; C 46 ; WX 287 ; N period ; B -20 -15 152 157 ; C 47 ; WX 278 ; N slash ; B -41 -15 320 737 ; C 48 ; WX 574 ; N zero ; B 21 -15 553 705 ; C 49 ; WX 574 ; N one ; B 25 0 489 705 ; C 50 ; WX 574 ; N two ; B -38 -3 538 705 ; C 51 ; WX 574 ; N three ; B -7 -15 536 705 ; C 52 ; WX 574 ; N four ; B -13 0 544 705 ; C 53 ; WX 574 ; N five ; B 0 -15 574 705 ; C 54 ; WX 574 ; N six ; B 31 -15 574 705 ; C 55 ; WX 574 ; N seven ; B 64 -15 593 705 ; C 56 ; WX 574 ; N eight ; B 0 -15 552 705 ; C 57 ; WX 574 ; N nine ; B 0 -15 543 705 ; C 58 ; WX 287 ; N colon ; B -20 -15 237 477 ; C 59 ; WX 287 ; N semicolon ; B -57 -192 237 477 ; C 60 ; WX 606 ; N less ; B 50 -9 556 515 ; C 61 ; WX 606 ; N equal ; B 50 103 556 403 ; C 62 ; WX 606 ; N greater ; B 50 -8 556 514 ; C 63 ; WX 481 ; N question ; B 79 -15 451 737 ; C 64 ; WX 747 ; N at ; B -4 -15 751 737 ; C 65 ; WX 741 ; N A ; B -75 0 716 737 ; C 66 ; WX 759 ; N B ; B -50 0 721 722 ; C 67 ; WX 759 ; N C ; B 37 -15 759 737 ; C 68 ; WX 833 ; N D ; B -47 0 796 722 ; C 69 ; WX 741 ; N E ; B -41 0 730 722 ; C 70 ; WX 704 ; N F ; B -41 0 730 722 ; C 71 ; WX 815 ; N G ; B 37 -15 805 737 ; C 72 ; WX 870 ; N H ; B -41 0 911 722 ; C 73 ; WX 444 ; N I ; B -41 0 485 722 ; C 74 ; WX 667 ; N J ; B -20 -15 708 722 ; C 75 ; WX 778 ; N K ; B -41 0 832 722 ; C 76 ; WX 704 ; N L ; B -41 0 670 722 ; C 77 ; WX 944 ; N M ; B -44 0 988 722 ; C 78 ; WX 852 ; N N ; B -61 -10 913 722 ; C 79 ; WX 833 ; N O ; B 37 -15 796 737 ; C 80 ; WX 741 ; N P ; B -41 0 730 722 ; C 81 ; WX 833 ; N Q ; B 37 -189 796 737 ; C 82 ; WX 796 ; N R ; B -41 -15 749 722 ; C 83 ; WX 685 ; N S ; B 1 -15 666 737 ; C 84 ; WX 722 ; N T ; B 41 0 759 722 ; C 85 ; WX 833 ; N U ; B 88 -15 900 722 ; C 86 ; WX 741 ; N V ; B 32 -10 802 722 ; C 87 ; WX 944 ; N W ; B 40 -10 1000 722 ; C 88 ; WX 741 ; N X ; B -82 0 801 722 ; C 89 ; WX 704 ; N Y ; B 13 0 775 722 ; C 90 ; WX 704 ; N Z ; B -33 0 711 722 ; C 91 ; WX 407 ; N bracketleft ; B 1 -109 464 737 ; C 92 ; WX 606 ; N backslash ; B 161 -15 445 737 ; C 93 ; WX 407 ; N bracketright ; B -101 -109 362 737 ; C 94 ; WX 606 ; N asciicircum ; B 66 325 540 690 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 259 ; N quoteleft ; B 47 388 274 737 ; C 97 ; WX 667 ; N a ; B 6 -15 636 477 ; C 98 ; WX 611 ; N b ; B 29 -15 557 737 ; C 99 ; WX 537 ; N c ; B 0 -15 482 477 ; C 100 ; WX 667 ; N d ; B 0 -15 660 737 ; C 101 ; WX 519 ; N e ; B 0 -15 479 477 ; C 102 ; WX 389 ; N f ; B -48 -205 550 737 ; L i fi ; L l fl ; C 103 ; WX 611 ; N g ; B -63 -205 604 528 ; C 104 ; WX 685 ; N h ; B 0 -15 639 737 ; C 105 ; WX 389 ; N i ; B 32 -15 345 737 ; C 106 ; WX 370 ; N j ; B -205 -205 347 737 ; C 107 ; WX 648 ; N k ; B -11 -15 578 737 ; C 108 ; WX 389 ; N l ; B 32 -15 375 737 ; C 109 ; WX 944 ; N m ; B 0 -15 909 477 ; C 110 ; WX 685 ; N n ; B 0 -15 639 477 ; C 111 ; WX 574 ; N o ; B 0 -15 530 477 ; C 112 ; WX 648 ; N p ; B -119 -205 590 477 ; C 113 ; WX 630 ; N q ; B 0 -205 587 477 ; C 114 ; WX 519 ; N r ; B 0 0 527 486 ; C 115 ; WX 481 ; N s ; B 0 -15 435 477 ; C 116 ; WX 407 ; N t ; B 24 -15 403 650 ; C 117 ; WX 685 ; N u ; B 30 -15 635 477 ; C 118 ; WX 556 ; N v ; B 30 -15 496 477 ; C 119 ; WX 833 ; N w ; B 30 -15 773 477 ; C 120 ; WX 574 ; N x ; B -46 -15 574 477 ; C 121 ; WX 519 ; N y ; B -66 -205 493 477 ; C 122 ; WX 519 ; N z ; B -19 -15 473 477 ; C 123 ; WX 407 ; N braceleft ; B 52 -109 408 737 ; C 124 ; WX 606 ; N bar ; B 249 -250 357 750 ; C 125 ; WX 407 ; N braceright ; B -25 -109 331 737 ; C 126 ; WX 606 ; N asciitilde ; B 72 160 534 346 ; C 160 ; WX 287 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 333 ; N exclamdown ; B -44 -205 289 547 ; C 162 ; WX 574 ; N cent ; B 30 -144 512 578 ; C 163 ; WX 574 ; N sterling ; B -18 -15 566 705 ; C 164 ; WX 167 ; N fraction ; B -166 -15 333 705 ; C 165 ; WX 574 ; N yen ; B 17 0 629 690 ; C 166 ; WX 574 ; N florin ; B -43 -205 575 737 ; C 167 ; WX 500 ; N section ; B -30 -146 515 737 ; C 168 ; WX 574 ; N currency ; B 27 84 547 605 ; C 169 ; WX 287 ; N quotesingle ; B 112 388 250 737 ; C 170 ; WX 481 ; N quotedblleft ; B 54 388 521 737 ; C 171 ; WX 481 ; N guillemotleft ; B -35 69 449 407 ; C 172 ; WX 278 ; N guilsinglleft ; B -25 69 244 407 ; C 173 ; WX 278 ; N guilsinglright ; B -26 69 243 407 ; C 174 ; WX 685 ; N fi ; B -70 -205 641 737 ; C 175 ; WX 685 ; N fl ; B -70 -205 671 737 ; C 177 ; WX 500 ; N endash ; B -47 189 479 287 ; C 178 ; WX 500 ; N dagger ; B 48 -146 508 737 ; C 179 ; WX 500 ; N daggerdbl ; B -60 -150 508 737 ; C 180 ; WX 287 ; N periodcentered ; B 57 200 229 372 ; C 182 ; WX 650 ; N paragraph ; B 25 -131 681 722 ; C 183 ; WX 606 ; N bullet ; B 122 180 484 542 ; C 184 ; WX 259 ; N quotesinglbase ; B -57 -192 170 157 ; C 185 ; WX 481 ; N quotedblbase ; B -57 -192 412 157 ; C 186 ; WX 481 ; N quotedblright ; B 43 388 510 737 ; C 187 ; WX 481 ; N guillemotright ; B -31 69 453 407 ; C 188 ; WX 1000 ; N ellipsis ; B 81 -15 919 157 ; C 189 ; WX 1167 ; N perthousand ; B 20 -28 1147 727 ; C 191 ; WX 481 ; N questiondown ; B 0 -205 372 547 ; C 193 ; WX 333 ; N grave ; B 74 538 294 722 ; C 194 ; WX 333 ; N acute ; B 123 538 372 722 ; C 195 ; WX 333 ; N circumflex ; B 23 533 365 705 ; C 196 ; WX 333 ; N tilde ; B 28 561 398 690 ; C 197 ; WX 333 ; N macron ; B 47 573 404 649 ; C 198 ; WX 333 ; N breve ; B 67 535 390 698 ; C 199 ; WX 333 ; N dotaccent ; B 145 571 311 737 ; C 200 ; WX 333 ; N dieresis ; B 33 571 393 715 ; C 202 ; WX 333 ; N ring ; B 111 522 335 746 ; C 203 ; WX 333 ; N cedilla ; B -21 -220 225 3 ; C 205 ; WX 333 ; N hungarumlaut ; B 15 538 480 722 ; C 206 ; WX 333 ; N ogonek ; B 36 -220 338 4 ; C 207 ; WX 333 ; N caron ; B 60 531 403 705 ; C 208 ; WX 1000 ; N emdash ; B -47 189 979 287 ; C 225 ; WX 889 ; N AE ; B -86 0 915 722 ; C 227 ; WX 412 ; N ordfeminine ; B 47 407 460 705 ; C 232 ; WX 704 ; N Lslash ; B -41 0 670 722 ; C 233 ; WX 833 ; N Oslash ; B 35 -68 798 790 ; C 234 ; WX 963 ; N OE ; B 29 0 989 722 ; C 235 ; WX 356 ; N ordmasculine ; B 42 407 394 705 ; C 241 ; WX 815 ; N ae ; B -18 -15 775 477 ; C 245 ; WX 389 ; N dotlessi ; B 32 -15 345 477 ; C 248 ; WX 389 ; N lslash ; B 24 -15 387 737 ; C 249 ; WX 574 ; N oslash ; B 0 -121 530 583 ; C 250 ; WX 852 ; N oe ; B -6 -15 812 477 ; C 251 ; WX 574 ; N germandbls ; B -91 -205 540 737 ; C -1 ; WX 444 ; N Idieresis ; B -41 0 509 915 ; C -1 ; WX 519 ; N eacute ; B 0 -15 479 722 ; C -1 ; WX 667 ; N abreve ; B 6 -15 636 698 ; C -1 ; WX 685 ; N uhungarumlaut ; B 30 -15 656 722 ; C -1 ; WX 519 ; N ecaron ; B 0 -15 496 705 ; C -1 ; WX 704 ; N Ydieresis ; B 13 0 775 915 ; C -1 ; WX 606 ; N divide ; B 50 -40 556 546 ; C -1 ; WX 704 ; N Yacute ; B 13 0 775 947 ; C -1 ; WX 741 ; N Acircumflex ; B -75 0 716 930 ; C -1 ; WX 667 ; N aacute ; B 6 -15 636 722 ; C -1 ; WX 833 ; N Ucircumflex ; B 88 -15 900 930 ; C -1 ; WX 519 ; N yacute ; B -66 -205 493 722 ; C -1 ; WX 481 ; N scommaaccent ; B 0 -250 435 477 ; C -1 ; WX 519 ; N ecircumflex ; B 0 -15 479 705 ; C -1 ; WX 833 ; N Uring ; B 88 -15 900 991 ; C -1 ; WX 833 ; N Udieresis ; B 88 -15 900 915 ; C -1 ; WX 667 ; N aogonek ; B 6 -230 636 477 ; C -1 ; WX 833 ; N Uacute ; B 88 -15 900 947 ; C -1 ; WX 685 ; N uogonek ; B 30 -233 635 477 ; C -1 ; WX 741 ; N Edieresis ; B -41 0 730 915 ; C -1 ; WX 833 ; N Dcroat ; B -47 0 796 722 ; C -1 ; WX 250 ; N commaaccent ; B -25 -250 141 -50 ; C -1 ; WX 747 ; N copyright ; B -2 -15 750 737 ; C -1 ; WX 741 ; N Emacron ; B -41 0 730 874 ; C -1 ; WX 537 ; N ccaron ; B 0 -15 505 705 ; C -1 ; WX 667 ; N aring ; B 6 -15 636 746 ; C -1 ; WX 852 ; N Ncommaaccent ; B -61 -230 913 722 ; C -1 ; WX 389 ; N lacute ; B 32 -15 500 947 ; C -1 ; WX 667 ; N agrave ; B 6 -15 636 722 ; C -1 ; WX 722 ; N Tcommaaccent ; B 41 -250 759 722 ; C -1 ; WX 759 ; N Cacute ; B 37 -15 759 947 ; C -1 ; WX 667 ; N atilde ; B 6 -15 636 690 ; C -1 ; WX 741 ; N Edotaccent ; B -41 0 730 937 ; C -1 ; WX 481 ; N scaron ; B 0 -15 477 705 ; C -1 ; WX 481 ; N scedilla ; B 0 -220 435 477 ; C -1 ; WX 389 ; N iacute ; B 32 -15 370 715 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 796 ; N Rcaron ; B -41 -15 749 930 ; C -1 ; WX 815 ; N Gcommaaccent ; B 37 -250 805 737 ; C -1 ; WX 685 ; N ucircumflex ; B 30 -15 635 705 ; C -1 ; WX 667 ; N acircumflex ; B 6 -15 636 705 ; C -1 ; WX 741 ; N Amacron ; B -75 0 716 874 ; C -1 ; WX 519 ; N rcaron ; B 0 0 527 695 ; C -1 ; WX 537 ; N ccedilla ; B 0 -220 482 477 ; C -1 ; WX 704 ; N Zdotaccent ; B -33 0 711 937 ; C -1 ; WX 741 ; N Thorn ; B -41 0 690 722 ; C -1 ; WX 833 ; N Omacron ; B 37 -15 796 874 ; C -1 ; WX 796 ; N Racute ; B -41 -15 749 947 ; C -1 ; WX 685 ; N Sacute ; B 1 -15 666 947 ; C -1 ; WX 747 ; N dcaron ; B 0 -15 826 737 ; C -1 ; WX 833 ; N Umacron ; B 88 -15 900 874 ; C -1 ; WX 685 ; N uring ; B 30 -15 635 746 ; C -1 ; WX 344 ; N threesuperior ; B 3 273 361 705 ; C -1 ; WX 833 ; N Ograve ; B 37 -15 796 947 ; C -1 ; WX 741 ; N Agrave ; B -75 0 716 947 ; C -1 ; WX 741 ; N Abreve ; B -75 0 716 923 ; C -1 ; WX 606 ; N multiply ; B 65 15 541 491 ; C -1 ; WX 685 ; N uacute ; B 30 -15 635 722 ; C -1 ; WX 722 ; N Tcaron ; B 41 0 759 930 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 519 ; N ydieresis ; B -66 -205 493 690 ; C -1 ; WX 852 ; N Nacute ; B -61 -10 913 947 ; C -1 ; WX 389 ; N icircumflex ; B 21 -15 363 698 ; C -1 ; WX 741 ; N Ecircumflex ; B -41 0 730 930 ; C -1 ; WX 667 ; N adieresis ; B 6 -15 636 690 ; C -1 ; WX 519 ; N edieresis ; B 0 -15 486 690 ; C -1 ; WX 537 ; N cacute ; B 0 -15 482 722 ; C -1 ; WX 685 ; N nacute ; B 0 -15 639 722 ; C -1 ; WX 685 ; N umacron ; B 30 -15 635 649 ; C -1 ; WX 852 ; N Ncaron ; B -61 -10 913 930 ; C -1 ; WX 444 ; N Iacute ; B -41 0 488 947 ; C -1 ; WX 606 ; N plusminus ; B 50 0 556 506 ; C -1 ; WX 606 ; N brokenbar ; B 249 -175 357 675 ; C -1 ; WX 747 ; N registered ; B -2 -15 750 737 ; C -1 ; WX 815 ; N Gbreve ; B 37 -15 805 923 ; C -1 ; WX 444 ; N Idotaccent ; B -41 0 485 937 ; C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 741 ; N Egrave ; B -41 0 730 947 ; C -1 ; WX 519 ; N racute ; B 0 0 527 722 ; C -1 ; WX 574 ; N omacron ; B 0 -15 530 649 ; C -1 ; WX 704 ; N Zacute ; B -33 0 711 947 ; C -1 ; WX 704 ; N Zcaron ; B -33 0 711 930 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 833 ; N Eth ; B -47 0 796 722 ; C -1 ; WX 759 ; N Ccedilla ; B 37 -220 759 737 ; C -1 ; WX 389 ; N lcommaaccent ; B 25 -250 375 737 ; C -1 ; WX 447 ; N tcaron ; B 24 -15 544 767 ; C -1 ; WX 519 ; N eogonek ; B 0 -229 479 477 ; C -1 ; WX 833 ; N Uogonek ; B 88 -230 900 722 ; C -1 ; WX 741 ; N Aacute ; B -75 0 716 947 ; C -1 ; WX 741 ; N Adieresis ; B -75 0 716 915 ; C -1 ; WX 519 ; N egrave ; B 0 -15 479 722 ; C -1 ; WX 519 ; N zacute ; B -19 -15 473 722 ; C -1 ; WX 389 ; N iogonek ; B -8 -232 345 737 ; C -1 ; WX 833 ; N Oacute ; B 37 -15 796 947 ; C -1 ; WX 574 ; N oacute ; B 0 -15 530 722 ; C -1 ; WX 667 ; N amacron ; B 6 -15 636 649 ; C -1 ; WX 481 ; N sacute ; B 0 -15 446 722 ; C -1 ; WX 389 ; N idieresis ; B 31 -15 391 690 ; C -1 ; WX 833 ; N Ocircumflex ; B 37 -15 796 930 ; C -1 ; WX 833 ; N Ugrave ; B 88 -15 900 947 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 648 ; N thorn ; B -119 -205 590 737 ; C -1 ; WX 344 ; N twosuperior ; B -17 280 362 705 ; C -1 ; WX 833 ; N Odieresis ; B 37 -15 796 915 ; C -1 ; WX 685 ; N mu ; B -89 -205 635 477 ; C -1 ; WX 389 ; N igrave ; B 32 -15 345 715 ; C -1 ; WX 574 ; N ohungarumlaut ; B 0 -15 601 722 ; C -1 ; WX 741 ; N Eogonek ; B -41 -224 730 722 ; C -1 ; WX 667 ; N dcroat ; B 0 -15 734 737 ; C -1 ; WX 861 ; N threequarters ; B 35 -15 789 705 ; C -1 ; WX 685 ; N Scedilla ; B 1 -220 666 737 ; C -1 ; WX 449 ; N lcaron ; B 32 -15 541 737 ; C -1 ; WX 778 ; N Kcommaaccent ; B -41 -250 832 722 ; C -1 ; WX 704 ; N Lacute ; B -41 0 670 947 ; C -1 ; WX 950 ; N trademark ; B 42 317 1017 722 ; C -1 ; WX 519 ; N edotaccent ; B 0 -15 479 712 ; C -1 ; WX 444 ; N Igrave ; B -41 0 485 947 ; C -1 ; WX 444 ; N Imacron ; B -41 0 520 874 ; C -1 ; WX 704 ; N Lcaron ; B -41 0 702 737 ; C -1 ; WX 861 ; N onehalf ; B 17 -15 798 705 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 574 ; N ocircumflex ; B 0 -15 530 705 ; C -1 ; WX 685 ; N ntilde ; B 0 -15 639 690 ; C -1 ; WX 833 ; N Uhungarumlaut ; B 88 -15 900 947 ; C -1 ; WX 741 ; N Eacute ; B -41 0 730 947 ; C -1 ; WX 519 ; N emacron ; B 0 -15 497 649 ; C -1 ; WX 611 ; N gbreve ; B -63 -205 604 698 ; C -1 ; WX 861 ; N onequarter ; B 17 -15 789 705 ; C -1 ; WX 685 ; N Scaron ; B 1 -15 666 930 ; C -1 ; WX 685 ; N Scommaaccent ; B 1 -250 666 737 ; C -1 ; WX 833 ; N Ohungarumlaut ; B 37 -15 796 947 ; C -1 ; WX 400 ; N degree ; B 86 419 372 705 ; C -1 ; WX 574 ; N ograve ; B 0 -15 530 722 ; C -1 ; WX 759 ; N Ccaron ; B 37 -15 759 930 ; C -1 ; WX 685 ; N ugrave ; B 30 -15 635 722 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 833 ; N Dcaron ; B -47 0 796 930 ; C -1 ; WX 519 ; N rcommaaccent ; B -31 -250 527 486 ; C -1 ; WX 852 ; N Ntilde ; B -61 -10 913 915 ; C -1 ; WX 574 ; N otilde ; B 0 -15 530 690 ; C -1 ; WX 796 ; N Rcommaaccent ; B -41 -250 749 722 ; C -1 ; WX 704 ; N Lcommaaccent ; B -41 -250 670 722 ; C -1 ; WX 741 ; N Atilde ; B -75 0 716 915 ; C -1 ; WX 741 ; N Aogonek ; B -75 -224 744 737 ; C -1 ; WX 741 ; N Aring ; B -75 0 716 991 ; C -1 ; WX 833 ; N Otilde ; B 37 -15 796 915 ; C -1 ; WX 519 ; N zdotaccent ; B -19 -15 473 712 ; C -1 ; WX 741 ; N Ecaron ; B -41 0 730 930 ; C -1 ; WX 444 ; N Iogonek ; B -41 -220 485 722 ; C -1 ; WX 648 ; N kcommaaccent ; B -11 -250 578 737 ; C -1 ; WX 606 ; N minus ; B 50 199 556 307 ; C -1 ; WX 444 ; N Icircumflex ; B -41 0 485 930 ; C -1 ; WX 685 ; N ncaron ; B 0 -15 639 705 ; C -1 ; WX 407 ; N tcommaaccent ; B -6 -250 403 650 ; C -1 ; WX 606 ; N logicalnot ; B 50 103 556 403 ; C -1 ; WX 574 ; N odieresis ; B 0 -15 530 690 ; C -1 ; WX 685 ; N udieresis ; B 30 -15 635 690 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 611 ; N gcommaaccent ; B -63 -205 604 822 ; C -1 ; WX 574 ; N eth ; B 0 -15 530 752 ; C -1 ; WX 519 ; N zcaron ; B -19 -15 473 695 ; C -1 ; WX 685 ; N ncommaaccent ; B 0 -250 639 477 ; C -1 ; WX 344 ; N onesuperior ; B 19 282 326 705 ; C -1 ; WX 389 ; N imacron ; B 32 -15 376 642 ; C -1 ; WX 574 ; N Euro ; B -37 -15 640 717 ; C -1 ; WX 759 ; N Ccircumflex ; B 35 -15 759 971 ; C -1 ; WX 537 ; N ccircumflex ; B 3 -14 504 713 ; C -1 ; WX 759 ; N Cdotaccent ; B 35 -15 759 940 ; C -1 ; WX 537 ; N cdotaccent ; B 3 -14 487 682 ; C -1 ; WX 741 ; N Ebreve ; B -41 0 728 961 ; C -1 ; WX 519 ; N ebreve ; B -2 -14 535 703 ; C -1 ; WX 815 ; N Gcircumflex ; B 34 -15 802 996 ; C -1 ; WX 611 ; N gcircumflex ; B -66 -202 602 807 ; C -1 ; WX 815 ; N Gdotaccent ; B 34 -15 802 965 ; C -1 ; WX 611 ; N gdotaccent ; B -66 -202 602 776 ; C -1 ; WX 870 ; N Hcircumflex ; B -41 0 912 971 ; C -1 ; WX 685 ; N hcircumflex ; B 0 -15 640 970 ; C -1 ; WX 870 ; N Hbar ; B -41 0 912 722 ; C -1 ; WX 685 ; N hbar ; B 0 -15 637 736 ; C -1 ; WX 444 ; N Itilde ; B -41 0 522 923 ; C -1 ; WX 389 ; N itilde ; B 38 -15 459 705 ; C -1 ; WX 444 ; N Ibreve ; B -41 0 524 961 ; C -1 ; WX 389 ; N ibreve ; B 38 -15 472 742 ; C -1 ; WX 1032 ; N IJ ; B -41 -15 1073 722 ; C -1 ; WX 774 ; N ij ; B 28 -202 746 737 ; C -1 ; WX 667 ; N Jcircumflex ; B -9 -15 720 971 ; C -1 ; WX 370 ; N jcircumflex ; B -170 -202 365 709 ; C -1 ; WX 701 ; N kgreenlandic ; B 38 -14 635 492 ; C -1 ; WX 704 ; N Ldot ; B -41 0 670 722 ; C -1 ; WX 564 ; N ldot ; B 26 -15 516 736 ; C -1 ; WX 685 ; N napostrophe ; B -2 -15 642 832 ; C -1 ; WX 852 ; N Eng ; B -57 -209 912 722 ; C -1 ; WX 685 ; N eng ; B 13 -175 571 479 ; C -1 ; WX 833 ; N Obreve ; B 36 -15 797 961 ; C -1 ; WX 574 ; N obreve ; B 10 -14 545 703 ; C -1 ; WX 685 ; N Scircumflex ; B 1 -15 666 971 ; C -1 ; WX 481 ; N scircumflex ; B 2 -15 445 713 ; C -1 ; WX 722 ; N Tbar ; B 44 0 762 722 ; C -1 ; WX 407 ; N tbar ; B 4 -14 404 650 ; C -1 ; WX 722 ; N Tcedilla ; B 41 -250 759 722 ; C -1 ; WX 407 ; N tcedilla ; B -6 -250 403 650 ; C -1 ; WX 833 ; N Utilde ; B 88 -15 895 923 ; C -1 ; WX 685 ; N utilde ; B 38 -14 639 665 ; C -1 ; WX 833 ; N Ubreve ; B 88 -15 895 961 ; C -1 ; WX 685 ; N ubreve ; B 38 -14 639 703 ; C -1 ; WX 944 ; N Wcircumflex ; B 40 -14 994 971 ; C -1 ; WX 833 ; N wcircumflex ; B 22 -15 788 713 ; C -1 ; WX 704 ; N Ycircumflex ; B 15 0 777 971 ; C -1 ; WX 519 ; N ycircumflex ; B -66 -202 492 713 ; C -1 ; WX 389 ; N longs ; B -48 -205 550 737 ; C -1 ; WX 729 ; N infinity ; B 4 51 729 521 ; EndCharMetrics StartKernData StartKernPairs 2653 KPX A C 5 KPX A Cacute 5 KPX A Ccaron 5 KPX A Ccedilla 5 KPX A G 5 KPX A Gbreve 5 KPX A Gcommaaccent 5 KPX A O 5 KPX A Oacute 5 KPX A Ocircumflex 5 KPX A Odieresis 5 KPX A Ograve 5 KPX A Ohungarumlaut 5 KPX A Omacron 5 KPX A Oslash 5 KPX A Otilde 5 KPX A Q 5 KPX A T 5 KPX A Tcaron 5 KPX A Tcommaaccent 5 KPX A U -32 KPX A Uacute -32 KPX A Ucircumflex -32 KPX A Udieresis -32 KPX A Ugrave -32 KPX A Uhungarumlaut -32 KPX A Umacron -32 KPX A Uogonek -32 KPX A Uring -32 KPX A V -100 KPX A W -84 KPX A Y -70 KPX A Yacute -70 KPX A Ydieresis -70 KPX A quotedblright -95 KPX A quoteright -95 KPX A u -15 KPX A uacute -15 KPX A ucircumflex -15 KPX A udieresis -15 KPX A ugrave -15 KPX A uhungarumlaut -15 KPX A umacron -15 KPX A uogonek -15 KPX A uring -15 KPX A v -10 KPX A w -25 KPX A y -33 KPX A yacute -33 KPX A ydieresis -33 KPX Aacute C 5 KPX Aacute Cacute 5 KPX Aacute Ccaron 5 KPX Aacute Ccedilla 5 KPX Aacute G 5 KPX Aacute Gbreve 5 KPX Aacute Gcommaaccent 5 KPX Aacute O 5 KPX Aacute Oacute 5 KPX Aacute Ocircumflex 5 KPX Aacute Odieresis 5 KPX Aacute Ograve 5 KPX Aacute Ohungarumlaut 5 KPX Aacute Omacron 5 KPX Aacute Oslash 5 KPX Aacute Otilde 5 KPX Aacute Q 5 KPX Aacute T 5 KPX Aacute Tcaron 5 KPX Aacute Tcommaaccent 5 KPX Aacute U -32 KPX Aacute Uacute -32 KPX Aacute Ucircumflex -32 KPX Aacute Udieresis -32 KPX Aacute Ugrave -32 KPX Aacute Uhungarumlaut -32 KPX Aacute Umacron -32 KPX Aacute Uogonek -32 KPX Aacute Uring -32 KPX Aacute V -100 KPX Aacute W -84 KPX Aacute Y -70 KPX Aacute Yacute -70 KPX Aacute Ydieresis -70 KPX Aacute quotedblright -95 KPX Aacute quoteright -95 KPX Aacute u -15 KPX Aacute uacute -15 KPX Aacute ucircumflex -15 KPX Aacute udieresis -15 KPX Aacute ugrave -15 KPX Aacute uhungarumlaut -15 KPX Aacute umacron -15 KPX Aacute uogonek -15 KPX Aacute uring -15 KPX Aacute v -10 KPX Aacute w -25 KPX Aacute y -33 KPX Aacute yacute -33 KPX Aacute ydieresis -33 KPX Abreve C 5 KPX Abreve Cacute 5 KPX Abreve Ccaron 5 KPX Abreve Ccedilla 5 KPX Abreve G 5 KPX Abreve Gbreve 5 KPX Abreve Gcommaaccent 5 KPX Abreve O 5 KPX Abreve Oacute 5 KPX Abreve Ocircumflex 5 KPX Abreve Odieresis 5 KPX Abreve Ograve 5 KPX Abreve Ohungarumlaut 5 KPX Abreve Omacron 5 KPX Abreve Oslash 5 KPX Abreve Otilde 5 KPX Abreve Q 5 KPX Abreve T 5 KPX Abreve Tcaron 5 KPX Abreve Tcommaaccent 5 KPX Abreve U -32 KPX Abreve Uacute -32 KPX Abreve Ucircumflex -32 KPX Abreve Udieresis -32 KPX Abreve Ugrave -32 KPX Abreve Uhungarumlaut -32 KPX Abreve Umacron -32 KPX Abreve Uogonek -32 KPX Abreve Uring -32 KPX Abreve V -100 KPX Abreve W -84 KPX Abreve Y -70 KPX Abreve Yacute -70 KPX Abreve Ydieresis -70 KPX Abreve quotedblright -95 KPX Abreve quoteright -95 KPX Abreve u -15 KPX Abreve uacute -15 KPX Abreve ucircumflex -15 KPX Abreve udieresis -15 KPX Abreve ugrave -15 KPX Abreve uhungarumlaut -15 KPX Abreve umacron -15 KPX Abreve uogonek -15 KPX Abreve uring -15 KPX Abreve v -10 KPX Abreve w -25 KPX Abreve y -33 KPX Abreve yacute -33 KPX Abreve ydieresis -33 KPX Acircumflex C 5 KPX Acircumflex Cacute 5 KPX Acircumflex Ccaron 5 KPX Acircumflex Ccedilla 5 KPX Acircumflex G 5 KPX Acircumflex Gbreve 5 KPX Acircumflex Gcommaaccent 5 KPX Acircumflex O 5 KPX Acircumflex Oacute 5 KPX Acircumflex Ocircumflex 5 KPX Acircumflex Odieresis 5 KPX Acircumflex Ograve 5 KPX Acircumflex Ohungarumlaut 5 KPX Acircumflex Omacron 5 KPX Acircumflex Oslash 5 KPX Acircumflex Otilde 5 KPX Acircumflex Q 5 KPX Acircumflex T 5 KPX Acircumflex Tcaron 5 KPX Acircumflex Tcommaaccent 5 KPX Acircumflex U -32 KPX Acircumflex Uacute -32 KPX Acircumflex Ucircumflex -32 KPX Acircumflex Udieresis -32 KPX Acircumflex Ugrave -32 KPX Acircumflex Uhungarumlaut -32 KPX Acircumflex Umacron -32 KPX Acircumflex Uogonek -32 KPX Acircumflex Uring -32 KPX Acircumflex V -100 KPX Acircumflex W -84 KPX Acircumflex Y -70 KPX Acircumflex Yacute -70 KPX Acircumflex Ydieresis -70 KPX Acircumflex quotedblright -95 KPX Acircumflex quoteright -95 KPX Acircumflex u -15 KPX Acircumflex uacute -15 KPX Acircumflex ucircumflex -15 KPX Acircumflex udieresis -15 KPX Acircumflex ugrave -15 KPX Acircumflex uhungarumlaut -15 KPX Acircumflex umacron -15 KPX Acircumflex uogonek -15 KPX Acircumflex uring -15 KPX Acircumflex v -10 KPX Acircumflex w -25 KPX Acircumflex y -33 KPX Acircumflex yacute -33 KPX Acircumflex ydieresis -33 KPX Adieresis C 5 KPX Adieresis Cacute 5 KPX Adieresis Ccaron 5 KPX Adieresis Ccedilla 5 KPX Adieresis G 5 KPX Adieresis Gbreve 5 KPX Adieresis Gcommaaccent 5 KPX Adieresis O 5 KPX Adieresis Oacute 5 KPX Adieresis Ocircumflex 5 KPX Adieresis Odieresis 5 KPX Adieresis Ograve 5 KPX Adieresis Ohungarumlaut 5 KPX Adieresis Omacron 5 KPX Adieresis Oslash 5 KPX Adieresis Otilde 5 KPX Adieresis Q 5 KPX Adieresis T 5 KPX Adieresis Tcaron 5 KPX Adieresis Tcommaaccent 5 KPX Adieresis U -32 KPX Adieresis Uacute -32 KPX Adieresis Ucircumflex -32 KPX Adieresis Udieresis -32 KPX Adieresis Ugrave -32 KPX Adieresis Uhungarumlaut -32 KPX Adieresis Umacron -32 KPX Adieresis Uogonek -32 KPX Adieresis Uring -32 KPX Adieresis V -100 KPX Adieresis W -84 KPX Adieresis Y -70 KPX Adieresis Yacute -70 KPX Adieresis Ydieresis -70 KPX Adieresis quotedblright -95 KPX Adieresis quoteright -95 KPX Adieresis u -15 KPX Adieresis uacute -15 KPX Adieresis ucircumflex -15 KPX Adieresis udieresis -15 KPX Adieresis ugrave -15 KPX Adieresis uhungarumlaut -15 KPX Adieresis umacron -15 KPX Adieresis uogonek -15 KPX Adieresis uring -15 KPX Adieresis v -10 KPX Adieresis w -25 KPX Adieresis y -33 KPX Adieresis yacute -33 KPX Adieresis ydieresis -33 KPX Agrave C 5 KPX Agrave Cacute 5 KPX Agrave Ccaron 5 KPX Agrave Ccedilla 5 KPX Agrave G 5 KPX Agrave Gbreve 5 KPX Agrave Gcommaaccent 5 KPX Agrave O 5 KPX Agrave Oacute 5 KPX Agrave Ocircumflex 5 KPX Agrave Odieresis 5 KPX Agrave Ograve 5 KPX Agrave Ohungarumlaut 5 KPX Agrave Omacron 5 KPX Agrave Oslash 5 KPX Agrave Otilde 5 KPX Agrave Q 5 KPX Agrave T 5 KPX Agrave Tcaron 5 KPX Agrave Tcommaaccent 5 KPX Agrave U -32 KPX Agrave Uacute -32 KPX Agrave Ucircumflex -32 KPX Agrave Udieresis -32 KPX Agrave Ugrave -32 KPX Agrave Uhungarumlaut -32 KPX Agrave Umacron -32 KPX Agrave Uogonek -32 KPX Agrave Uring -32 KPX Agrave V -100 KPX Agrave W -84 KPX Agrave Y -70 KPX Agrave Yacute -70 KPX Agrave Ydieresis -70 KPX Agrave quotedblright -95 KPX Agrave quoteright -95 KPX Agrave u -15 KPX Agrave uacute -15 KPX Agrave ucircumflex -15 KPX Agrave udieresis -15 KPX Agrave ugrave -15 KPX Agrave uhungarumlaut -15 KPX Agrave umacron -15 KPX Agrave uogonek -15 KPX Agrave uring -15 KPX Agrave v -10 KPX Agrave w -25 KPX Agrave y -33 KPX Agrave yacute -33 KPX Agrave ydieresis -33 KPX Amacron C 5 KPX Amacron Cacute 5 KPX Amacron Ccaron 5 KPX Amacron Ccedilla 5 KPX Amacron G 5 KPX Amacron Gbreve 5 KPX Amacron Gcommaaccent 5 KPX Amacron O 5 KPX Amacron Oacute 5 KPX Amacron Ocircumflex 5 KPX Amacron Odieresis 5 KPX Amacron Ograve 5 KPX Amacron Ohungarumlaut 5 KPX Amacron Omacron 5 KPX Amacron Oslash 5 KPX Amacron Otilde 5 KPX Amacron Q 5 KPX Amacron T 5 KPX Amacron Tcaron 5 KPX Amacron Tcommaaccent 5 KPX Amacron U -32 KPX Amacron Uacute -32 KPX Amacron Ucircumflex -32 KPX Amacron Udieresis -32 KPX Amacron Ugrave -32 KPX Amacron Uhungarumlaut -32 KPX Amacron Umacron -32 KPX Amacron Uogonek -32 KPX Amacron Uring -32 KPX Amacron V -100 KPX Amacron W -84 KPX Amacron Y -70 KPX Amacron Yacute -70 KPX Amacron Ydieresis -70 KPX Amacron quotedblright -95 KPX Amacron quoteright -95 KPX Amacron u -15 KPX Amacron uacute -15 KPX Amacron ucircumflex -15 KPX Amacron udieresis -15 KPX Amacron ugrave -15 KPX Amacron uhungarumlaut -15 KPX Amacron umacron -15 KPX Amacron uogonek -15 KPX Amacron uring -15 KPX Amacron v -10 KPX Amacron w -25 KPX Amacron y -33 KPX Amacron yacute -33 KPX Amacron ydieresis -33 KPX Aogonek C 5 KPX Aogonek Cacute 5 KPX Aogonek Ccaron 5 KPX Aogonek Ccedilla 5 KPX Aogonek G 5 KPX Aogonek Gbreve 5 KPX Aogonek Gcommaaccent 5 KPX Aogonek O 5 KPX Aogonek Oacute 5 KPX Aogonek Ocircumflex 5 KPX Aogonek Odieresis 5 KPX Aogonek Ograve 5 KPX Aogonek Ohungarumlaut 5 KPX Aogonek Omacron 5 KPX Aogonek Oslash 5 KPX Aogonek Otilde 5 KPX Aogonek Q 5 KPX Aogonek T 5 KPX Aogonek Tcaron 5 KPX Aogonek Tcommaaccent 5 KPX Aogonek U -32 KPX Aogonek Uacute -32 KPX Aogonek Ucircumflex -32 KPX Aogonek Udieresis -32 KPX Aogonek Ugrave -32 KPX Aogonek Uhungarumlaut -32 KPX Aogonek Umacron -32 KPX Aogonek Uogonek -32 KPX Aogonek Uring -32 KPX Aogonek V -100 KPX Aogonek W -84 KPX Aogonek Y -70 KPX Aogonek Yacute -70 KPX Aogonek Ydieresis -70 KPX Aogonek quotedblright -95 KPX Aogonek quoteright -95 KPX Aogonek u -15 KPX Aogonek uacute -15 KPX Aogonek ucircumflex -15 KPX Aogonek udieresis -15 KPX Aogonek ugrave -15 KPX Aogonek uhungarumlaut -15 KPX Aogonek umacron -15 KPX Aogonek uogonek -15 KPX Aogonek uring -15 KPX Aogonek v -10 KPX Aogonek w -25 KPX Aring C 5 KPX Aring Cacute 5 KPX Aring Ccaron 5 KPX Aring Ccedilla 5 KPX Aring G 5 KPX Aring Gbreve 5 KPX Aring Gcommaaccent 5 KPX Aring O 5 KPX Aring Oacute 5 KPX Aring Ocircumflex 5 KPX Aring Odieresis 5 KPX Aring Ograve 5 KPX Aring Ohungarumlaut 5 KPX Aring Omacron 5 KPX Aring Oslash 5 KPX Aring Otilde 5 KPX Aring Q 5 KPX Aring T 5 KPX Aring Tcaron 5 KPX Aring Tcommaaccent 5 KPX Aring U -32 KPX Aring Uacute -32 KPX Aring Ucircumflex -32 KPX Aring Udieresis -32 KPX Aring Ugrave -32 KPX Aring Uhungarumlaut -32 KPX Aring Umacron -32 KPX Aring Uogonek -32 KPX Aring Uring -32 KPX Aring V -100 KPX Aring W -84 KPX Aring Y -70 KPX Aring Yacute -70 KPX Aring Ydieresis -70 KPX Aring quotedblright -95 KPX Aring quoteright -95 KPX Aring u -15 KPX Aring uacute -15 KPX Aring ucircumflex -15 KPX Aring udieresis -15 KPX Aring ugrave -15 KPX Aring uhungarumlaut -15 KPX Aring umacron -15 KPX Aring uogonek -15 KPX Aring uring -15 KPX Aring v -10 KPX Aring w -25 KPX Aring y -33 KPX Aring yacute -33 KPX Aring ydieresis -33 KPX Atilde C 5 KPX Atilde Cacute 5 KPX Atilde Ccaron 5 KPX Atilde Ccedilla 5 KPX Atilde G 5 KPX Atilde Gbreve 5 KPX Atilde Gcommaaccent 5 KPX Atilde O 5 KPX Atilde Oacute 5 KPX Atilde Ocircumflex 5 KPX Atilde Odieresis 5 KPX Atilde Ograve 5 KPX Atilde Ohungarumlaut 5 KPX Atilde Omacron 5 KPX Atilde Oslash 5 KPX Atilde Otilde 5 KPX Atilde Q 5 KPX Atilde T 5 KPX Atilde Tcaron 5 KPX Atilde Tcommaaccent 5 KPX Atilde U -32 KPX Atilde Uacute -32 KPX Atilde Ucircumflex -32 KPX Atilde Udieresis -32 KPX Atilde Ugrave -32 KPX Atilde Uhungarumlaut -32 KPX Atilde Umacron -32 KPX Atilde Uogonek -32 KPX Atilde Uring -32 KPX Atilde V -100 KPX Atilde W -84 KPX Atilde Y -70 KPX Atilde Yacute -70 KPX Atilde Ydieresis -70 KPX Atilde quotedblright -95 KPX Atilde quoteright -95 KPX Atilde u -15 KPX Atilde uacute -15 KPX Atilde ucircumflex -15 KPX Atilde udieresis -15 KPX Atilde ugrave -15 KPX Atilde uhungarumlaut -15 KPX Atilde umacron -15 KPX Atilde uogonek -15 KPX Atilde uring -15 KPX Atilde v -10 KPX Atilde w -25 KPX Atilde y -33 KPX Atilde yacute -33 KPX Atilde ydieresis -33 KPX B A -11 KPX B Aacute -11 KPX B Abreve -11 KPX B Acircumflex -11 KPX B Adieresis -11 KPX B Agrave -11 KPX B Amacron -11 KPX B Aogonek -11 KPX B Aring -11 KPX B Atilde -11 KPX B U 15 KPX B Uacute 15 KPX B Ucircumflex 15 KPX B Udieresis 15 KPX B Ugrave 15 KPX B Uhungarumlaut 15 KPX B Umacron 15 KPX B Uogonek 15 KPX B Uring 15 KPX B comma 15 KPX B period 15 KPX C A -5 KPX C Aacute -5 KPX C Abreve -5 KPX C Acircumflex -5 KPX C Adieresis -5 KPX C Agrave -5 KPX C Amacron -5 KPX C Aogonek -5 KPX C Aring -5 KPX C Atilde -5 KPX Cacute A -5 KPX Cacute Aacute -5 KPX Cacute Abreve -5 KPX Cacute Acircumflex -5 KPX Cacute Adieresis -5 KPX Cacute Agrave -5 KPX Cacute Amacron -5 KPX Cacute Aogonek -5 KPX Cacute Aring -5 KPX Cacute Atilde -5 KPX Ccaron A -5 KPX Ccaron Aacute -5 KPX Ccaron Abreve -5 KPX Ccaron Acircumflex -5 KPX Ccaron Adieresis -5 KPX Ccaron Agrave -5 KPX Ccaron Amacron -5 KPX Ccaron Aogonek -5 KPX Ccaron Aring -5 KPX Ccaron Atilde -5 KPX Ccedilla A -5 KPX Ccedilla Aacute -5 KPX Ccedilla Abreve -5 KPX Ccedilla Acircumflex -5 KPX Ccedilla Adieresis -5 KPX Ccedilla Agrave -5 KPX Ccedilla Amacron -5 KPX Ccedilla Aogonek -5 KPX Ccedilla Aring -5 KPX Ccedilla Atilde -5 KPX D V -18 KPX D W -11 KPX D Y 6 KPX D Yacute 6 KPX D Ydieresis 6 KPX D comma -11 KPX D period -11 KPX Dcaron V -18 KPX Dcaron W -11 KPX Dcaron Y 6 KPX Dcaron Yacute 6 KPX Dcaron Ydieresis 6 KPX Dcaron comma -11 KPX Dcaron period -11 KPX Dcroat V -18 KPX Dcroat W -11 KPX Dcroat Y 6 KPX Dcroat Yacute 6 KPX Dcroat Ydieresis 6 KPX Dcroat comma -11 KPX Dcroat period -11 KPX F A -79 KPX F Aacute -79 KPX F Abreve -79 KPX F Acircumflex -79 KPX F Adieresis -79 KPX F Agrave -79 KPX F Amacron -79 KPX F Aogonek -79 KPX F Aring -79 KPX F Atilde -79 KPX F a -47 KPX F aacute -47 KPX F abreve -47 KPX F acircumflex -47 KPX F adieresis -47 KPX F agrave -47 KPX F amacron -47 KPX F aogonek -47 KPX F aring -47 KPX F atilde -47 KPX F comma -91 KPX F e -41 KPX F eacute -41 KPX F ecaron -41 KPX F ecircumflex -41 KPX F edieresis -41 KPX F edotaccent -41 KPX F egrave -41 KPX F emacron -41 KPX F eogonek -41 KPX F i -41 KPX F iacute -41 KPX F icircumflex -41 KPX F idieresis -41 KPX F igrave -41 KPX F imacron -41 KPX F iogonek -41 KPX F o -47 KPX F oacute -47 KPX F ocircumflex -47 KPX F odieresis -47 KPX F ograve -47 KPX F ohungarumlaut -47 KPX F omacron -47 KPX F oslash -47 KPX F otilde -47 KPX F period -91 KPX F r -27 KPX F racute -27 KPX F rcaron -27 KPX F rcommaaccent -27 KPX J A -30 KPX J Aacute -30 KPX J Abreve -30 KPX J Acircumflex -30 KPX J Adieresis -30 KPX J Agrave -30 KPX J Amacron -30 KPX J Aogonek -30 KPX J Aring -30 KPX J Atilde -30 KPX J a -40 KPX J aacute -40 KPX J abreve -40 KPX J acircumflex -40 KPX J adieresis -40 KPX J agrave -40 KPX J amacron -40 KPX J aogonek -40 KPX J aring -40 KPX J atilde -40 KPX J comma -74 KPX J e -33 KPX J eacute -33 KPX J ecaron -33 KPX J ecircumflex -33 KPX J edieresis -33 KPX J edotaccent -33 KPX J egrave -33 KPX J emacron -33 KPX J eogonek -33 KPX J o -40 KPX J oacute -40 KPX J ocircumflex -40 KPX J odieresis -40 KPX J ograve -40 KPX J ohungarumlaut -40 KPX J omacron -40 KPX J oslash -40 KPX J otilde -40 KPX J period -74 KPX J u -39 KPX J uacute -39 KPX J ucircumflex -39 KPX J udieresis -39 KPX J ugrave -39 KPX J uhungarumlaut -39 KPX J umacron -39 KPX J uogonek -39 KPX J uring -39 KPX K e 18 KPX K eacute 18 KPX K ecaron 18 KPX K ecircumflex 18 KPX K edieresis 18 KPX K edotaccent 18 KPX K egrave 18 KPX K emacron 18 KPX K eogonek 18 KPX K o -4 KPX K oacute -4 KPX K ocircumflex -4 KPX K odieresis -4 KPX K ograve -4 KPX K ohungarumlaut -4 KPX K omacron -4 KPX K oslash -4 KPX K otilde -4 KPX K u -4 KPX K uacute -4 KPX K ucircumflex -4 KPX K udieresis -4 KPX K ugrave -4 KPX K uhungarumlaut -4 KPX K umacron -4 KPX K uogonek -4 KPX K uring -4 KPX K y -48 KPX K yacute -48 KPX K ydieresis -48 KPX Kcommaaccent e 18 KPX Kcommaaccent eacute 18 KPX Kcommaaccent ecaron 18 KPX Kcommaaccent ecircumflex 18 KPX Kcommaaccent edieresis 18 KPX Kcommaaccent edotaccent 18 KPX Kcommaaccent egrave 18 KPX Kcommaaccent emacron 18 KPX Kcommaaccent eogonek 18 KPX Kcommaaccent o -4 KPX Kcommaaccent oacute -4 KPX Kcommaaccent ocircumflex -4 KPX Kcommaaccent odieresis -4 KPX Kcommaaccent ograve -4 KPX Kcommaaccent ohungarumlaut -4 KPX Kcommaaccent omacron -4 KPX Kcommaaccent oslash -4 KPX Kcommaaccent otilde -4 KPX Kcommaaccent u -4 KPX Kcommaaccent uacute -4 KPX Kcommaaccent ucircumflex -4 KPX Kcommaaccent udieresis -4 KPX Kcommaaccent ugrave -4 KPX Kcommaaccent uhungarumlaut -4 KPX Kcommaaccent umacron -4 KPX Kcommaaccent uogonek -4 KPX Kcommaaccent uring -4 KPX Kcommaaccent y -48 KPX Kcommaaccent yacute -48 KPX Kcommaaccent ydieresis -48 KPX L T -75 KPX L Tcaron -75 KPX L Tcommaaccent -75 KPX L V -97 KPX L W -69 KPX L Y -55 KPX L Yacute -55 KPX L Ydieresis -55 KPX L quotedblright -100 KPX L quoteright -100 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -75 KPX Lacute Tcaron -75 KPX Lacute Tcommaaccent -75 KPX Lacute V -97 KPX Lacute W -69 KPX Lacute Y -55 KPX Lacute Yacute -55 KPX Lacute Ydieresis -55 KPX Lacute quotedblright -100 KPX Lacute quoteright -100 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcommaaccent T -75 KPX Lcommaaccent Tcaron -75 KPX Lcommaaccent Tcommaaccent -75 KPX Lcommaaccent V -97 KPX Lcommaaccent W -69 KPX Lcommaaccent Y -55 KPX Lcommaaccent Yacute -55 KPX Lcommaaccent Ydieresis -55 KPX Lcommaaccent quotedblright -100 KPX Lcommaaccent quoteright -100 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -75 KPX Lslash Tcaron -75 KPX Lslash Tcommaaccent -75 KPX Lslash V -97 KPX Lslash W -69 KPX Lslash Y -55 KPX Lslash Yacute -55 KPX Lslash Ydieresis -55 KPX Lslash quotedblright -100 KPX Lslash quoteright -100 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX N comma -49 KPX N period -49 KPX Nacute comma -49 KPX Nacute period -49 KPX Ncaron comma -49 KPX Ncaron period -49 KPX Ncommaaccent comma -49 KPX Ncommaaccent period -49 KPX Ntilde comma -49 KPX Ntilde period -49 KPX O A -5 KPX O Aacute -5 KPX O Abreve -5 KPX O Acircumflex -5 KPX O Adieresis -5 KPX O Agrave -5 KPX O Amacron -5 KPX O Aogonek -5 KPX O Aring -5 KPX O Atilde -5 KPX O V -24 KPX O W -15 KPX O X -18 KPX O comma -18 KPX O period -18 KPX Oacute A -5 KPX Oacute Aacute -5 KPX Oacute Abreve -5 KPX Oacute Acircumflex -5 KPX Oacute Adieresis -5 KPX Oacute Agrave -5 KPX Oacute Amacron -5 KPX Oacute Aogonek -5 KPX Oacute Aring -5 KPX Oacute Atilde -5 KPX Oacute V -24 KPX Oacute W -15 KPX Oacute X -18 KPX Oacute comma -18 KPX Oacute period -18 KPX Ocircumflex A -5 KPX Ocircumflex Aacute -5 KPX Ocircumflex Abreve -5 KPX Ocircumflex Acircumflex -5 KPX Ocircumflex Adieresis -5 KPX Ocircumflex Agrave -5 KPX Ocircumflex Amacron -5 KPX Ocircumflex Aogonek -5 KPX Ocircumflex Aring -5 KPX Ocircumflex Atilde -5 KPX Ocircumflex V -24 KPX Ocircumflex W -15 KPX Ocircumflex X -18 KPX Ocircumflex comma -18 KPX Ocircumflex period -18 KPX Odieresis A -5 KPX Odieresis Aacute -5 KPX Odieresis Abreve -5 KPX Odieresis Acircumflex -5 KPX Odieresis Adieresis -5 KPX Odieresis Agrave -5 KPX Odieresis Amacron -5 KPX Odieresis Aogonek -5 KPX Odieresis Aring -5 KPX Odieresis Atilde -5 KPX Odieresis V -24 KPX Odieresis W -15 KPX Odieresis X -18 KPX Odieresis comma -18 KPX Odieresis period -18 KPX Ograve A -5 KPX Ograve Aacute -5 KPX Ograve Abreve -5 KPX Ograve Acircumflex -5 KPX Ograve Adieresis -5 KPX Ograve Agrave -5 KPX Ograve Amacron -5 KPX Ograve Aogonek -5 KPX Ograve Aring -5 KPX Ograve Atilde -5 KPX Ograve V -24 KPX Ograve W -15 KPX Ograve X -18 KPX Ograve comma -18 KPX Ograve period -18 KPX Ohungarumlaut A -5 KPX Ohungarumlaut Aacute -5 KPX Ohungarumlaut Abreve -5 KPX Ohungarumlaut Acircumflex -5 KPX Ohungarumlaut Adieresis -5 KPX Ohungarumlaut Agrave -5 KPX Ohungarumlaut Amacron -5 KPX Ohungarumlaut Aogonek -5 KPX Ohungarumlaut Aring -5 KPX Ohungarumlaut Atilde -5 KPX Ohungarumlaut V -24 KPX Ohungarumlaut W -15 KPX Ohungarumlaut X -18 KPX Ohungarumlaut comma -18 KPX Ohungarumlaut period -18 KPX Omacron A -5 KPX Omacron Aacute -5 KPX Omacron Abreve -5 KPX Omacron Acircumflex -5 KPX Omacron Adieresis -5 KPX Omacron Agrave -5 KPX Omacron Amacron -5 KPX Omacron Aogonek -5 KPX Omacron Aring -5 KPX Omacron Atilde -5 KPX Omacron V -24 KPX Omacron W -15 KPX Omacron X -18 KPX Omacron comma -18 KPX Omacron period -18 KPX Oslash A -5 KPX Oslash Aacute -5 KPX Oslash Abreve -5 KPX Oslash Acircumflex -5 KPX Oslash Adieresis -5 KPX Oslash Agrave -5 KPX Oslash Amacron -5 KPX Oslash Aogonek -5 KPX Oslash Aring -5 KPX Oslash Atilde -5 KPX Oslash V -24 KPX Oslash W -15 KPX Oslash X -18 KPX Oslash comma -18 KPX Oslash period -18 KPX Otilde A -5 KPX Otilde Aacute -5 KPX Otilde Abreve -5 KPX Otilde Acircumflex -5 KPX Otilde Adieresis -5 KPX Otilde Agrave -5 KPX Otilde Amacron -5 KPX Otilde Aogonek -5 KPX Otilde Aring -5 KPX Otilde Atilde -5 KPX Otilde V -24 KPX Otilde W -15 KPX Otilde X -18 KPX Otilde comma -18 KPX Otilde period -18 KPX P A -80 KPX P Aacute -80 KPX P Abreve -80 KPX P Acircumflex -80 KPX P Adieresis -80 KPX P Agrave -80 KPX P Amacron -80 KPX P Aogonek -80 KPX P Aring -80 KPX P Atilde -80 KPX P a -40 KPX P aacute -40 KPX P abreve -40 KPX P acircumflex -40 KPX P adieresis -40 KPX P agrave -40 KPX P amacron -40 KPX P aogonek -40 KPX P aring -40 KPX P atilde -40 KPX P comma -100 KPX P e -33 KPX P eacute -33 KPX P ecaron -33 KPX P ecircumflex -33 KPX P edieresis -33 KPX P edotaccent -33 KPX P egrave -33 KPX P emacron -33 KPX P eogonek -33 KPX P o -40 KPX P oacute -40 KPX P ocircumflex -40 KPX P odieresis -40 KPX P ograve -40 KPX P ohungarumlaut -40 KPX P omacron -40 KPX P oslash -40 KPX P otilde -40 KPX P period -100 KPX R V -24 KPX R W -14 KPX Racute V -24 KPX Racute W -14 KPX Rcaron V -24 KPX Rcaron W -14 KPX Rcommaaccent V -24 KPX Rcommaaccent W -14 KPX S comma -18 KPX S period -18 KPX Sacute comma -18 KPX Sacute period -18 KPX Scaron comma -18 KPX Scaron period -18 KPX Scedilla comma -18 KPX Scedilla period -18 KPX Scommaaccent comma -18 KPX Scommaaccent period -18 KPX T A -60 KPX T Aacute -60 KPX T Abreve -60 KPX T Acircumflex -60 KPX T Adieresis -60 KPX T Agrave -60 KPX T Amacron -60 KPX T Aogonek -60 KPX T Aring -60 KPX T Atilde -60 KPX T O 11 KPX T Oacute 11 KPX T Ocircumflex 11 KPX T Odieresis 11 KPX T Ograve 11 KPX T Ohungarumlaut 11 KPX T Omacron 11 KPX T Oslash 11 KPX T Otilde 11 KPX T a -40 KPX T aacute -40 KPX T abreve -40 KPX T acircumflex -40 KPX T adieresis -40 KPX T agrave -40 KPX T amacron -40 KPX T aogonek -40 KPX T aring -40 KPX T atilde -40 KPX T comma -55 KPX T e -33 KPX T eacute -33 KPX T ecaron -33 KPX T ecircumflex -33 KPX T edieresis -33 KPX T edotaccent -33 KPX T egrave -33 KPX T emacron -33 KPX T eogonek -33 KPX T h -9 KPX T hyphen -75 KPX T i -22 KPX T iacute -22 KPX T icircumflex -22 KPX T idieresis -22 KPX T igrave -22 KPX T imacron -22 KPX T iogonek -22 KPX T o -40 KPX T oacute -40 KPX T ocircumflex -40 KPX T odieresis -40 KPX T ograve -40 KPX T ohungarumlaut -40 KPX T omacron -40 KPX T oslash -40 KPX T otilde -40 KPX T period -55 KPX T r -9 KPX T racute -9 KPX T rcaron -9 KPX T rcommaaccent -9 KPX T u -22 KPX T uacute -22 KPX T ucircumflex -22 KPX T udieresis -22 KPX T ugrave -22 KPX T uhungarumlaut -22 KPX T umacron -22 KPX T uogonek -22 KPX T uring -22 KPX T w -30 KPX T y -30 KPX T yacute -30 KPX T ydieresis -30 KPX Tcaron A -60 KPX Tcaron Aacute -60 KPX Tcaron Abreve -60 KPX Tcaron Acircumflex -60 KPX Tcaron Adieresis -60 KPX Tcaron Agrave -60 KPX Tcaron Amacron -60 KPX Tcaron Aogonek -60 KPX Tcaron Aring -60 KPX Tcaron Atilde -60 KPX Tcaron O 11 KPX Tcaron Oacute 11 KPX Tcaron Ocircumflex 11 KPX Tcaron Odieresis 11 KPX Tcaron Ograve 11 KPX Tcaron Ohungarumlaut 11 KPX Tcaron Omacron 11 KPX Tcaron Oslash 11 KPX Tcaron Otilde 11 KPX Tcaron a -40 KPX Tcaron aacute -40 KPX Tcaron abreve -40 KPX Tcaron acircumflex -40 KPX Tcaron adieresis -40 KPX Tcaron agrave -40 KPX Tcaron amacron -40 KPX Tcaron aogonek -40 KPX Tcaron aring -40 KPX Tcaron atilde -40 KPX Tcaron comma -55 KPX Tcaron e -33 KPX Tcaron eacute -33 KPX Tcaron ecaron -33 KPX Tcaron ecircumflex -33 KPX Tcaron edieresis -33 KPX Tcaron edotaccent -33 KPX Tcaron egrave -33 KPX Tcaron emacron -33 KPX Tcaron eogonek -33 KPX Tcaron h -9 KPX Tcaron hyphen -75 KPX Tcaron i -22 KPX Tcaron iacute -22 KPX Tcaron icircumflex -22 KPX Tcaron idieresis -22 KPX Tcaron igrave -22 KPX Tcaron imacron -22 KPX Tcaron iogonek -22 KPX Tcaron o -40 KPX Tcaron oacute -40 KPX Tcaron ocircumflex -40 KPX Tcaron odieresis -40 KPX Tcaron ograve -40 KPX Tcaron ohungarumlaut -40 KPX Tcaron omacron -40 KPX Tcaron oslash -40 KPX Tcaron otilde -40 KPX Tcaron period -55 KPX Tcaron r -9 KPX Tcaron racute -9 KPX Tcaron rcaron -9 KPX Tcaron rcommaaccent -9 KPX Tcaron u -22 KPX Tcaron uacute -22 KPX Tcaron ucircumflex -22 KPX Tcaron udieresis -22 KPX Tcaron ugrave -22 KPX Tcaron uhungarumlaut -22 KPX Tcaron umacron -22 KPX Tcaron uogonek -22 KPX Tcaron uring -22 KPX Tcaron w -30 KPX Tcaron y -30 KPX Tcaron yacute -30 KPX Tcaron ydieresis -30 KPX Tcommaaccent A -60 KPX Tcommaaccent Aacute -60 KPX Tcommaaccent Abreve -60 KPX Tcommaaccent Acircumflex -60 KPX Tcommaaccent Adieresis -60 KPX Tcommaaccent Agrave -60 KPX Tcommaaccent Amacron -60 KPX Tcommaaccent Aogonek -60 KPX Tcommaaccent Aring -60 KPX Tcommaaccent Atilde -60 KPX Tcommaaccent O 11 KPX Tcommaaccent Oacute 11 KPX Tcommaaccent Ocircumflex 11 KPX Tcommaaccent Odieresis 11 KPX Tcommaaccent Ograve 11 KPX Tcommaaccent Ohungarumlaut 11 KPX Tcommaaccent Omacron 11 KPX Tcommaaccent Oslash 11 KPX Tcommaaccent Otilde 11 KPX Tcommaaccent a -40 KPX Tcommaaccent aacute -40 KPX Tcommaaccent abreve -40 KPX Tcommaaccent acircumflex -40 KPX Tcommaaccent adieresis -40 KPX Tcommaaccent agrave -40 KPX Tcommaaccent amacron -40 KPX Tcommaaccent aogonek -40 KPX Tcommaaccent aring -40 KPX Tcommaaccent atilde -40 KPX Tcommaaccent comma -55 KPX Tcommaaccent e -33 KPX Tcommaaccent eacute -33 KPX Tcommaaccent ecaron -33 KPX Tcommaaccent ecircumflex -33 KPX Tcommaaccent edieresis -33 KPX Tcommaaccent edotaccent -33 KPX Tcommaaccent egrave -33 KPX Tcommaaccent emacron -33 KPX Tcommaaccent eogonek -33 KPX Tcommaaccent h -9 KPX Tcommaaccent hyphen -75 KPX Tcommaaccent i -22 KPX Tcommaaccent iacute -22 KPX Tcommaaccent icircumflex -22 KPX Tcommaaccent idieresis -22 KPX Tcommaaccent igrave -22 KPX Tcommaaccent imacron -22 KPX Tcommaaccent iogonek -22 KPX Tcommaaccent o -40 KPX Tcommaaccent oacute -40 KPX Tcommaaccent ocircumflex -40 KPX Tcommaaccent odieresis -40 KPX Tcommaaccent ograve -40 KPX Tcommaaccent ohungarumlaut -40 KPX Tcommaaccent omacron -40 KPX Tcommaaccent oslash -40 KPX Tcommaaccent otilde -40 KPX Tcommaaccent period -55 KPX Tcommaaccent r -9 KPX Tcommaaccent racute -9 KPX Tcommaaccent rcaron -9 KPX Tcommaaccent rcommaaccent -9 KPX Tcommaaccent u -22 KPX Tcommaaccent uacute -22 KPX Tcommaaccent ucircumflex -22 KPX Tcommaaccent udieresis -22 KPX Tcommaaccent ugrave -22 KPX Tcommaaccent uhungarumlaut -22 KPX Tcommaaccent umacron -22 KPX Tcommaaccent uogonek -22 KPX Tcommaaccent uring -22 KPX Tcommaaccent w -30 KPX Tcommaaccent y -30 KPX Tcommaaccent yacute -30 KPX Tcommaaccent ydieresis -30 KPX U A -42 KPX U Aacute -42 KPX U Abreve -42 KPX U Acircumflex -42 KPX U Adieresis -42 KPX U Agrave -42 KPX U Amacron -42 KPX U Aogonek -42 KPX U Aring -42 KPX U Atilde -42 KPX U comma -25 KPX U period -25 KPX Uacute A -42 KPX Uacute Aacute -42 KPX Uacute Abreve -42 KPX Uacute Acircumflex -42 KPX Uacute Adieresis -42 KPX Uacute Agrave -42 KPX Uacute Amacron -42 KPX Uacute Aogonek -42 KPX Uacute Aring -42 KPX Uacute Atilde -42 KPX Uacute comma -25 KPX Uacute period -25 KPX Ucircumflex A -42 KPX Ucircumflex Aacute -42 KPX Ucircumflex Abreve -42 KPX Ucircumflex Acircumflex -42 KPX Ucircumflex Adieresis -42 KPX Ucircumflex Agrave -42 KPX Ucircumflex Amacron -42 KPX Ucircumflex Aogonek -42 KPX Ucircumflex Aring -42 KPX Ucircumflex Atilde -42 KPX Ucircumflex comma -25 KPX Ucircumflex period -25 KPX Udieresis A -42 KPX Udieresis Aacute -42 KPX Udieresis Abreve -42 KPX Udieresis Acircumflex -42 KPX Udieresis Adieresis -42 KPX Udieresis Agrave -42 KPX Udieresis Amacron -42 KPX Udieresis Aogonek -42 KPX Udieresis Aring -42 KPX Udieresis Atilde -42 KPX Udieresis comma -25 KPX Udieresis period -25 KPX Ugrave A -42 KPX Ugrave Aacute -42 KPX Ugrave Abreve -42 KPX Ugrave Acircumflex -42 KPX Ugrave Adieresis -42 KPX Ugrave Agrave -42 KPX Ugrave Amacron -42 KPX Ugrave Aogonek -42 KPX Ugrave Aring -42 KPX Ugrave Atilde -42 KPX Ugrave comma -25 KPX Ugrave period -25 KPX Uhungarumlaut A -42 KPX Uhungarumlaut Aacute -42 KPX Uhungarumlaut Abreve -42 KPX Uhungarumlaut Acircumflex -42 KPX Uhungarumlaut Adieresis -42 KPX Uhungarumlaut Agrave -42 KPX Uhungarumlaut Amacron -42 KPX Uhungarumlaut Aogonek -42 KPX Uhungarumlaut Aring -42 KPX Uhungarumlaut Atilde -42 KPX Uhungarumlaut comma -25 KPX Uhungarumlaut period -25 KPX Umacron A -42 KPX Umacron Aacute -42 KPX Umacron Abreve -42 KPX Umacron Acircumflex -42 KPX Umacron Adieresis -42 KPX Umacron Agrave -42 KPX Umacron Amacron -42 KPX Umacron Aogonek -42 KPX Umacron Aring -42 KPX Umacron Atilde -42 KPX Umacron comma -25 KPX Umacron period -25 KPX Uogonek A -42 KPX Uogonek Aacute -42 KPX Uogonek Abreve -42 KPX Uogonek Acircumflex -42 KPX Uogonek Adieresis -42 KPX Uogonek Agrave -42 KPX Uogonek Amacron -42 KPX Uogonek Aogonek -42 KPX Uogonek Aring -42 KPX Uogonek Atilde -42 KPX Uogonek comma -25 KPX Uogonek period -25 KPX Uring A -42 KPX Uring Aacute -42 KPX Uring Abreve -42 KPX Uring Acircumflex -42 KPX Uring Adieresis -42 KPX Uring Agrave -42 KPX Uring Amacron -42 KPX Uring Aogonek -42 KPX Uring Aring -42 KPX Uring Atilde -42 KPX Uring comma -25 KPX Uring period -25 KPX V A -100 KPX V Aacute -100 KPX V Abreve -100 KPX V Acircumflex -100 KPX V Adieresis -100 KPX V Agrave -100 KPX V Amacron -100 KPX V Aogonek -100 KPX V Aring -100 KPX V Atilde -100 KPX V G -12 KPX V Gbreve -12 KPX V Gcommaaccent -12 KPX V O -19 KPX V Oacute -19 KPX V Ocircumflex -19 KPX V Odieresis -19 KPX V Ograve -19 KPX V Ohungarumlaut -19 KPX V Omacron -19 KPX V Oslash -19 KPX V Otilde -19 KPX V a -55 KPX V aacute -55 KPX V abreve -55 KPX V acircumflex -55 KPX V adieresis -55 KPX V agrave -55 KPX V amacron -55 KPX V aogonek -55 KPX V aring -55 KPX V atilde -55 KPX V colon -49 KPX V comma -94 KPX V e -66 KPX V eacute -66 KPX V ecaron -66 KPX V ecircumflex -66 KPX V edieresis -66 KPX V edotaccent -66 KPX V egrave -66 KPX V emacron -66 KPX V eogonek -66 KPX V hyphen -94 KPX V i -35 KPX V iacute -35 KPX V iogonek -35 KPX V o -71 KPX V oacute -71 KPX V ocircumflex -71 KPX V odieresis -71 KPX V ograve -71 KPX V ohungarumlaut -71 KPX V omacron -71 KPX V oslash -71 KPX V otilde -71 KPX V period -94 KPX V semicolon 6 KPX V u -70 KPX V uacute -70 KPX V ucircumflex -70 KPX V udieresis -70 KPX V ugrave -70 KPX V uhungarumlaut -70 KPX V umacron -70 KPX V uogonek -70 KPX V uring -70 KPX W A -66 KPX W Aacute -66 KPX W Abreve -66 KPX W Acircumflex -66 KPX W Adieresis -66 KPX W Agrave -66 KPX W Amacron -66 KPX W Aogonek -66 KPX W Aring -66 KPX W Atilde -66 KPX W O -11 KPX W Oacute -11 KPX W Ocircumflex -11 KPX W Odieresis -11 KPX W Ograve -11 KPX W Ohungarumlaut -11 KPX W Omacron -11 KPX W Oslash -11 KPX W Otilde -11 KPX W a -33 KPX W aacute -33 KPX W abreve -33 KPX W acircumflex -33 KPX W adieresis -33 KPX W agrave -33 KPX W amacron -33 KPX W aogonek -33 KPX W aring -33 KPX W atilde -33 KPX W colon -22 KPX W comma -86 KPX W e -39 KPX W eacute -39 KPX W ecaron -39 KPX W ecircumflex -39 KPX W edieresis -39 KPX W edotaccent -39 KPX W egrave -39 KPX W emacron -39 KPX W eogonek -39 KPX W h 5 KPX W hyphen -61 KPX W i -27 KPX W iacute -27 KPX W iogonek -27 KPX W o -33 KPX W oacute -33 KPX W ocircumflex -33 KPX W odieresis -33 KPX W ograve -33 KPX W ohungarumlaut -33 KPX W omacron -33 KPX W oslash -33 KPX W otilde -33 KPX W period -86 KPX W semicolon -22 KPX W u -25 KPX W uacute -25 KPX W ucircumflex -25 KPX W udieresis -25 KPX W ugrave -25 KPX W uhungarumlaut -25 KPX W umacron -25 KPX W uogonek -25 KPX W uring -25 KPX W y -41 KPX W yacute -41 KPX W ydieresis -41 KPX Y A -79 KPX Y Aacute -79 KPX Y Abreve -79 KPX Y Acircumflex -79 KPX Y Adieresis -79 KPX Y Agrave -79 KPX Y Amacron -79 KPX Y Aogonek -79 KPX Y Aring -79 KPX Y Atilde -79 KPX Y a -77 KPX Y aacute -77 KPX Y abreve -77 KPX Y acircumflex -77 KPX Y adieresis -77 KPX Y agrave -77 KPX Y amacron -77 KPX Y aogonek -77 KPX Y aring -77 KPX Y atilde -77 KPX Y colon -55 KPX Y comma -91 KPX Y e -71 KPX Y eacute -71 KPX Y ecaron -71 KPX Y ecircumflex -71 KPX Y edieresis -31 KPX Y edotaccent -71 KPX Y egrave -31 KPX Y emacron -71 KPX Y eogonek -71 KPX Y hyphen -91 KPX Y i -22 KPX Y iacute -22 KPX Y icircumflex -22 KPX Y iogonek -22 KPX Y o -77 KPX Y oacute -77 KPX Y ocircumflex -77 KPX Y odieresis -77 KPX Y ograve -77 KPX Y ohungarumlaut -77 KPX Y omacron -77 KPX Y oslash -77 KPX Y otilde -77 KPX Y period -91 KPX Y semicolon -55 KPX Y u -58 KPX Y uacute -58 KPX Y ucircumflex -58 KPX Y udieresis -58 KPX Y ugrave -58 KPX Y uhungarumlaut -58 KPX Y umacron -58 KPX Y uogonek -58 KPX Y uring -58 KPX Yacute A -79 KPX Yacute Aacute -79 KPX Yacute Abreve -79 KPX Yacute Acircumflex -79 KPX Yacute Adieresis -79 KPX Yacute Agrave -79 KPX Yacute Amacron -79 KPX Yacute Aogonek -79 KPX Yacute Aring -79 KPX Yacute Atilde -79 KPX Yacute a -77 KPX Yacute aacute -77 KPX Yacute abreve -77 KPX Yacute acircumflex -77 KPX Yacute adieresis -77 KPX Yacute agrave -77 KPX Yacute amacron -77 KPX Yacute aogonek -77 KPX Yacute aring -77 KPX Yacute atilde -77 KPX Yacute colon -55 KPX Yacute comma -91 KPX Yacute e -71 KPX Yacute eacute -71 KPX Yacute ecaron -71 KPX Yacute ecircumflex -71 KPX Yacute edieresis -31 KPX Yacute edotaccent -71 KPX Yacute egrave -31 KPX Yacute emacron -71 KPX Yacute eogonek -71 KPX Yacute hyphen -91 KPX Yacute i -22 KPX Yacute iacute -22 KPX Yacute icircumflex -22 KPX Yacute iogonek -22 KPX Yacute o -77 KPX Yacute oacute -77 KPX Yacute ocircumflex -77 KPX Yacute odieresis -77 KPX Yacute ograve -77 KPX Yacute ohungarumlaut -77 KPX Yacute omacron -77 KPX Yacute oslash -77 KPX Yacute otilde -77 KPX Yacute period -91 KPX Yacute semicolon -55 KPX Yacute u -58 KPX Yacute uacute -58 KPX Yacute ucircumflex -58 KPX Yacute udieresis -58 KPX Yacute ugrave -58 KPX Yacute uhungarumlaut -58 KPX Yacute umacron -58 KPX Yacute uogonek -58 KPX Yacute uring -58 KPX Ydieresis A -79 KPX Ydieresis Aacute -79 KPX Ydieresis Abreve -79 KPX Ydieresis Acircumflex -79 KPX Ydieresis Adieresis -79 KPX Ydieresis Agrave -79 KPX Ydieresis Amacron -79 KPX Ydieresis Aogonek -79 KPX Ydieresis Aring -79 KPX Ydieresis Atilde -79 KPX Ydieresis a -77 KPX Ydieresis aacute -77 KPX Ydieresis abreve -77 KPX Ydieresis acircumflex -77 KPX Ydieresis adieresis -77 KPX Ydieresis agrave -77 KPX Ydieresis amacron -77 KPX Ydieresis aogonek -77 KPX Ydieresis aring -77 KPX Ydieresis atilde -77 KPX Ydieresis colon -55 KPX Ydieresis comma -91 KPX Ydieresis e -71 KPX Ydieresis eacute -71 KPX Ydieresis ecaron -71 KPX Ydieresis ecircumflex -71 KPX Ydieresis edieresis -31 KPX Ydieresis edotaccent -71 KPX Ydieresis egrave -31 KPX Ydieresis emacron -71 KPX Ydieresis eogonek -71 KPX Ydieresis hyphen -91 KPX Ydieresis i -22 KPX Ydieresis iacute -22 KPX Ydieresis icircumflex -22 KPX Ydieresis iogonek -22 KPX Ydieresis o -77 KPX Ydieresis oacute -77 KPX Ydieresis ocircumflex -77 KPX Ydieresis odieresis -77 KPX Ydieresis ograve -77 KPX Ydieresis ohungarumlaut -77 KPX Ydieresis omacron -77 KPX Ydieresis oslash -77 KPX Ydieresis otilde -77 KPX Ydieresis period -91 KPX Ydieresis semicolon -55 KPX Ydieresis u -58 KPX Ydieresis uacute -58 KPX Ydieresis ucircumflex -58 KPX Ydieresis udieresis -58 KPX Ydieresis ugrave -58 KPX Ydieresis uhungarumlaut -58 KPX Ydieresis umacron -58 KPX Ydieresis uogonek -58 KPX Ydieresis uring -58 KPX a v 6 KPX a w -8 KPX a y -8 KPX a yacute -8 KPX a ydieresis -8 KPX aacute v 6 KPX aacute w -8 KPX aacute y -8 KPX aacute yacute -8 KPX aacute ydieresis -8 KPX abreve v 6 KPX abreve w -8 KPX abreve y -8 KPX abreve yacute -8 KPX abreve ydieresis -8 KPX acircumflex v 6 KPX acircumflex w -8 KPX acircumflex y -8 KPX acircumflex yacute -8 KPX acircumflex ydieresis -8 KPX adieresis v 6 KPX adieresis w -8 KPX adieresis y -8 KPX adieresis yacute -8 KPX adieresis ydieresis -8 KPX agrave v 6 KPX agrave w -8 KPX agrave y -8 KPX agrave yacute -8 KPX agrave ydieresis -8 KPX amacron v 6 KPX amacron w -8 KPX amacron y -8 KPX amacron yacute -8 KPX amacron ydieresis -8 KPX aogonek v 6 KPX aogonek w -8 KPX aogonek y 18 KPX aogonek yacute 18 KPX aogonek ydieresis 18 KPX aring v 6 KPX aring w -8 KPX aring y -8 KPX aring yacute -8 KPX aring ydieresis -8 KPX atilde v 6 KPX atilde w -8 KPX atilde y -8 KPX atilde yacute -8 KPX atilde ydieresis -8 KPX b comma 6 KPX b period 6 KPX b v 8 KPX b y -6 KPX b yacute -6 KPX b ydieresis -6 KPX c comma -8 KPX c h -18 KPX c k -8 KPX c kcommaaccent -8 KPX c l -13 KPX c lacute -13 KPX c lcommaaccent -13 KPX c lslash -13 KPX c period -8 KPX c y -20 KPX c yacute -20 KPX c ydieresis -20 KPX cacute comma -8 KPX cacute h -18 KPX cacute k -8 KPX cacute kcommaaccent -8 KPX cacute l -13 KPX cacute lacute -13 KPX cacute lcommaaccent -13 KPX cacute lslash -13 KPX cacute period -8 KPX cacute y -20 KPX cacute yacute -20 KPX cacute ydieresis -20 KPX ccaron comma -8 KPX ccaron h -18 KPX ccaron k -8 KPX ccaron kcommaaccent -8 KPX ccaron l -13 KPX ccaron lacute -13 KPX ccaron lcommaaccent -13 KPX ccaron lslash -13 KPX ccaron period -8 KPX ccaron y -20 KPX ccaron yacute -20 KPX ccaron ydieresis -20 KPX ccedilla comma -8 KPX ccedilla h -18 KPX ccedilla k -8 KPX ccedilla kcommaaccent -8 KPX ccedilla l -13 KPX ccedilla lacute -13 KPX ccedilla lcommaaccent -13 KPX ccedilla lslash -13 KPX ccedilla period -8 KPX ccedilla y -20 KPX ccedilla yacute -20 KPX ccedilla ydieresis -20 KPX colon space -18 KPX comma quotedblright -18 KPX comma quoteright -18 KPX comma space -18 KPX d w -15 KPX d y -15 KPX d yacute -15 KPX d ydieresis -15 KPX dcroat w -15 KPX dcroat y -15 KPX dcroat yacute -15 KPX dcroat ydieresis -15 KPX e b -8 KPX e g -4 KPX e gbreve -4 KPX e gcommaaccent -4 KPX e p -11 KPX e w -15 KPX e x -5 KPX e y -15 KPX e yacute -15 KPX e ydieresis -15 KPX eacute b -8 KPX eacute g -4 KPX eacute gbreve -4 KPX eacute gcommaaccent -4 KPX eacute p -11 KPX eacute w -15 KPX eacute x -5 KPX eacute y -15 KPX eacute yacute -15 KPX eacute ydieresis -15 KPX ecaron b -8 KPX ecaron g -4 KPX ecaron gbreve -4 KPX ecaron gcommaaccent -4 KPX ecaron p -11 KPX ecaron w -15 KPX ecaron x -5 KPX ecaron y -15 KPX ecaron yacute -15 KPX ecaron ydieresis -15 KPX ecircumflex b -8 KPX ecircumflex g -4 KPX ecircumflex gbreve -4 KPX ecircumflex gcommaaccent -4 KPX ecircumflex p -11 KPX ecircumflex w -15 KPX ecircumflex x -5 KPX ecircumflex y -15 KPX ecircumflex yacute -15 KPX ecircumflex ydieresis -15 KPX edieresis b -8 KPX edieresis g -4 KPX edieresis gbreve -4 KPX edieresis gcommaaccent -4 KPX edieresis p -11 KPX edieresis w -15 KPX edieresis x -5 KPX edieresis y -15 KPX edieresis yacute -15 KPX edieresis ydieresis -15 KPX edotaccent b -8 KPX edotaccent g -4 KPX edotaccent gbreve -4 KPX edotaccent gcommaaccent -4 KPX edotaccent p -11 KPX edotaccent w -15 KPX edotaccent x -5 KPX edotaccent y -15 KPX edotaccent yacute -15 KPX edotaccent ydieresis -15 KPX egrave b -8 KPX egrave g -4 KPX egrave gbreve -4 KPX egrave gcommaaccent -4 KPX egrave p -11 KPX egrave w -15 KPX egrave x -5 KPX egrave y -15 KPX egrave yacute -15 KPX egrave ydieresis -15 KPX emacron b -8 KPX emacron g -4 KPX emacron gbreve -4 KPX emacron gcommaaccent -4 KPX emacron p -11 KPX emacron w -15 KPX emacron x -5 KPX emacron y -15 KPX emacron yacute -15 KPX emacron ydieresis -15 KPX eogonek b -8 KPX eogonek g -4 KPX eogonek gbreve -4 KPX eogonek gcommaaccent -4 KPX eogonek p -11 KPX eogonek w -15 KPX eogonek x -5 KPX eogonek y -15 KPX eogonek yacute -15 KPX eogonek ydieresis -15 KPX f a 8 KPX f aacute 8 KPX f abreve 8 KPX f acircumflex 8 KPX f adieresis 8 KPX f agrave 8 KPX f amacron 8 KPX f aogonek 8 KPX f aring 8 KPX f atilde 8 KPX f comma -28 KPX f dotlessi 7 KPX f e 14 KPX f eacute 14 KPX f ecaron 34 KPX f ecircumflex 34 KPX f edieresis 34 KPX f edotaccent 14 KPX f egrave 34 KPX f emacron 34 KPX f eogonek 14 KPX f i 7 KPX f iacute 27 KPX f icircumflex 27 KPX f idieresis 27 KPX f igrave 27 KPX f imacron 27 KPX f iogonek 7 KPX f l 7 KPX f lacute 7 KPX f lcommaaccent 7 KPX f lslash 7 KPX f o 7 KPX f oacute 7 KPX f ocircumflex 7 KPX f odieresis 7 KPX f ograve 7 KPX f ohungarumlaut 7 KPX f omacron 7 KPX f oslash 7 KPX f otilde 7 KPX f period -28 KPX f quotedblright 105 KPX f quoteright 105 KPX g comma -5 KPX g period -5 KPX g r 11 KPX g racute 11 KPX g rcaron 11 KPX g rcommaaccent 11 KPX g y -11 KPX g yacute -11 KPX g ydieresis -11 KPX gbreve comma -5 KPX gbreve period -5 KPX gbreve r 11 KPX gbreve racute 11 KPX gbreve rcaron 11 KPX gbreve rcommaaccent 11 KPX gbreve y -11 KPX gbreve yacute -11 KPX gbreve ydieresis -11 KPX gcommaaccent comma -5 KPX gcommaaccent period -5 KPX gcommaaccent r 11 KPX gcommaaccent racute 11 KPX gcommaaccent rcaron 11 KPX gcommaaccent rcommaaccent 11 KPX gcommaaccent y -11 KPX gcommaaccent yacute -11 KPX gcommaaccent ydieresis -11 KPX h y -20 KPX h yacute -20 KPX h ydieresis -20 KPX i v 7 KPX iacute v 7 KPX icircumflex v 7 KPX idieresis v 7 KPX igrave v 7 KPX imacron v 7 KPX iogonek v 7 KPX k e -16 KPX k eacute -16 KPX k ecaron -16 KPX k ecircumflex -16 KPX k edieresis -16 KPX k edotaccent -16 KPX k egrave -16 KPX k emacron -16 KPX k eogonek -16 KPX k o -22 KPX k oacute -22 KPX k ocircumflex -22 KPX k odieresis -22 KPX k ograve -22 KPX k ohungarumlaut -22 KPX k omacron -22 KPX k oslash -22 KPX k otilde -22 KPX k y -15 KPX k yacute -15 KPX k ydieresis -15 KPX kcommaaccent e -16 KPX kcommaaccent eacute -16 KPX kcommaaccent ecaron -16 KPX kcommaaccent ecircumflex -16 KPX kcommaaccent edieresis -16 KPX kcommaaccent edotaccent -16 KPX kcommaaccent egrave -16 KPX kcommaaccent emacron -16 KPX kcommaaccent eogonek -16 KPX kcommaaccent o -22 KPX kcommaaccent oacute -22 KPX kcommaaccent ocircumflex -22 KPX kcommaaccent odieresis -22 KPX kcommaaccent ograve -22 KPX kcommaaccent ohungarumlaut -22 KPX kcommaaccent omacron -22 KPX kcommaaccent oslash -22 KPX kcommaaccent otilde -22 KPX kcommaaccent y -15 KPX kcommaaccent yacute -15 KPX kcommaaccent ydieresis -15 KPX l w -7 KPX l y -7 KPX l yacute -7 KPX l ydieresis -7 KPX lacute w -7 KPX lacute y -7 KPX lacute yacute -7 KPX lacute ydieresis -7 KPX lcommaaccent w -7 KPX lcommaaccent y -7 KPX lcommaaccent yacute -7 KPX lcommaaccent ydieresis -7 KPX lslash w -7 KPX lslash y -7 KPX lslash yacute -7 KPX lslash ydieresis -7 KPX m u -11 KPX m uacute -11 KPX m ucircumflex -11 KPX m udieresis -11 KPX m ugrave -11 KPX m uhungarumlaut -11 KPX m umacron -11 KPX m uogonek -11 KPX m uring -11 KPX m y -20 KPX m yacute -20 KPX m ydieresis -20 KPX n u -11 KPX n uacute -11 KPX n ucircumflex -11 KPX n udieresis -11 KPX n ugrave -11 KPX n uhungarumlaut -11 KPX n umacron -11 KPX n uogonek -11 KPX n uring -11 KPX n v -7 KPX n y -20 KPX n yacute -20 KPX n ydieresis -20 KPX nacute u -11 KPX nacute uacute -11 KPX nacute ucircumflex -11 KPX nacute udieresis -11 KPX nacute ugrave -11 KPX nacute uhungarumlaut -11 KPX nacute umacron -11 KPX nacute uogonek -11 KPX nacute uring -11 KPX nacute v -7 KPX nacute y -20 KPX nacute yacute -20 KPX nacute ydieresis -20 KPX ncaron u -11 KPX ncaron uacute -11 KPX ncaron ucircumflex -11 KPX ncaron udieresis -11 KPX ncaron ugrave -11 KPX ncaron uhungarumlaut -11 KPX ncaron umacron -11 KPX ncaron uogonek -11 KPX ncaron uring -11 KPX ncaron v -7 KPX ncaron y -20 KPX ncaron yacute -20 KPX ncaron ydieresis -20 KPX ncommaaccent u -11 KPX ncommaaccent uacute -11 KPX ncommaaccent ucircumflex -11 KPX ncommaaccent udieresis -11 KPX ncommaaccent ugrave -11 KPX ncommaaccent uhungarumlaut -11 KPX ncommaaccent umacron -11 KPX ncommaaccent uogonek -11 KPX ncommaaccent uring -11 KPX ncommaaccent v -7 KPX ncommaaccent y -20 KPX ncommaaccent yacute -20 KPX ncommaaccent ydieresis -20 KPX ntilde u -11 KPX ntilde uacute -11 KPX ntilde ucircumflex -11 KPX ntilde udieresis -11 KPX ntilde ugrave -11 KPX ntilde uhungarumlaut -11 KPX ntilde umacron -11 KPX ntilde uogonek -11 KPX ntilde uring -11 KPX ntilde v -7 KPX ntilde y -20 KPX ntilde yacute -20 KPX ntilde ydieresis -20 KPX o v 6 KPX o w -8 KPX o y -11 KPX o yacute -11 KPX o ydieresis -11 KPX oacute v 6 KPX oacute w -8 KPX oacute y -11 KPX oacute yacute -11 KPX oacute ydieresis -11 KPX ocircumflex v 6 KPX ocircumflex w -8 KPX ocircumflex y -11 KPX ocircumflex yacute -11 KPX ocircumflex ydieresis -11 KPX odieresis v 6 KPX odieresis w -8 KPX odieresis y -11 KPX odieresis yacute -11 KPX odieresis ydieresis -11 KPX ograve v 6 KPX ograve w -8 KPX ograve y -11 KPX ograve yacute -11 KPX ograve ydieresis -11 KPX ohungarumlaut v 6 KPX ohungarumlaut w -8 KPX ohungarumlaut y -11 KPX ohungarumlaut yacute -11 KPX ohungarumlaut ydieresis -11 KPX omacron v 6 KPX omacron w -8 KPX omacron y -11 KPX omacron yacute -11 KPX omacron ydieresis -11 KPX oslash v 6 KPX oslash w -8 KPX oslash y -11 KPX oslash yacute -11 KPX oslash ydieresis -11 KPX otilde v 6 KPX otilde w -8 KPX otilde y -11 KPX otilde yacute -11 KPX otilde ydieresis -11 KPX p comma 8 KPX p period 8 KPX p y -4 KPX p yacute -4 KPX p ydieresis -4 KPX period quotedblright -18 KPX period quoteright -18 KPX period space -18 KPX quotedblleft A -60 KPX quotedblleft Aacute -60 KPX quotedblleft Abreve -60 KPX quotedblleft Acircumflex -60 KPX quotedblleft Adieresis -60 KPX quotedblleft Agrave -60 KPX quotedblleft Amacron -60 KPX quotedblleft Aogonek -60 KPX quotedblleft Aring -60 KPX quotedblleft Atilde -60 KPX quotedblleft quoteleft 20 KPX quotedblright space -18 KPX quoteleft A -80 KPX quoteleft Aacute -80 KPX quoteleft Abreve -80 KPX quoteleft Acircumflex -80 KPX quoteleft Adieresis -80 KPX quoteleft Agrave -80 KPX quoteleft Amacron -80 KPX quoteleft Aogonek -80 KPX quoteleft Aring -80 KPX quoteleft Atilde -80 KPX quoteright d -41 KPX quoteright dcroat -41 KPX quoteright l -22 KPX quoteright lacute -22 KPX quoteright lcommaaccent -22 KPX quoteright lslash -22 KPX quoteright r -9 KPX quoteright racute -9 KPX quoteright rcaron -9 KPX quoteright rcommaaccent -9 KPX quoteright s -46 KPX quoteright sacute -46 KPX quoteright scaron -46 KPX quoteright scedilla -46 KPX quoteright scommaaccent -46 KPX quoteright t -22 KPX quoteright tcommaaccent -22 KPX quoteright v -16 KPX r a -11 KPX r aacute -11 KPX r abreve -11 KPX r acircumflex -11 KPX r adieresis -11 KPX r agrave -11 KPX r amacron -11 KPX r aogonek -11 KPX r aring -11 KPX r atilde -11 KPX r colon 9 KPX r comma -90 KPX r d -7 KPX r dcroat -7 KPX r e -7 KPX r eacute -7 KPX r ecaron -7 KPX r ecircumflex -7 KPX r edieresis -7 KPX r edotaccent -7 KPX r egrave -7 KPX r emacron -7 KPX r eogonek -7 KPX r g -11 KPX r gbreve -11 KPX r gcommaaccent -11 KPX r hyphen -16 KPX r i -14 KPX r iacute -14 KPX r icircumflex -14 KPX r idieresis -14 KPX r igrave -14 KPX r imacron -14 KPX r iogonek -14 KPX r k 9 KPX r kcommaaccent 9 KPX r l -14 KPX r lacute -14 KPX r lcommaaccent -14 KPX r lslash -14 KPX r o -11 KPX r oacute -11 KPX r ocircumflex -11 KPX r odieresis -11 KPX r ograve -11 KPX r ohungarumlaut -11 KPX r omacron -11 KPX r oslash -11 KPX r otilde -11 KPX r p -17 KPX r period -90 KPX r quoteright 9 KPX r s -20 KPX r sacute -20 KPX r scaron -20 KPX r scedilla -20 KPX r scommaaccent -20 KPX r semicolon 9 KPX r t -11 KPX r tcommaaccent -11 KPX r u -11 KPX r uacute -11 KPX r ucircumflex -11 KPX r udieresis -11 KPX r ugrave -11 KPX r uhungarumlaut -11 KPX r umacron -11 KPX r uogonek -11 KPX r uring -11 KPX r v -7 KPX r y -20 KPX r yacute -20 KPX r ydieresis -20 KPX racute a -11 KPX racute aacute -11 KPX racute abreve -11 KPX racute acircumflex -11 KPX racute adieresis -11 KPX racute agrave -11 KPX racute amacron -11 KPX racute aogonek -11 KPX racute aring -11 KPX racute atilde -11 KPX racute colon 9 KPX racute comma -90 KPX racute d -7 KPX racute dcroat -7 KPX racute e -7 KPX racute eacute -7 KPX racute ecaron -7 KPX racute ecircumflex -7 KPX racute edieresis -7 KPX racute edotaccent -7 KPX racute egrave -7 KPX racute emacron -7 KPX racute eogonek -7 KPX racute g -11 KPX racute gbreve -11 KPX racute gcommaaccent -11 KPX racute hyphen -16 KPX racute i -14 KPX racute iacute -14 KPX racute icircumflex -14 KPX racute idieresis -14 KPX racute igrave -14 KPX racute imacron -14 KPX racute iogonek -14 KPX racute k 9 KPX racute kcommaaccent 9 KPX racute l -14 KPX racute lacute -14 KPX racute lcommaaccent -14 KPX racute lslash -14 KPX racute o -11 KPX racute oacute -11 KPX racute ocircumflex -11 KPX racute odieresis -11 KPX racute ograve -11 KPX racute ohungarumlaut -11 KPX racute omacron -11 KPX racute oslash -11 KPX racute otilde -11 KPX racute p -17 KPX racute period -90 KPX racute quoteright 9 KPX racute s -20 KPX racute sacute -20 KPX racute scaron -20 KPX racute scedilla -20 KPX racute scommaaccent -20 KPX racute semicolon 9 KPX racute t -11 KPX racute tcommaaccent -11 KPX racute u -11 KPX racute uacute -11 KPX racute ucircumflex -11 KPX racute udieresis -11 KPX racute ugrave -11 KPX racute uhungarumlaut -11 KPX racute umacron -11 KPX racute uogonek -11 KPX racute uring -11 KPX racute v -7 KPX racute y -20 KPX racute yacute -20 KPX racute ydieresis -20 KPX rcaron a -11 KPX rcaron aacute -11 KPX rcaron abreve -11 KPX rcaron acircumflex -11 KPX rcaron adieresis -11 KPX rcaron agrave -11 KPX rcaron amacron -11 KPX rcaron aogonek -11 KPX rcaron aring -11 KPX rcaron atilde -11 KPX rcaron colon 9 KPX rcaron comma -90 KPX rcaron d -7 KPX rcaron dcroat -7 KPX rcaron e -7 KPX rcaron eacute -7 KPX rcaron ecaron -7 KPX rcaron ecircumflex -7 KPX rcaron edieresis -7 KPX rcaron edotaccent -7 KPX rcaron egrave -7 KPX rcaron emacron -7 KPX rcaron eogonek -7 KPX rcaron g -11 KPX rcaron gbreve -11 KPX rcaron gcommaaccent -11 KPX rcaron hyphen -16 KPX rcaron i -14 KPX rcaron iacute -14 KPX rcaron icircumflex -14 KPX rcaron idieresis -14 KPX rcaron igrave -14 KPX rcaron imacron -14 KPX rcaron iogonek -14 KPX rcaron k 9 KPX rcaron kcommaaccent 9 KPX rcaron l -14 KPX rcaron lacute -14 KPX rcaron lcommaaccent -14 KPX rcaron lslash -14 KPX rcaron o -11 KPX rcaron oacute -11 KPX rcaron ocircumflex -11 KPX rcaron odieresis -11 KPX rcaron ograve -11 KPX rcaron ohungarumlaut -11 KPX rcaron omacron -11 KPX rcaron oslash -11 KPX rcaron otilde -11 KPX rcaron p -17 KPX rcaron period -90 KPX rcaron quoteright 9 KPX rcaron s -20 KPX rcaron sacute -20 KPX rcaron scaron -20 KPX rcaron scedilla -20 KPX rcaron scommaaccent -20 KPX rcaron semicolon 9 KPX rcaron t -11 KPX rcaron tcommaaccent -11 KPX rcaron u -11 KPX rcaron uacute -11 KPX rcaron ucircumflex -11 KPX rcaron udieresis -11 KPX rcaron ugrave -11 KPX rcaron uhungarumlaut -11 KPX rcaron umacron -11 KPX rcaron uogonek -11 KPX rcaron uring -11 KPX rcaron v -7 KPX rcaron y -20 KPX rcaron yacute -20 KPX rcaron ydieresis -20 KPX rcommaaccent a -11 KPX rcommaaccent aacute -11 KPX rcommaaccent abreve -11 KPX rcommaaccent acircumflex -11 KPX rcommaaccent adieresis -11 KPX rcommaaccent agrave -11 KPX rcommaaccent amacron -11 KPX rcommaaccent aogonek -11 KPX rcommaaccent aring -11 KPX rcommaaccent atilde -11 KPX rcommaaccent colon 9 KPX rcommaaccent comma -90 KPX rcommaaccent d -7 KPX rcommaaccent dcroat -7 KPX rcommaaccent e -7 KPX rcommaaccent eacute -7 KPX rcommaaccent ecaron -7 KPX rcommaaccent ecircumflex -7 KPX rcommaaccent edieresis -7 KPX rcommaaccent edotaccent -7 KPX rcommaaccent egrave -7 KPX rcommaaccent emacron -7 KPX rcommaaccent eogonek -7 KPX rcommaaccent g -11 KPX rcommaaccent gbreve -11 KPX rcommaaccent gcommaaccent -11 KPX rcommaaccent hyphen -16 KPX rcommaaccent i -14 KPX rcommaaccent iacute -14 KPX rcommaaccent icircumflex -14 KPX rcommaaccent idieresis -14 KPX rcommaaccent igrave -14 KPX rcommaaccent imacron -14 KPX rcommaaccent iogonek -14 KPX rcommaaccent k 9 KPX rcommaaccent kcommaaccent 9 KPX rcommaaccent l -14 KPX rcommaaccent lacute -14 KPX rcommaaccent lcommaaccent -14 KPX rcommaaccent lslash -14 KPX rcommaaccent o -11 KPX rcommaaccent oacute -11 KPX rcommaaccent ocircumflex -11 KPX rcommaaccent odieresis -11 KPX rcommaaccent ograve -11 KPX rcommaaccent ohungarumlaut -11 KPX rcommaaccent omacron -11 KPX rcommaaccent oslash -11 KPX rcommaaccent otilde -11 KPX rcommaaccent p -17 KPX rcommaaccent period -90 KPX rcommaaccent quoteright 9 KPX rcommaaccent s -20 KPX rcommaaccent sacute -20 KPX rcommaaccent scaron -20 KPX rcommaaccent scedilla -20 KPX rcommaaccent scommaaccent -20 KPX rcommaaccent semicolon 9 KPX rcommaaccent t -11 KPX rcommaaccent tcommaaccent -11 KPX rcommaaccent u -11 KPX rcommaaccent uacute -11 KPX rcommaaccent ucircumflex -11 KPX rcommaaccent udieresis -11 KPX rcommaaccent ugrave -11 KPX rcommaaccent uhungarumlaut -11 KPX rcommaaccent umacron -11 KPX rcommaaccent uogonek -11 KPX rcommaaccent uring -11 KPX rcommaaccent v -7 KPX rcommaaccent y -20 KPX rcommaaccent yacute -20 KPX rcommaaccent ydieresis -20 KPX s comma 11 KPX s period 11 KPX sacute comma 11 KPX sacute period 11 KPX scaron comma 11 KPX scaron period 11 KPX scedilla comma 11 KPX scedilla period 11 KPX scommaaccent comma 11 KPX scommaaccent period 11 KPX semicolon space -18 KPX space A -22 KPX space Aacute -22 KPX space Abreve -22 KPX space Acircumflex -22 KPX space Adieresis -22 KPX space Agrave -22 KPX space Amacron -22 KPX space Aogonek -22 KPX space Aring -22 KPX space Atilde -22 KPX space T -18 KPX space Tcaron -18 KPX space Tcommaaccent -18 KPX space V -24 KPX space W -33 KPX space Y -18 KPX space Yacute -18 KPX space Ydieresis -18 KPX space quotedblleft -18 KPX v a -6 KPX v aacute -6 KPX v abreve -6 KPX v acircumflex -6 KPX v adieresis -6 KPX v agrave -6 KPX v amacron -6 KPX v aogonek -6 KPX v aring -6 KPX v atilde -6 KPX v comma -11 KPX v o -6 KPX v oacute -6 KPX v ocircumflex -6 KPX v odieresis -6 KPX v ograve -6 KPX v ohungarumlaut -6 KPX v omacron -6 KPX v oslash -6 KPX v otilde -6 KPX v period -11 KPX w a -14 KPX w aacute -14 KPX w abreve -14 KPX w acircumflex -14 KPX w adieresis -14 KPX w agrave -14 KPX w amacron -14 KPX w aogonek -14 KPX w aring -14 KPX w atilde -14 KPX w comma -17 KPX w e -8 KPX w eacute -8 KPX w ecaron -8 KPX w ecircumflex -8 KPX w edieresis -8 KPX w edotaccent -8 KPX w egrave -8 KPX w emacron -8 KPX w eogonek -8 KPX w o -14 KPX w oacute -14 KPX w ocircumflex -14 KPX w odieresis -14 KPX w ograve -14 KPX w ohungarumlaut -14 KPX w omacron -14 KPX w oslash -14 KPX w otilde -14 KPX w period -17 KPX x e 5 KPX x eacute 5 KPX x ecaron 5 KPX x ecircumflex 5 KPX x edieresis 5 KPX x edotaccent 5 KPX x egrave 5 KPX x emacron 5 KPX x eogonek 5 KPX y a 8 KPX y aacute 8 KPX y abreve 8 KPX y acircumflex 8 KPX y adieresis 8 KPX y agrave 8 KPX y amacron 8 KPX y aogonek 8 KPX y aring 8 KPX y atilde 8 KPX y comma -25 KPX y e 15 KPX y eacute 15 KPX y ecaron 15 KPX y ecircumflex 15 KPX y edieresis 15 KPX y edotaccent 15 KPX y egrave 15 KPX y emacron 15 KPX y eogonek 15 KPX y o 8 KPX y oacute 8 KPX y ocircumflex 8 KPX y odieresis 8 KPX y ograve 8 KPX y ohungarumlaut 8 KPX y omacron 8 KPX y oslash 8 KPX y otilde 8 KPX y period -25 KPX yacute a 8 KPX yacute aacute 8 KPX yacute abreve 8 KPX yacute acircumflex 8 KPX yacute adieresis 8 KPX yacute agrave 8 KPX yacute amacron 8 KPX yacute aogonek 8 KPX yacute aring 8 KPX yacute atilde 8 KPX yacute comma -25 KPX yacute e 15 KPX yacute eacute 15 KPX yacute ecaron 15 KPX yacute ecircumflex 15 KPX yacute edieresis 15 KPX yacute edotaccent 15 KPX yacute egrave 15 KPX yacute emacron 15 KPX yacute eogonek 15 KPX yacute o 8 KPX yacute oacute 8 KPX yacute ocircumflex 8 KPX yacute odieresis 8 KPX yacute ograve 8 KPX yacute ohungarumlaut 8 KPX yacute omacron 8 KPX yacute oslash 8 KPX yacute otilde 8 KPX yacute period -25 KPX ydieresis a 8 KPX ydieresis aacute 8 KPX ydieresis abreve 8 KPX ydieresis acircumflex 8 KPX ydieresis adieresis 8 KPX ydieresis agrave 8 KPX ydieresis amacron 8 KPX ydieresis aogonek 8 KPX ydieresis aring 8 KPX ydieresis atilde 8 KPX ydieresis comma -25 KPX ydieresis e 15 KPX ydieresis eacute 15 KPX ydieresis ecaron 15 KPX ydieresis ecircumflex 15 KPX ydieresis edieresis 15 KPX ydieresis edotaccent 15 KPX ydieresis egrave 15 KPX ydieresis emacron 15 KPX ydieresis eogonek 15 KPX ydieresis o 8 KPX ydieresis oacute 8 KPX ydieresis ocircumflex 8 KPX ydieresis odieresis 8 KPX ydieresis ograve 8 KPX ydieresis ohungarumlaut 8 KPX ydieresis omacron 8 KPX ydieresis oslash 8 KPX ydieresis otilde 8 KPX ydieresis period -25 KPX z e 4 KPX z eacute 4 KPX z ecaron 4 KPX z ecircumflex 4 KPX z edieresis 4 KPX z edotaccent 4 KPX z egrave 4 KPX z emacron 4 KPX z eogonek 4 KPX zacute e 4 KPX zacute eacute 4 KPX zacute ecaron 4 KPX zacute ecircumflex 4 KPX zacute edieresis 4 KPX zacute edotaccent 4 KPX zacute egrave 4 KPX zacute emacron 4 KPX zacute eogonek 4 KPX zcaron e 4 KPX zcaron eacute 4 KPX zcaron ecaron 4 KPX zcaron ecircumflex 4 KPX zcaron edieresis 4 KPX zcaron edotaccent 4 KPX zcaron egrave 4 KPX zcaron emacron 4 KPX zcaron eogonek 4 KPX zdotaccent e 4 KPX zdotaccent eacute 4 KPX zdotaccent ecaron 4 KPX zdotaccent ecircumflex 4 KPX zdotaccent edieresis 4 KPX zdotaccent edotaccent 4 KPX zdotaccent egrave 4 KPX zdotaccent emacron 4 KPX zdotaccent eogonek 4 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Bookman-Light.afm0000644000222100022210000010527414541067540016027 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:40:29 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43077 Comment VMusage 44500 55525 FontName Bookman-Light FullName ITC Bookman Light FamilyName ITC Bookman Weight Light ItalicAngle 0 IsFixedPitch false FontBBox -188 -251 1266 908 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 681 XHeight 484 Ascender 717 Descender -228 StdHW 42 StdVW 96 StartCharMetrics 359 C 32 ; WX 320 ; N space ; B 0 0 0 0 ; C 33 ; WX 300 ; N exclam ; B 75 -8 219 698 ; C 34 ; WX 380 ; N quotedbl ; B 56 458 323 698 ; C 35 ; WX 620 ; N numbersign ; B 65 0 556 681 ; C 36 ; WX 620 ; N dollar ; B 34 -109 593 791 ; C 37 ; WX 900 ; N percent ; B 22 -8 873 698 ; C 38 ; WX 800 ; N ampersand ; B 45 -17 787 698 ; C 39 ; WX 220 ; N quoteright ; B 46 480 178 698 ; C 40 ; WX 300 ; N parenleft ; B 76 -145 278 727 ; C 41 ; WX 300 ; N parenright ; B 17 -146 219 727 ; C 42 ; WX 440 ; N asterisk ; B 54 325 391 698 ; C 43 ; WX 600 ; N plus ; B 51 8 555 513 ; C 44 ; WX 320 ; N comma ; B 90 -114 223 114 ; C 45 ; WX 400 ; N hyphen ; B 50 232 350 292 ; C 46 ; WX 320 ; N period ; B 92 -8 220 123 ; C 47 ; WX 600 ; N slash ; B 74 -149 532 717 ; C 48 ; WX 620 ; N zero ; B 40 -17 586 698 ; C 49 ; WX 620 ; N one ; B 160 0 501 681 ; C 50 ; WX 620 ; N two ; B 42 0 576 698 ; C 51 ; WX 620 ; N three ; B 40 -17 576 698 ; C 52 ; WX 620 ; N four ; B 25 0 600 681 ; C 53 ; WX 620 ; N five ; B 60 -17 584 717 ; C 54 ; WX 620 ; N six ; B 45 -17 590 698 ; C 55 ; WX 620 ; N seven ; B 60 0 586 681 ; C 56 ; WX 620 ; N eight ; B 44 -17 583 698 ; C 57 ; WX 620 ; N nine ; B 37 -17 576 698 ; C 58 ; WX 320 ; N colon ; B 92 -8 220 494 ; C 59 ; WX 320 ; N semicolon ; B 90 -114 223 494 ; C 60 ; WX 600 ; N less ; B 49 -2 558 526 ; C 61 ; WX 600 ; N equal ; B 51 126 555 398 ; C 62 ; WX 600 ; N greater ; B 48 -2 557 526 ; C 63 ; WX 540 ; N question ; B 27 -8 514 698 ; C 64 ; WX 820 ; N at ; B 55 -17 755 698 ; C 65 ; WX 680 ; N A ; B -37 0 714 681 ; C 66 ; WX 740 ; N B ; B 31 0 702 681 ; C 67 ; WX 740 ; N C ; B 44 -17 702 698 ; C 68 ; WX 800 ; N D ; B 31 0 752 681 ; C 69 ; WX 720 ; N E ; B 31 0 705 681 ; C 70 ; WX 640 ; N F ; B 31 0 654 681 ; C 71 ; WX 800 ; N G ; B 44 -17 778 698 ; C 72 ; WX 800 ; N H ; B 31 0 769 681 ; C 73 ; WX 340 ; N I ; B 31 0 301 681 ; C 74 ; WX 600 ; N J ; B -23 -17 567 681 ; C 75 ; WX 720 ; N K ; B 31 0 750 681 ; C 76 ; WX 600 ; N L ; B 31 0 629 681 ; C 77 ; WX 920 ; N M ; B 26 0 894 681 ; C 78 ; WX 740 ; N N ; B 26 0 722 681 ; C 79 ; WX 800 ; N O ; B 44 -17 758 698 ; C 80 ; WX 620 ; N P ; B 31 0 613 681 ; C 81 ; WX 820 ; N Q ; B 44 -189 769 698 ; C 82 ; WX 720 ; N R ; B 31 0 757 681 ; C 83 ; WX 660 ; N S ; B 28 -17 634 698 ; C 84 ; WX 620 ; N T ; B -37 0 656 681 ; C 85 ; WX 780 ; N U ; B 25 -17 754 681 ; C 86 ; WX 700 ; N V ; B -30 0 725 681 ; C 87 ; WX 960 ; N W ; B -30 0 984 681 ; C 88 ; WX 720 ; N X ; B -30 0 755 681 ; C 89 ; WX 640 ; N Y ; B -30 0 666 681 ; C 90 ; WX 640 ; N Z ; B 10 0 656 681 ; C 91 ; WX 300 ; N bracketleft ; B 92 -136 258 717 ; C 92 ; WX 600 ; N backslash ; B 74 0 532 717 ; C 93 ; WX 300 ; N bracketright ; B 41 -136 207 717 ; C 94 ; WX 600 ; N asciicircum ; B 52 276 554 681 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 220 ; N quoteleft ; B 46 479 178 698 ; C 97 ; WX 580 ; N a ; B 35 -8 587 494 ; C 98 ; WX 620 ; N b ; B -2 -8 582 717 ; C 99 ; WX 520 ; N c ; B 37 -8 498 494 ; C 100 ; WX 620 ; N d ; B 37 -8 591 717 ; C 101 ; WX 520 ; N e ; B 37 -8 491 494 ; C 102 ; WX 320 ; N f ; B 20 0 414 734 ; L i fi ; L l fl ; C 103 ; WX 540 ; N g ; B 17 -243 542 567 ; C 104 ; WX 660 ; N h ; B 20 0 643 717 ; C 105 ; WX 300 ; N i ; B 20 0 288 654 ; C 106 ; WX 300 ; N j ; B -109 -251 214 654 ; C 107 ; WX 620 ; N k ; B 20 0 628 717 ; C 108 ; WX 300 ; N l ; B 20 0 286 717 ; C 109 ; WX 940 ; N m ; B 17 0 928 494 ; C 110 ; WX 660 ; N n ; B 20 0 649 494 ; C 111 ; WX 560 ; N o ; B 37 -8 526 494 ; C 112 ; WX 620 ; N p ; B 20 -228 583 494 ; C 113 ; WX 580 ; N q ; B 37 -228 589 494 ; C 114 ; WX 440 ; N r ; B 20 0 447 494 ; C 115 ; WX 520 ; N s ; B 40 -8 487 494 ; C 116 ; WX 380 ; N t ; B 20 -8 388 667 ; C 117 ; WX 680 ; N u ; B 20 -8 653 484 ; C 118 ; WX 520 ; N v ; B -23 0 534 484 ; C 119 ; WX 780 ; N w ; B -19 0 804 484 ; C 120 ; WX 560 ; N x ; B -16 0 576 484 ; C 121 ; WX 540 ; N y ; B -23 -236 549 484 ; C 122 ; WX 480 ; N z ; B 7 0 476 484 ; C 123 ; WX 280 ; N braceleft ; B 21 -136 260 717 ; C 124 ; WX 600 ; N bar ; B 264 -250 342 750 ; C 125 ; WX 280 ; N braceright ; B 21 -136 260 717 ; C 126 ; WX 600 ; N asciitilde ; B 52 173 556 352 ; C 160 ; WX 320 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 300 ; N exclamdown ; B 75 -214 219 494 ; C 162 ; WX 620 ; N cent ; B 116 20 511 651 ; C 163 ; WX 620 ; N sterling ; B 8 -17 631 698 ; C 164 ; WX 140 ; N fraction ; B -188 0 335 681 ; C 165 ; WX 620 ; N yen ; B -22 0 647 681 ; C 166 ; WX 620 ; N florin ; B -29 -155 633 749 ; C 167 ; WX 520 ; N section ; B 33 -178 486 698 ; C 168 ; WX 620 ; N currency ; B 58 89 563 591 ; C 169 ; WX 220 ; N quotesingle ; B 67 458 153 698 ; C 170 ; WX 400 ; N quotedblleft ; B 46 479 348 698 ; C 171 ; WX 360 ; N guillemotleft ; B 51 89 312 437 ; C 172 ; WX 240 ; N guilsinglleft ; B 51 89 189 437 ; C 173 ; WX 240 ; N guilsinglright ; B 51 89 189 437 ; C 174 ; WX 620 ; N fi ; B 20 0 608 734 ; C 175 ; WX 620 ; N fl ; B 20 0 606 734 ; C 177 ; WX 500 ; N endash ; B -15 232 515 292 ; C 178 ; WX 540 ; N dagger ; B 79 -156 455 698 ; C 179 ; WX 540 ; N daggerdbl ; B 79 -156 455 698 ; C 180 ; WX 320 ; N periodcentered ; B 92 196 220 327 ; C 182 ; WX 600 ; N paragraph ; B 14 0 577 681 ; C 183 ; WX 460 ; N bullet ; B 60 170 404 511 ; C 184 ; WX 220 ; N quotesinglbase ; B 46 -108 178 110 ; C 185 ; WX 400 ; N quotedblbase ; B 46 -108 348 110 ; C 186 ; WX 400 ; N quotedblright ; B 46 480 348 698 ; C 187 ; WX 360 ; N guillemotright ; B 51 89 312 437 ; C 188 ; WX 1000 ; N ellipsis ; B 101 -8 898 123 ; C 189 ; WX 1280 ; N perthousand ; B 22 -8 1266 698 ; C 191 ; WX 540 ; N questiondown ; B 23 -217 510 494 ; C 193 ; WX 340 ; N grave ; B 68 571 274 689 ; C 194 ; WX 340 ; N acute ; B 68 571 274 689 ; C 195 ; WX 420 ; N circumflex ; B 68 567 352 685 ; C 196 ; WX 440 ; N tilde ; B 68 572 375 661 ; C 197 ; WX 440 ; N macron ; B 68 587 364 635 ; C 198 ; WX 460 ; N breve ; B 68 568 396 687 ; C 199 ; WX 260 ; N dotaccent ; B 68 564 186 684 ; C 200 ; WX 420 ; N dieresis ; B 68 533 349 655 ; C 202 ; WX 320 ; N ring ; B 68 546 252 731 ; C 203 ; WX 320 ; N cedilla ; B 68 -200 257 0 ; C 205 ; WX 380 ; N hungarumlaut ; B 68 538 311 698 ; C 206 ; WX 320 ; N ogonek ; B 38 -153 258 0 ; C 207 ; WX 420 ; N caron ; B 68 554 352 672 ; C 208 ; WX 1000 ; N emdash ; B -15 232 1015 292 ; C 225 ; WX 1260 ; N AE ; B -36 0 1250 681 ; C 227 ; WX 420 ; N ordfeminine ; B 49 395 393 698 ; C 232 ; WX 600 ; N Lslash ; B 31 0 629 681 ; C 233 ; WX 800 ; N Oslash ; B 44 -53 758 733 ; C 234 ; WX 1240 ; N OE ; B 44 -17 1214 698 ; C 235 ; WX 420 ; N ordmasculine ; B 56 394 361 698 ; C 241 ; WX 860 ; N ae ; B 35 -8 832 494 ; C 245 ; WX 300 ; N dotlessi ; B 20 0 288 484 ; C 248 ; WX 320 ; N lslash ; B 20 0 291 717 ; C 249 ; WX 560 ; N oslash ; B 37 -40 526 534 ; C 250 ; WX 900 ; N oe ; B 37 -8 876 494 ; C 251 ; WX 660 ; N germandbls ; B -109 -110 614 698 ; C -1 ; WX 340 ; N Idieresis ; B 28 0 309 851 ; C -1 ; WX 520 ; N eacute ; B 37 -8 491 689 ; C -1 ; WX 580 ; N abreve ; B 35 -8 587 687 ; C -1 ; WX 680 ; N uhungarumlaut ; B 20 -8 653 698 ; C -1 ; WX 520 ; N ecaron ; B 37 -8 491 672 ; C -1 ; WX 640 ; N Ydieresis ; B -30 0 666 851 ; C -1 ; WX 600 ; N divide ; B 51 10 555 514 ; C -1 ; WX 640 ; N Yacute ; B -30 0 666 866 ; C -1 ; WX 680 ; N Acircumflex ; B -37 0 714 862 ; C -1 ; WX 580 ; N aacute ; B 35 -8 587 689 ; C -1 ; WX 780 ; N Ucircumflex ; B 25 -17 754 862 ; C -1 ; WX 540 ; N yacute ; B -23 -236 549 689 ; C -1 ; WX 520 ; N scommaaccent ; B 40 -251 487 494 ; C -1 ; WX 520 ; N ecircumflex ; B 37 -8 491 685 ; C -1 ; WX 780 ; N Uring ; B 25 -17 754 908 ; C -1 ; WX 780 ; N Udieresis ; B 25 -17 754 851 ; C -1 ; WX 580 ; N aogonek ; B 35 -153 588 494 ; C -1 ; WX 780 ; N Uacute ; B 25 -17 754 866 ; C -1 ; WX 680 ; N uogonek ; B 20 -153 653 484 ; C -1 ; WX 720 ; N Edieresis ; B 31 0 705 851 ; C -1 ; WX 800 ; N Dcroat ; B 31 0 752 681 ; C -1 ; WX 250 ; N commaaccent ; B 66 -251 185 -50 ; C -1 ; WX 740 ; N copyright ; B 24 -17 724 698 ; C -1 ; WX 720 ; N Emacron ; B 31 0 705 812 ; C -1 ; WX 520 ; N ccaron ; B 37 -8 498 672 ; C -1 ; WX 580 ; N aring ; B 35 -8 587 731 ; C -1 ; WX 740 ; N Ncommaaccent ; B 26 -251 722 681 ; C -1 ; WX 300 ; N lacute ; B 20 0 294 866 ; C -1 ; WX 580 ; N agrave ; B 35 -8 587 689 ; C -1 ; WX 620 ; N Tcommaaccent ; B -37 -251 656 681 ; C -1 ; WX 740 ; N Cacute ; B 44 -17 702 866 ; C -1 ; WX 580 ; N atilde ; B 35 -8 587 661 ; C -1 ; WX 720 ; N Edotaccent ; B 31 0 705 880 ; C -1 ; WX 520 ; N scaron ; B 40 -8 487 672 ; C -1 ; WX 520 ; N scedilla ; B 40 -200 487 494 ; C -1 ; WX 300 ; N iacute ; B 20 0 294 689 ; C -1 ; WX 471 ; N lozenge ; B 10 0 462 728 ; C -1 ; WX 720 ; N Rcaron ; B 31 0 757 849 ; C -1 ; WX 800 ; N Gcommaaccent ; B 44 -251 778 698 ; C -1 ; WX 680 ; N ucircumflex ; B 20 -8 653 685 ; C -1 ; WX 580 ; N acircumflex ; B 35 -8 587 685 ; C -1 ; WX 680 ; N Amacron ; B -37 0 714 812 ; C -1 ; WX 440 ; N rcaron ; B 20 0 447 672 ; C -1 ; WX 520 ; N ccedilla ; B 37 -200 498 494 ; C -1 ; WX 640 ; N Zdotaccent ; B 10 0 656 880 ; C -1 ; WX 620 ; N Thorn ; B 31 0 613 681 ; C -1 ; WX 800 ; N Omacron ; B 44 -17 758 812 ; C -1 ; WX 720 ; N Racute ; B 31 0 757 866 ; C -1 ; WX 660 ; N Sacute ; B 28 -17 634 866 ; C -1 ; WX 690 ; N dcaron ; B 37 -8 701 732 ; C -1 ; WX 780 ; N Umacron ; B 25 -17 754 812 ; C -1 ; WX 680 ; N uring ; B 20 -8 653 731 ; C -1 ; WX 372 ; N threesuperior ; B 12 269 360 698 ; C -1 ; WX 800 ; N Ograve ; B 44 -17 758 866 ; C -1 ; WX 680 ; N Agrave ; B -37 0 714 866 ; C -1 ; WX 680 ; N Abreve ; B -37 0 714 864 ; C -1 ; WX 600 ; N multiply ; B 51 9 555 513 ; C -1 ; WX 680 ; N uacute ; B 20 -8 653 689 ; C -1 ; WX 620 ; N Tcaron ; B -37 0 656 849 ; C -1 ; WX 476 ; N partialdiff ; B 34 -21 442 707 ; C -1 ; WX 540 ; N ydieresis ; B -23 -236 549 674 ; C -1 ; WX 740 ; N Nacute ; B 26 0 722 866 ; C -1 ; WX 300 ; N icircumflex ; B 8 0 292 685 ; C -1 ; WX 720 ; N Ecircumflex ; B 31 0 705 862 ; C -1 ; WX 580 ; N adieresis ; B 35 -8 587 674 ; C -1 ; WX 520 ; N edieresis ; B 37 -8 491 674 ; C -1 ; WX 520 ; N cacute ; B 37 -8 498 689 ; C -1 ; WX 660 ; N nacute ; B 20 0 649 689 ; C -1 ; WX 680 ; N umacron ; B 20 -8 653 635 ; C -1 ; WX 740 ; N Ncaron ; B 26 0 722 849 ; C -1 ; WX 340 ; N Iacute ; B 31 0 301 866 ; C -1 ; WX 600 ; N plusminus ; B 51 0 555 513 ; C -1 ; WX 600 ; N brokenbar ; B 264 -175 342 675 ; C -1 ; WX 740 ; N registered ; B 23 -17 723 698 ; C -1 ; WX 800 ; N Gbreve ; B 44 -17 778 864 ; C -1 ; WX 340 ; N Idotaccent ; B 31 0 301 880 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 720 ; N Egrave ; B 31 0 705 866 ; C -1 ; WX 440 ; N racute ; B 20 0 447 689 ; C -1 ; WX 560 ; N omacron ; B 37 -8 526 635 ; C -1 ; WX 640 ; N Zacute ; B 10 0 656 866 ; C -1 ; WX 640 ; N Zcaron ; B 10 0 656 849 ; C -1 ; WX 549 ; N greaterequal ; B 29 0 526 635 ; C -1 ; WX 800 ; N Eth ; B 31 0 752 681 ; C -1 ; WX 740 ; N Ccedilla ; B 44 -200 702 698 ; C -1 ; WX 300 ; N lcommaaccent ; B 20 -251 286 717 ; C -1 ; WX 380 ; N tcaron ; B 20 -8 388 747 ; C -1 ; WX 520 ; N eogonek ; B 37 -154 491 494 ; C -1 ; WX 780 ; N Uogonek ; B 25 -153 754 681 ; C -1 ; WX 680 ; N Aacute ; B -37 0 714 866 ; C -1 ; WX 680 ; N Adieresis ; B -37 0 714 851 ; C -1 ; WX 520 ; N egrave ; B 37 -8 491 689 ; C -1 ; WX 480 ; N zacute ; B 7 0 476 689 ; C -1 ; WX 300 ; N iogonek ; B 20 -153 289 654 ; C -1 ; WX 800 ; N Oacute ; B 44 -17 758 866 ; C -1 ; WX 560 ; N oacute ; B 37 -8 526 689 ; C -1 ; WX 580 ; N amacron ; B 35 -8 587 635 ; C -1 ; WX 520 ; N sacute ; B 40 -8 487 689 ; C -1 ; WX 300 ; N idieresis ; B 8 0 289 674 ; C -1 ; WX 800 ; N Ocircumflex ; B 44 -17 758 862 ; C -1 ; WX 780 ; N Ugrave ; B 25 -17 754 866 ; C -1 ; WX 614 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 620 ; N thorn ; B 20 -228 583 717 ; C -1 ; WX 372 ; N twosuperior ; B 20 279 367 698 ; C -1 ; WX 800 ; N Odieresis ; B 44 -17 758 851 ; C -1 ; WX 680 ; N mu ; B 20 -251 653 484 ; C -1 ; WX 300 ; N igrave ; B 20 0 288 689 ; C -1 ; WX 560 ; N ohungarumlaut ; B 37 -8 526 698 ; C -1 ; WX 720 ; N Eogonek ; B 31 -153 705 681 ; C -1 ; WX 620 ; N dcroat ; B 37 -8 612 717 ; C -1 ; WX 930 ; N threequarters ; B 52 0 889 691 ; C -1 ; WX 660 ; N Scedilla ; B 28 -200 634 698 ; C -1 ; WX 372 ; N lcaron ; B 20 0 383 732 ; C -1 ; WX 720 ; N Kcommaaccent ; B 31 -251 750 681 ; C -1 ; WX 600 ; N Lacute ; B 31 0 629 866 ; C -1 ; WX 980 ; N trademark ; B 34 277 930 681 ; C -1 ; WX 520 ; N edotaccent ; B 37 -8 491 703 ; C -1 ; WX 340 ; N Igrave ; B 31 0 301 866 ; C -1 ; WX 340 ; N Imacron ; B 18 0 314 812 ; C -1 ; WX 600 ; N Lcaron ; B 31 0 629 707 ; C -1 ; WX 930 ; N onehalf ; B 80 0 885 681 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 635 ; C -1 ; WX 560 ; N ocircumflex ; B 37 -8 526 685 ; C -1 ; WX 660 ; N ntilde ; B 20 0 649 661 ; C -1 ; WX 780 ; N Uhungarumlaut ; B 25 -17 754 875 ; C -1 ; WX 720 ; N Eacute ; B 31 0 705 866 ; C -1 ; WX 520 ; N emacron ; B 37 -8 491 635 ; C -1 ; WX 540 ; N gbreve ; B 17 -243 542 687 ; C -1 ; WX 930 ; N onequarter ; B 80 0 869 681 ; C -1 ; WX 660 ; N Scaron ; B 28 -17 634 849 ; C -1 ; WX 660 ; N Scommaaccent ; B 28 -251 634 698 ; C -1 ; WX 800 ; N Ohungarumlaut ; B 44 -17 758 875 ; C -1 ; WX 400 ; N degree ; B 50 398 350 698 ; C -1 ; WX 560 ; N ograve ; B 37 -8 526 689 ; C -1 ; WX 740 ; N Ccaron ; B 44 -17 702 849 ; C -1 ; WX 680 ; N ugrave ; B 20 -8 653 689 ; C -1 ; WX 453 ; N radical ; B -4 -80 458 762 ; C -1 ; WX 800 ; N Dcaron ; B 31 0 752 849 ; C -1 ; WX 440 ; N rcommaaccent ; B 20 -251 447 494 ; C -1 ; WX 740 ; N Ntilde ; B 26 0 722 838 ; C -1 ; WX 560 ; N otilde ; B 37 -8 526 661 ; C -1 ; WX 720 ; N Rcommaaccent ; B 31 -251 757 681 ; C -1 ; WX 600 ; N Lcommaaccent ; B 31 -251 629 681 ; C -1 ; WX 680 ; N Atilde ; B -37 0 714 838 ; C -1 ; WX 680 ; N Aogonek ; B -37 -153 718 681 ; C -1 ; WX 680 ; N Aring ; B -37 0 714 908 ; C -1 ; WX 800 ; N Otilde ; B 44 -17 758 838 ; C -1 ; WX 480 ; N zdotaccent ; B 7 0 476 703 ; C -1 ; WX 720 ; N Ecaron ; B 31 0 705 849 ; C -1 ; WX 340 ; N Iogonek ; B 31 -153 302 681 ; C -1 ; WX 620 ; N kcommaaccent ; B 20 -251 628 717 ; C -1 ; WX 600 ; N minus ; B 51 224 555 300 ; C -1 ; WX 340 ; N Icircumflex ; B 28 0 312 862 ; C -1 ; WX 660 ; N ncaron ; B 20 0 649 672 ; C -1 ; WX 380 ; N tcommaaccent ; B 20 -251 388 667 ; C -1 ; WX 600 ; N logicalnot ; B 51 128 555 398 ; C -1 ; WX 560 ; N odieresis ; B 37 -8 526 674 ; C -1 ; WX 680 ; N udieresis ; B 20 -8 653 674 ; C -1 ; WX 549 ; N notequal ; B 15 -16 540 529 ; C -1 ; WX 540 ; N gcommaaccent ; B 17 -243 542 765 ; C -1 ; WX 560 ; N eth ; B 37 -8 526 734 ; C -1 ; WX 480 ; N zcaron ; B 7 0 476 672 ; C -1 ; WX 660 ; N ncommaaccent ; B 20 -251 649 494 ; C -1 ; WX 372 ; N onesuperior ; B 80 279 302 688 ; C -1 ; WX 300 ; N imacron ; B -2 0 294 635 ; C -1 ; WX 620 ; N Euro ; B 17 -13 582 694 ; C -1 ; WX 740 ; N Ccircumflex ; B 44 -13 702 899 ; C -1 ; WX 520 ; N ccircumflex ; B 37 -9 498 703 ; C -1 ; WX 740 ; N Cdotaccent ; B 44 -13 702 899 ; C -1 ; WX 520 ; N cdotaccent ; B 37 -9 498 703 ; C -1 ; WX 720 ; N Ebreve ; B 31 0 705 900 ; C -1 ; WX 520 ; N ebreve ; B 37 -9 491 704 ; C -1 ; WX 800 ; N Gcircumflex ; B 44 -13 778 899 ; C -1 ; WX 540 ; N gcircumflex ; B 17 -241 542 781 ; C -1 ; WX 800 ; N Gdotaccent ; B 44 -13 778 899 ; C -1 ; WX 540 ; N gdotaccent ; B 17 -241 542 781 ; C -1 ; WX 800 ; N Hcircumflex ; B 31 0 769 899 ; C -1 ; WX 660 ; N hcircumflex ; B 20 0 643 935 ; C -1 ; WX 800 ; N Hbar ; B 31 0 769 681 ; C -1 ; WX 660 ; N hbar ; B 7 0 643 717 ; C -1 ; WX 340 ; N Itilde ; B 12 0 319 867 ; C -1 ; WX 300 ; N itilde ; B 0 0 307 671 ; C -1 ; WX 340 ; N Ibreve ; B 2 0 330 900 ; C -1 ; WX 300 ; N ibreve ; B -10 0 318 704 ; C -1 ; WX 910 ; N IJ ; B 31 -13 867 681 ; C -1 ; WX 546 ; N ij ; B 20 -241 474 654 ; C -1 ; WX 600 ; N Jcircumflex ; B -23 -13 567 899 ; C -1 ; WX 300 ; N jcircumflex ; B -109 -241 296 682 ; C -1 ; WX 638 ; N kgreenlandic ; B 20 -12 624 497 ; C -1 ; WX 600 ; N Ldot ; B 31 0 629 681 ; C -1 ; WX 456 ; N ldot ; B 20 0 388 717 ; C -1 ; WX 660 ; N napostrophe ; B 20 0 649 721 ; C -1 ; WX 800 ; N Obreve ; B 44 -13 758 900 ; C -1 ; WX 560 ; N obreve ; B 37 -9 526 704 ; C -1 ; WX 660 ; N Scircumflex ; B 28 -13 634 899 ; C -1 ; WX 520 ; N scircumflex ; B 40 -9 487 703 ; C -1 ; WX 620 ; N Tbar ; B -37 0 656 681 ; C -1 ; WX 380 ; N tbar ; B 19 -9 388 667 ; C -1 ; WX 620 ; N Tcedilla ; B -37 -251 656 681 ; C -1 ; WX 380 ; N tcedilla ; B 20 -251 388 667 ; C -1 ; WX 780 ; N Utilde ; B 25 -13 754 867 ; C -1 ; WX 680 ; N utilde ; B 20 -9 653 671 ; C -1 ; WX 780 ; N Ubreve ; B 25 -13 754 900 ; C -1 ; WX 680 ; N ubreve ; B 20 -9 653 704 ; C -1 ; WX 960 ; N Wcircumflex ; B -30 0 984 899 ; C -1 ; WX 780 ; N wcircumflex ; B -19 0 804 703 ; C -1 ; WX 640 ; N Ycircumflex ; B -30 0 666 899 ; C -1 ; WX 540 ; N ycircumflex ; B -23 -241 549 703 ; C -1 ; WX 320 ; N longs ; B 20 0 414 734 ; C -1 ; WX 688 ; N infinity ; B 16 64 666 520 ; EndCharMetrics StartKernData StartKernPairs 882 KPX A T 1 KPX A Tcaron 1 KPX A Tcommaaccent 1 KPX A V -56 KPX A W -40 KPX A Y -35 KPX A Yacute -35 KPX A Ydieresis -35 KPX A v 7 KPX A w 4 KPX A y 32 KPX A yacute 32 KPX A ydieresis 32 KPX Aacute T 1 KPX Aacute Tcaron 1 KPX Aacute Tcommaaccent 1 KPX Aacute V -56 KPX Aacute W -40 KPX Aacute Y -35 KPX Aacute Yacute -35 KPX Aacute Ydieresis -35 KPX Aacute v 7 KPX Aacute w 4 KPX Aacute y 32 KPX Aacute yacute 32 KPX Aacute ydieresis 32 KPX Abreve T 1 KPX Abreve Tcaron 1 KPX Abreve Tcommaaccent 1 KPX Abreve V -56 KPX Abreve W -40 KPX Abreve Y -35 KPX Abreve Yacute -35 KPX Abreve Ydieresis -35 KPX Abreve v 7 KPX Abreve w 4 KPX Abreve y 32 KPX Abreve yacute 32 KPX Abreve ydieresis 32 KPX Acircumflex T 1 KPX Acircumflex Tcaron 1 KPX Acircumflex Tcommaaccent 1 KPX Acircumflex V -56 KPX Acircumflex W -40 KPX Acircumflex Y -35 KPX Acircumflex Yacute -35 KPX Acircumflex Ydieresis -35 KPX Acircumflex v 7 KPX Acircumflex w 4 KPX Acircumflex y 32 KPX Acircumflex yacute 32 KPX Acircumflex ydieresis 32 KPX Adieresis T 1 KPX Adieresis Tcaron 1 KPX Adieresis Tcommaaccent 1 KPX Adieresis V -56 KPX Adieresis W -40 KPX Adieresis Y -35 KPX Adieresis Yacute -35 KPX Adieresis Ydieresis -35 KPX Adieresis v 7 KPX Adieresis w 4 KPX Adieresis y 32 KPX Adieresis yacute 32 KPX Adieresis ydieresis 32 KPX Agrave T 1 KPX Agrave Tcaron 1 KPX Agrave Tcommaaccent 1 KPX Agrave V -56 KPX Agrave W -40 KPX Agrave Y -35 KPX Agrave Yacute -35 KPX Agrave Ydieresis -35 KPX Agrave v 7 KPX Agrave w 4 KPX Agrave y 32 KPX Agrave yacute 32 KPX Agrave ydieresis 32 KPX Amacron T 1 KPX Amacron Tcaron 1 KPX Amacron Tcommaaccent 1 KPX Amacron V -56 KPX Amacron W -40 KPX Amacron Y -35 KPX Amacron Yacute -35 KPX Amacron Ydieresis -35 KPX Amacron v 7 KPX Amacron w 4 KPX Amacron y 32 KPX Amacron yacute 32 KPX Amacron ydieresis 32 KPX Aogonek T 1 KPX Aogonek Tcaron 1 KPX Aogonek Tcommaaccent 1 KPX Aogonek V -56 KPX Aogonek W -40 KPX Aogonek Y -35 KPX Aogonek Yacute -35 KPX Aogonek Ydieresis -35 KPX Aogonek v 7 KPX Aogonek w 4 KPX Aogonek y 32 KPX Aogonek yacute 32 KPX Aogonek ydieresis 32 KPX Aring T 1 KPX Aring Tcaron 1 KPX Aring Tcommaaccent 1 KPX Aring V -56 KPX Aring W -40 KPX Aring Y -35 KPX Aring Yacute -35 KPX Aring Ydieresis -35 KPX Aring v 7 KPX Aring w 4 KPX Aring y 32 KPX Aring yacute 32 KPX Aring ydieresis 32 KPX Atilde T 1 KPX Atilde Tcaron 1 KPX Atilde Tcommaaccent 1 KPX Atilde V -56 KPX Atilde W -40 KPX Atilde Y -35 KPX Atilde Yacute -35 KPX Atilde Ydieresis -35 KPX Atilde v 7 KPX Atilde w 4 KPX Atilde y 32 KPX Atilde yacute 32 KPX Atilde ydieresis 32 KPX F A -21 KPX F Aacute -21 KPX F Abreve -21 KPX F Acircumflex -21 KPX F Adieresis -21 KPX F Agrave -21 KPX F Amacron -21 KPX F Aogonek -21 KPX F Aring -21 KPX F Atilde -21 KPX F comma -41 KPX F period -46 KPX L T 28 KPX L Tcaron 28 KPX L Tcommaaccent 28 KPX L V -4 KPX L W 1 KPX L Y 13 KPX L Yacute 13 KPX L Ydieresis 13 KPX L y 79 KPX L yacute 79 KPX L ydieresis 79 KPX Lacute T 28 KPX Lacute Tcaron 28 KPX Lacute Tcommaaccent 28 KPX Lacute V -4 KPX Lacute W 1 KPX Lacute Y 13 KPX Lacute Yacute 13 KPX Lacute Ydieresis 13 KPX Lacute y 79 KPX Lacute yacute 79 KPX Lacute ydieresis 79 KPX Lcaron T 28 KPX Lcaron Tcaron 28 KPX Lcaron Tcommaaccent 28 KPX Lcaron V -4 KPX Lcaron W 1 KPX Lcaron Y 13 KPX Lcaron Yacute 13 KPX Lcaron Ydieresis 13 KPX Lcaron y 79 KPX Lcaron yacute 79 KPX Lcaron ydieresis 79 KPX Lcommaaccent T 28 KPX Lcommaaccent Tcaron 28 KPX Lcommaaccent Tcommaaccent 28 KPX Lcommaaccent V -4 KPX Lcommaaccent W 1 KPX Lcommaaccent Y 13 KPX Lcommaaccent Yacute 13 KPX Lcommaaccent Ydieresis 13 KPX Lcommaaccent y 79 KPX Lcommaaccent yacute 79 KPX Lcommaaccent ydieresis 79 KPX Lslash T 28 KPX Lslash Tcaron 28 KPX Lslash Tcommaaccent 28 KPX Lslash V -4 KPX Lslash W 1 KPX Lslash Y 13 KPX Lslash Yacute 13 KPX Lslash Ydieresis 13 KPX Lslash y 79 KPX Lslash yacute 79 KPX Lslash ydieresis 79 KPX P A -8 KPX P Aacute -8 KPX P Abreve -8 KPX P Acircumflex -8 KPX P Adieresis -8 KPX P Agrave -8 KPX P Amacron -8 KPX P Aogonek -8 KPX P Aring -8 KPX P Atilde -8 KPX P comma -55 KPX P period -60 KPX R T 71 KPX R Tcaron 71 KPX R Tcommaaccent 71 KPX R V 8 KPX R W 13 KPX R Y 26 KPX R Yacute 26 KPX R Ydieresis 26 KPX R y 59 KPX R yacute 59 KPX R ydieresis 59 KPX Racute T 71 KPX Racute Tcaron 71 KPX Racute Tcommaaccent 71 KPX Racute V 8 KPX Racute W 13 KPX Racute Y 26 KPX Racute Yacute 26 KPX Racute Ydieresis 26 KPX Racute y 59 KPX Racute yacute 59 KPX Racute ydieresis 59 KPX Rcaron T 71 KPX Rcaron Tcaron 71 KPX Rcaron Tcommaaccent 71 KPX Rcaron V 8 KPX Rcaron W 13 KPX Rcaron Y 26 KPX Rcaron Yacute 26 KPX Rcaron Ydieresis 26 KPX Rcaron y 59 KPX Rcaron yacute 59 KPX Rcaron ydieresis 59 KPX Rcommaaccent T 71 KPX Rcommaaccent Tcaron 71 KPX Rcommaaccent Tcommaaccent 71 KPX Rcommaaccent V 8 KPX Rcommaaccent W 13 KPX Rcommaaccent Y 26 KPX Rcommaaccent Yacute 26 KPX Rcommaaccent Ydieresis 26 KPX Rcommaaccent y 59 KPX Rcommaaccent yacute 59 KPX Rcommaaccent ydieresis 59 KPX T A 1 KPX T Aacute 1 KPX T Abreve 1 KPX T Acircumflex 1 KPX T Adieresis 1 KPX T Agrave 1 KPX T Amacron 1 KPX T Aogonek 1 KPX T Aring 1 KPX T Atilde 1 KPX T a 17 KPX T aacute 17 KPX T abreve 17 KPX T acircumflex 17 KPX T adieresis 17 KPX T agrave 17 KPX T amacron 17 KPX T aogonek 17 KPX T aring 17 KPX T atilde 17 KPX T c 14 KPX T cacute 14 KPX T ccaron 14 KPX T ccedilla 14 KPX T comma -28 KPX T e 13 KPX T eacute 13 KPX T ecaron 13 KPX T ecircumflex 13 KPX T edieresis 13 KPX T edotaccent 13 KPX T egrave 13 KPX T emacron 13 KPX T eogonek 13 KPX T hyphen 90 KPX T i 42 KPX T iacute 42 KPX T icircumflex 42 KPX T idieresis 42 KPX T igrave 42 KPX T imacron 42 KPX T iogonek 42 KPX T o 15 KPX T oacute 15 KPX T ocircumflex 15 KPX T odieresis 15 KPX T ograve 15 KPX T ohungarumlaut 15 KPX T omacron 15 KPX T oslash 15 KPX T otilde 15 KPX T period -33 KPX T r 38 KPX T racute 38 KPX T rcaron 38 KPX T rcommaaccent 38 KPX T s 16 KPX T sacute 16 KPX T scaron 16 KPX T scedilla 16 KPX T scommaaccent 16 KPX Tcaron A 1 KPX Tcaron Aacute 1 KPX Tcaron Abreve 1 KPX Tcaron Acircumflex 1 KPX Tcaron Adieresis 1 KPX Tcaron Agrave 1 KPX Tcaron Amacron 1 KPX Tcaron Aogonek 1 KPX Tcaron Aring 1 KPX Tcaron Atilde 1 KPX Tcaron a 17 KPX Tcaron aacute 17 KPX Tcaron abreve 17 KPX Tcaron acircumflex 17 KPX Tcaron adieresis 17 KPX Tcaron agrave 17 KPX Tcaron amacron 17 KPX Tcaron aogonek 17 KPX Tcaron aring 17 KPX Tcaron atilde 17 KPX Tcaron c 14 KPX Tcaron cacute 14 KPX Tcaron ccaron 14 KPX Tcaron ccedilla 14 KPX Tcaron comma -28 KPX Tcaron e 13 KPX Tcaron eacute 13 KPX Tcaron ecaron 13 KPX Tcaron ecircumflex 13 KPX Tcaron edieresis 13 KPX Tcaron edotaccent 13 KPX Tcaron egrave 13 KPX Tcaron emacron 13 KPX Tcaron eogonek 13 KPX Tcaron hyphen 90 KPX Tcaron i 42 KPX Tcaron iacute 42 KPX Tcaron icircumflex 42 KPX Tcaron idieresis 42 KPX Tcaron igrave 42 KPX Tcaron imacron 42 KPX Tcaron iogonek 42 KPX Tcaron o 15 KPX Tcaron oacute 15 KPX Tcaron ocircumflex 15 KPX Tcaron odieresis 15 KPX Tcaron ograve 15 KPX Tcaron ohungarumlaut 15 KPX Tcaron omacron 15 KPX Tcaron oslash 15 KPX Tcaron otilde 15 KPX Tcaron period -33 KPX Tcaron r 38 KPX Tcaron racute 38 KPX Tcaron rcaron 38 KPX Tcaron rcommaaccent 38 KPX Tcaron s 16 KPX Tcaron sacute 16 KPX Tcaron scaron 16 KPX Tcaron scedilla 16 KPX Tcaron scommaaccent 16 KPX Tcommaaccent A 1 KPX Tcommaaccent Aacute 1 KPX Tcommaaccent Abreve 1 KPX Tcommaaccent Acircumflex 1 KPX Tcommaaccent Adieresis 1 KPX Tcommaaccent Agrave 1 KPX Tcommaaccent Amacron 1 KPX Tcommaaccent Aogonek 1 KPX Tcommaaccent Aring 1 KPX Tcommaaccent Atilde 1 KPX Tcommaaccent a 17 KPX Tcommaaccent aacute 17 KPX Tcommaaccent abreve 17 KPX Tcommaaccent acircumflex 17 KPX Tcommaaccent adieresis 17 KPX Tcommaaccent agrave 17 KPX Tcommaaccent amacron 17 KPX Tcommaaccent aogonek 17 KPX Tcommaaccent aring 17 KPX Tcommaaccent atilde 17 KPX Tcommaaccent c 14 KPX Tcommaaccent cacute 14 KPX Tcommaaccent ccaron 14 KPX Tcommaaccent ccedilla 14 KPX Tcommaaccent comma -28 KPX Tcommaaccent e 13 KPX Tcommaaccent eacute 13 KPX Tcommaaccent ecaron 13 KPX Tcommaaccent ecircumflex 13 KPX Tcommaaccent edieresis 13 KPX Tcommaaccent edotaccent 13 KPX Tcommaaccent egrave 13 KPX Tcommaaccent emacron 13 KPX Tcommaaccent eogonek 13 KPX Tcommaaccent hyphen 90 KPX Tcommaaccent i 42 KPX Tcommaaccent iacute 42 KPX Tcommaaccent icircumflex 42 KPX Tcommaaccent idieresis 42 KPX Tcommaaccent igrave 42 KPX Tcommaaccent imacron 42 KPX Tcommaaccent iogonek 42 KPX Tcommaaccent o 15 KPX Tcommaaccent oacute 15 KPX Tcommaaccent ocircumflex 15 KPX Tcommaaccent odieresis 15 KPX Tcommaaccent ograve 15 KPX Tcommaaccent ohungarumlaut 15 KPX Tcommaaccent omacron 15 KPX Tcommaaccent oslash 15 KPX Tcommaaccent otilde 15 KPX Tcommaaccent period -33 KPX Tcommaaccent r 38 KPX Tcommaaccent racute 38 KPX Tcommaaccent rcaron 38 KPX Tcommaaccent rcommaaccent 38 KPX Tcommaaccent s 16 KPX Tcommaaccent sacute 16 KPX Tcommaaccent scaron 16 KPX Tcommaaccent scedilla 16 KPX Tcommaaccent scommaaccent 16 KPX V A -66 KPX V Aacute -66 KPX V Abreve -66 KPX V Acircumflex -66 KPX V Adieresis -66 KPX V Agrave -66 KPX V Amacron -66 KPX V Aogonek -66 KPX V Aring -66 KPX V Atilde -66 KPX V a -69 KPX V aacute -69 KPX V abreve -69 KPX V acircumflex -69 KPX V adieresis -69 KPX V agrave -69 KPX V amacron -69 KPX V aogonek -69 KPX V aring -69 KPX V atilde -69 KPX V comma -34 KPX V e -72 KPX V eacute -72 KPX V ecaron -72 KPX V ecircumflex -72 KPX V edieresis -72 KPX V edotaccent -72 KPX V egrave -72 KPX V emacron -72 KPX V eogonek -72 KPX V hyphen 11 KPX V i -20 KPX V iacute -20 KPX V iogonek -20 KPX V o -71 KPX V oacute -71 KPX V ocircumflex -71 KPX V odieresis -71 KPX V ograve -71 KPX V ohungarumlaut -71 KPX V omacron -71 KPX V oslash -71 KPX V otilde -71 KPX V period -40 KPX V r -41 KPX V racute -41 KPX V rcaron -41 KPX V rcommaaccent -41 KPX V u -38 KPX V uacute -38 KPX V ucircumflex -38 KPX V udieresis -38 KPX V ugrave -38 KPX V uhungarumlaut -38 KPX V umacron -38 KPX V uogonek -38 KPX V uring -38 KPX V y 15 KPX V yacute 15 KPX V ydieresis 15 KPX W A -64 KPX W Aacute -64 KPX W Abreve -64 KPX W Acircumflex -64 KPX W Adieresis -64 KPX W Agrave -64 KPX W Amacron -64 KPX W Aogonek -64 KPX W Aring -64 KPX W Atilde -64 KPX W a -66 KPX W aacute -66 KPX W abreve -66 KPX W acircumflex -66 KPX W adieresis -66 KPX W agrave -66 KPX W amacron -66 KPX W aogonek -66 KPX W aring -66 KPX W atilde -66 KPX W comma -34 KPX W e -69 KPX W eacute -69 KPX W ecaron -69 KPX W ecircumflex -69 KPX W edieresis -69 KPX W edotaccent -69 KPX W egrave -69 KPX W emacron -69 KPX W eogonek -69 KPX W hyphen 11 KPX W i -20 KPX W iacute -20 KPX W iogonek -20 KPX W o -68 KPX W oacute -68 KPX W ocircumflex -68 KPX W odieresis -68 KPX W ograve -68 KPX W ohungarumlaut -68 KPX W omacron -68 KPX W oslash -68 KPX W otilde -68 KPX W period -40 KPX W r -41 KPX W racute -41 KPX W rcaron -41 KPX W rcommaaccent -41 KPX W u -38 KPX W uacute -38 KPX W ucircumflex -38 KPX W udieresis -38 KPX W ugrave -38 KPX W uhungarumlaut -38 KPX W umacron -38 KPX W uogonek -38 KPX W uring -38 KPX W y 15 KPX W yacute 15 KPX W ydieresis 15 KPX Y A -53 KPX Y Aacute -53 KPX Y Abreve -53 KPX Y Acircumflex -53 KPX Y Adieresis -53 KPX Y Agrave -53 KPX Y Amacron -53 KPX Y Aogonek -53 KPX Y Aring -53 KPX Y Atilde -53 KPX Y a -54 KPX Y aacute -54 KPX Y abreve -54 KPX Y acircumflex -54 KPX Y adieresis -54 KPX Y agrave -54 KPX Y amacron -54 KPX Y aogonek -54 KPX Y aring -54 KPX Y atilde -54 KPX Y comma -34 KPX Y e -58 KPX Y eacute -58 KPX Y ecaron -58 KPX Y ecircumflex -58 KPX Y edieresis -58 KPX Y edotaccent -58 KPX Y egrave -58 KPX Y emacron -58 KPX Y eogonek -58 KPX Y hyphen 11 KPX Y i -37 KPX Y iacute -37 KPX Y icircumflex -37 KPX Y iogonek -37 KPX Y o -57 KPX Y oacute -57 KPX Y ocircumflex -57 KPX Y odieresis -57 KPX Y ograve -57 KPX Y ohungarumlaut -57 KPX Y omacron -57 KPX Y oslash -57 KPX Y otilde -57 KPX Y p -31 KPX Y period -40 KPX Y q -55 KPX Y u -38 KPX Y uacute -38 KPX Y ucircumflex -38 KPX Y udieresis -38 KPX Y ugrave -38 KPX Y uhungarumlaut -38 KPX Y umacron -38 KPX Y uogonek -38 KPX Y uring -38 KPX Y v 15 KPX Yacute A -53 KPX Yacute Aacute -53 KPX Yacute Abreve -53 KPX Yacute Acircumflex -53 KPX Yacute Adieresis -53 KPX Yacute Agrave -53 KPX Yacute Amacron -53 KPX Yacute Aogonek -53 KPX Yacute Aring -53 KPX Yacute Atilde -53 KPX Yacute a -54 KPX Yacute aacute -54 KPX Yacute abreve -54 KPX Yacute acircumflex -54 KPX Yacute adieresis -54 KPX Yacute agrave -54 KPX Yacute amacron -54 KPX Yacute aogonek -54 KPX Yacute aring -54 KPX Yacute atilde -54 KPX Yacute comma -34 KPX Yacute e -58 KPX Yacute eacute -58 KPX Yacute ecaron -58 KPX Yacute ecircumflex -58 KPX Yacute edieresis -58 KPX Yacute edotaccent -58 KPX Yacute egrave -58 KPX Yacute emacron -58 KPX Yacute eogonek -58 KPX Yacute hyphen 11 KPX Yacute i -37 KPX Yacute iacute -37 KPX Yacute iogonek -37 KPX Yacute o -57 KPX Yacute oacute -57 KPX Yacute ocircumflex -57 KPX Yacute odieresis -57 KPX Yacute ograve -57 KPX Yacute ohungarumlaut -57 KPX Yacute omacron -57 KPX Yacute oslash -57 KPX Yacute otilde -57 KPX Yacute p -31 KPX Yacute period -40 KPX Yacute q -55 KPX Yacute u -38 KPX Yacute uacute -38 KPX Yacute ucircumflex -38 KPX Yacute udieresis -38 KPX Yacute ugrave -38 KPX Yacute uhungarumlaut -38 KPX Yacute umacron -38 KPX Yacute uogonek -38 KPX Yacute uring -38 KPX Yacute v 15 KPX Ydieresis A -53 KPX Ydieresis Aacute -53 KPX Ydieresis Abreve -53 KPX Ydieresis Acircumflex -53 KPX Ydieresis Adieresis -53 KPX Ydieresis Agrave -53 KPX Ydieresis Amacron -53 KPX Ydieresis Aogonek -53 KPX Ydieresis Aring -53 KPX Ydieresis Atilde -53 KPX Ydieresis a -54 KPX Ydieresis aacute -54 KPX Ydieresis abreve -54 KPX Ydieresis acircumflex -54 KPX Ydieresis adieresis -54 KPX Ydieresis agrave -54 KPX Ydieresis amacron -54 KPX Ydieresis aogonek -54 KPX Ydieresis aring -54 KPX Ydieresis atilde -54 KPX Ydieresis comma -34 KPX Ydieresis e -58 KPX Ydieresis eacute -58 KPX Ydieresis ecaron -58 KPX Ydieresis ecircumflex -58 KPX Ydieresis edieresis -58 KPX Ydieresis edotaccent -58 KPX Ydieresis egrave -58 KPX Ydieresis emacron -58 KPX Ydieresis eogonek -58 KPX Ydieresis hyphen 11 KPX Ydieresis i -37 KPX Ydieresis iacute -37 KPX Ydieresis iogonek -37 KPX Ydieresis o -57 KPX Ydieresis oacute -57 KPX Ydieresis ocircumflex -57 KPX Ydieresis odieresis -57 KPX Ydieresis ograve -57 KPX Ydieresis ohungarumlaut -57 KPX Ydieresis omacron -57 KPX Ydieresis oslash -57 KPX Ydieresis otilde -57 KPX Ydieresis p -31 KPX Ydieresis period -40 KPX Ydieresis q -55 KPX Ydieresis u -38 KPX Ydieresis uacute -38 KPX Ydieresis ucircumflex -38 KPX Ydieresis udieresis -38 KPX Ydieresis ugrave -38 KPX Ydieresis uhungarumlaut -38 KPX Ydieresis umacron -38 KPX Ydieresis uogonek -38 KPX Ydieresis uring -38 KPX Ydieresis v 15 KPX f f 29 KPX r c 7 KPX r cacute 7 KPX r ccaron 7 KPX r ccedilla 7 KPX r comma -58 KPX r d 7 KPX r dcroat 7 KPX r e 7 KPX r eacute 7 KPX r ecaron 7 KPX r ecircumflex 7 KPX r edieresis 7 KPX r edotaccent 7 KPX r egrave 7 KPX r emacron 7 KPX r eogonek 7 KPX r f 33 KPX r g -4 KPX r gbreve -4 KPX r gcommaaccent -4 KPX r h -21 KPX r hyphen 70 KPX r m 31 KPX r n 31 KPX r nacute 31 KPX r ncaron 31 KPX r ncommaaccent 31 KPX r ntilde 31 KPX r o 8 KPX r oacute 8 KPX r ocircumflex 8 KPX r odieresis 8 KPX r ograve 8 KPX r ohungarumlaut 8 KPX r omacron 8 KPX r oslash 8 KPX r otilde 8 KPX r period -64 KPX r q 9 KPX racute c 7 KPX racute cacute 7 KPX racute ccaron 7 KPX racute ccedilla 7 KPX racute comma -58 KPX racute d 7 KPX racute dcroat 7 KPX racute e 7 KPX racute eacute 7 KPX racute ecaron 7 KPX racute ecircumflex 7 KPX racute edieresis 7 KPX racute edotaccent 7 KPX racute egrave 7 KPX racute emacron 7 KPX racute eogonek 7 KPX racute f 33 KPX racute g -4 KPX racute gbreve -4 KPX racute gcommaaccent -4 KPX racute h -21 KPX racute hyphen 70 KPX racute m 31 KPX racute n 31 KPX racute nacute 31 KPX racute ncaron 31 KPX racute ncommaaccent 31 KPX racute ntilde 31 KPX racute o 8 KPX racute oacute 8 KPX racute ocircumflex 8 KPX racute odieresis 8 KPX racute ograve 8 KPX racute ohungarumlaut 8 KPX racute omacron 8 KPX racute oslash 8 KPX racute otilde 8 KPX racute period -64 KPX racute q 9 KPX rcaron c 7 KPX rcaron cacute 7 KPX rcaron ccaron 7 KPX rcaron ccedilla 7 KPX rcaron comma -58 KPX rcaron d 7 KPX rcaron dcroat 7 KPX rcaron e 7 KPX rcaron eacute 7 KPX rcaron ecaron 7 KPX rcaron ecircumflex 7 KPX rcaron edieresis 7 KPX rcaron edotaccent 7 KPX rcaron egrave 7 KPX rcaron emacron 7 KPX rcaron eogonek 7 KPX rcaron f 33 KPX rcaron g -4 KPX rcaron gbreve -4 KPX rcaron gcommaaccent -4 KPX rcaron h -21 KPX rcaron hyphen 70 KPX rcaron m 31 KPX rcaron n 31 KPX rcaron nacute 31 KPX rcaron ncaron 31 KPX rcaron ncommaaccent 31 KPX rcaron ntilde 31 KPX rcaron o 8 KPX rcaron oacute 8 KPX rcaron ocircumflex 8 KPX rcaron odieresis 8 KPX rcaron ograve 8 KPX rcaron ohungarumlaut 8 KPX rcaron omacron 8 KPX rcaron oslash 8 KPX rcaron otilde 8 KPX rcaron period -64 KPX rcaron q 9 KPX rcommaaccent c 7 KPX rcommaaccent cacute 7 KPX rcommaaccent ccaron 7 KPX rcommaaccent ccedilla 7 KPX rcommaaccent comma -58 KPX rcommaaccent d 7 KPX rcommaaccent dcroat 7 KPX rcommaaccent e 7 KPX rcommaaccent eacute 7 KPX rcommaaccent ecaron 7 KPX rcommaaccent ecircumflex 7 KPX rcommaaccent edieresis 7 KPX rcommaaccent edotaccent 7 KPX rcommaaccent egrave 7 KPX rcommaaccent emacron 7 KPX rcommaaccent eogonek 7 KPX rcommaaccent f 33 KPX rcommaaccent g -4 KPX rcommaaccent gbreve -4 KPX rcommaaccent gcommaaccent -4 KPX rcommaaccent h -21 KPX rcommaaccent hyphen 70 KPX rcommaaccent m 31 KPX rcommaaccent n 31 KPX rcommaaccent nacute 31 KPX rcommaaccent ncaron 31 KPX rcommaaccent ncommaaccent 31 KPX rcommaaccent ntilde 31 KPX rcommaaccent o 8 KPX rcommaaccent oacute 8 KPX rcommaaccent ocircumflex 8 KPX rcommaaccent odieresis 8 KPX rcommaaccent ograve 8 KPX rcommaaccent ohungarumlaut 8 KPX rcommaaccent omacron 8 KPX rcommaaccent oslash 8 KPX rcommaaccent otilde 8 KPX rcommaaccent period -64 KPX rcommaaccent q 9 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Palatino-Roman.afm0000644000222100022210000011561214541067540016212 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:33:55 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43073 Comment VMusage 50775 65800 FontName Palatino-Roman FullName Palatino Roman FamilyName Palatino Weight Medium ItalicAngle 0 IsFixedPitch false FontBBox -166 -283 1021 927 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 692 XHeight 469 Ascender 726 Descender -281 StdHW 51 StdVW 84 StartCharMetrics 359 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 278 ; N exclam ; B 81 -5 197 694 ; C 34 ; WX 371 ; N quotedbl ; B 51 469 320 709 ; C 35 ; WX 500 ; N numbersign ; B 4 0 495 684 ; C 36 ; WX 500 ; N dollar ; B 30 -116 471 731 ; C 37 ; WX 840 ; N percent ; B 39 -20 802 709 ; C 38 ; WX 778 ; N ampersand ; B 43 -20 753 689 ; C 39 ; WX 278 ; N quoteright ; B 45 446 233 709 ; C 40 ; WX 333 ; N parenleft ; B 60 -215 301 726 ; C 41 ; WX 333 ; N parenright ; B 32 -215 273 726 ; C 42 ; WX 389 ; N asterisk ; B 32 342 359 689 ; C 43 ; WX 606 ; N plus ; B 51 7 555 512 ; C 44 ; WX 250 ; N comma ; B 16 -155 218 123 ; C 45 ; WX 333 ; N hyphen ; B 17 215 312 287 ; C 46 ; WX 250 ; N period ; B 67 -5 183 111 ; C 47 ; WX 606 ; N slash ; B 87 -119 519 726 ; C 48 ; WX 500 ; N zero ; B 29 -20 465 689 ; C 49 ; WX 500 ; N one ; B 60 -3 418 694 ; C 50 ; WX 500 ; N two ; B 16 -3 468 689 ; C 51 ; WX 500 ; N three ; B 15 -20 462 689 ; C 52 ; WX 500 ; N four ; B 2 -3 472 694 ; C 53 ; WX 500 ; N five ; B 13 -20 459 689 ; C 54 ; WX 500 ; N six ; B 32 -20 468 689 ; C 55 ; WX 500 ; N seven ; B 44 -3 497 689 ; C 56 ; WX 500 ; N eight ; B 30 -20 464 689 ; C 57 ; WX 500 ; N nine ; B 20 -20 457 689 ; C 58 ; WX 250 ; N colon ; B 66 -5 182 456 ; C 59 ; WX 250 ; N semicolon ; B 16 -153 218 456 ; C 60 ; WX 606 ; N less ; B 57 0 558 522 ; C 61 ; WX 606 ; N equal ; B 51 136 555 386 ; C 62 ; WX 606 ; N greater ; B 48 0 549 522 ; C 63 ; WX 444 ; N question ; B 43 -5 395 694 ; C 64 ; WX 747 ; N at ; B 24 -20 724 694 ; C 65 ; WX 778 ; N A ; B 15 -3 756 700 ; C 66 ; WX 611 ; N B ; B 26 -3 576 692 ; C 67 ; WX 709 ; N C ; B 22 -20 670 709 ; C 68 ; WX 774 ; N D ; B 22 -4 751 692 ; C 69 ; WX 611 ; N E ; B 22 -4 572 692 ; C 70 ; WX 556 ; N F ; B 22 -3 536 692 ; C 71 ; WX 763 ; N G ; B 22 -20 728 709 ; C 72 ; WX 832 ; N H ; B 22 -3 810 692 ; C 73 ; WX 337 ; N I ; B 22 -3 315 692 ; C 74 ; WX 333 ; N J ; B -15 -194 311 692 ; C 75 ; WX 726 ; N K ; B 22 -3 719 692 ; C 76 ; WX 611 ; N L ; B 22 -4 586 692 ; C 77 ; WX 946 ; N M ; B 16 -13 926 692 ; C 78 ; WX 831 ; N N ; B 17 -20 813 692 ; C 79 ; WX 786 ; N O ; B 22 -20 764 709 ; C 80 ; WX 604 ; N P ; B 22 -3 580 692 ; C 81 ; WX 786 ; N Q ; B 22 -176 764 709 ; C 82 ; WX 668 ; N R ; B 22 -3 669 692 ; C 83 ; WX 525 ; N S ; B 24 -20 503 709 ; C 84 ; WX 613 ; N T ; B 18 -3 595 692 ; C 85 ; WX 778 ; N U ; B 12 -20 759 692 ; C 86 ; WX 722 ; N V ; B 8 -9 706 692 ; C 87 ; WX 1000 ; N W ; B 8 -9 984 700 ; C 88 ; WX 667 ; N X ; B 14 -3 648 700 ; C 89 ; WX 667 ; N Y ; B 9 -3 654 705 ; C 90 ; WX 667 ; N Z ; B 15 -3 638 692 ; C 91 ; WX 333 ; N bracketleft ; B 79 -184 288 726 ; C 92 ; WX 606 ; N backslash ; B 81 0 512 726 ; C 93 ; WX 333 ; N bracketright ; B 45 -184 254 726 ; C 94 ; WX 606 ; N asciicircum ; B 51 283 554 689 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 278 ; N quoteleft ; B 45 446 233 709 ; C 97 ; WX 500 ; N a ; B 32 -12 471 469 ; C 98 ; WX 553 ; N b ; B -15 -12 508 726 ; C 99 ; WX 444 ; N c ; B 26 -20 413 469 ; C 100 ; WX 611 ; N d ; B 35 -12 579 726 ; C 101 ; WX 479 ; N e ; B 26 -20 448 469 ; C 102 ; WX 333 ; N f ; B 23 -3 341 728 ; L i fi ; L l fl ; C 103 ; WX 556 ; N g ; B 32 -283 544 469 ; C 104 ; WX 582 ; N h ; B 6 -3 572 726 ; C 105 ; WX 291 ; N i ; B 21 -3 271 687 ; C 106 ; WX 234 ; N j ; B -40 -283 167 688 ; C 107 ; WX 556 ; N k ; B 21 -12 549 726 ; C 108 ; WX 291 ; N l ; B 21 -3 271 726 ; C 109 ; WX 883 ; N m ; B 16 -3 869 469 ; C 110 ; WX 582 ; N n ; B 6 -3 572 469 ; C 111 ; WX 546 ; N o ; B 32 -20 514 469 ; C 112 ; WX 601 ; N p ; B 8 -281 554 469 ; C 113 ; WX 560 ; N q ; B 35 -281 560 469 ; C 114 ; WX 395 ; N r ; B 21 -3 374 469 ; C 115 ; WX 424 ; N s ; B 30 -20 391 469 ; C 116 ; WX 326 ; N t ; B 22 -12 319 621 ; C 117 ; WX 603 ; N u ; B 18 -12 581 469 ; C 118 ; WX 565 ; N v ; B 6 -7 539 459 ; C 119 ; WX 834 ; N w ; B 6 -7 808 469 ; C 120 ; WX 516 ; N x ; B 20 -3 496 469 ; C 121 ; WX 556 ; N y ; B 12 -283 544 459 ; C 122 ; WX 500 ; N z ; B 16 -3 466 462 ; C 123 ; WX 333 ; N braceleft ; B 58 -175 289 726 ; C 124 ; WX 606 ; N bar ; B 275 -250 331 750 ; C 125 ; WX 333 ; N braceright ; B 44 -175 275 726 ; C 126 ; WX 606 ; N asciitilde ; B 51 176 555 347 ; C 160 ; WX 250 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 278 ; N exclamdown ; B 81 -225 197 469 ; C 162 ; WX 500 ; N cent ; B 61 -101 448 562 ; C 163 ; WX 500 ; N sterling ; B 12 -13 478 694 ; C 164 ; WX 167 ; N fraction ; B -166 0 337 689 ; C 165 ; WX 500 ; N yen ; B 5 -3 496 702 ; C 166 ; WX 500 ; N florin ; B 0 -262 473 706 ; C 167 ; WX 500 ; N section ; B 26 -219 465 709 ; C 168 ; WX 500 ; N currency ; B 30 96 470 531 ; C 169 ; WX 208 ; N quotesingle ; B 60 469 148 709 ; C 170 ; WX 500 ; N quotedblleft ; B 51 446 449 709 ; C 171 ; WX 500 ; N guillemotleft ; B 50 71 450 428 ; C 172 ; WX 331 ; N guilsinglleft ; B 66 71 265 428 ; C 173 ; WX 331 ; N guilsinglright ; B 66 71 265 428 ; C 174 ; WX 605 ; N fi ; B 23 -3 587 728 ; C 175 ; WX 608 ; N fl ; B 23 -3 590 728 ; C 177 ; WX 500 ; N endash ; B 0 219 500 277 ; C 178 ; WX 500 ; N dagger ; B 34 -5 466 694 ; C 179 ; WX 500 ; N daggerdbl ; B 34 -249 466 694 ; C 180 ; WX 250 ; N periodcentered ; B 67 203 183 319 ; C 182 ; WX 628 ; N paragraph ; B 39 -150 589 695 ; C 183 ; WX 606 ; N bullet ; B 131 172 475 516 ; C 184 ; WX 278 ; N quotesinglbase ; B 22 -153 210 110 ; C 185 ; WX 500 ; N quotedblbase ; B 51 -153 449 110 ; C 186 ; WX 500 ; N quotedblright ; B 51 446 449 709 ; C 187 ; WX 500 ; N guillemotright ; B 50 71 450 428 ; C 188 ; WX 1000 ; N ellipsis ; B 109 -5 891 111 ; C 189 ; WX 1144 ; N perthousand ; B 123 -20 1021 709 ; C 191 ; WX 444 ; N questiondown ; B 43 -231 395 469 ; C 193 ; WX 333 ; N grave ; B 31 506 255 677 ; C 194 ; WX 333 ; N acute ; B 78 506 302 677 ; C 195 ; WX 333 ; N circumflex ; B 11 510 323 677 ; C 196 ; WX 333 ; N tilde ; B 2 535 332 640 ; C 197 ; WX 333 ; N macron ; B 11 538 323 591 ; C 198 ; WX 333 ; N breve ; B 26 506 308 664 ; C 199 ; WX 250 ; N dotaccent ; B 70 576 181 687 ; C 200 ; WX 333 ; N dieresis ; B 12 576 322 687 ; C 202 ; WX 333 ; N ring ; B 67 496 267 696 ; C 203 ; WX 333 ; N cedilla ; B 96 -225 304 -10 ; C 205 ; WX 380 ; N hungarumlaut ; B 3 506 377 687 ; C 206 ; WX 313 ; N ogonek ; B 50 -225 288 -20 ; C 207 ; WX 333 ; N caron ; B 11 510 323 677 ; C 208 ; WX 1000 ; N emdash ; B 0 219 1000 277 ; C 225 ; WX 944 ; N AE ; B -10 -4 908 692 ; C 227 ; WX 333 ; N ordfeminine ; B 24 422 310 709 ; C 232 ; WX 611 ; N Lslash ; B 6 -4 586 692 ; C 233 ; WX 833 ; N Oslash ; B 30 -20 797 709 ; C 234 ; WX 998 ; N OE ; B 22 -20 962 709 ; C 235 ; WX 333 ; N ordmasculine ; B 10 416 323 709 ; C 241 ; WX 758 ; N ae ; B 30 -20 732 469 ; C 245 ; WX 287 ; N dotlessi ; B 21 -3 271 469 ; C 248 ; WX 291 ; N lslash ; B -14 -3 306 726 ; C 249 ; WX 556 ; N oslash ; B 16 -23 530 474 ; C 250 ; WX 827 ; N oe ; B 32 -20 800 469 ; C 251 ; WX 556 ; N germandbls ; B 23 -9 519 731 ; C -1 ; WX 337 ; N Idieresis ; B 14 -3 324 868 ; C -1 ; WX 479 ; N eacute ; B 26 -20 448 697 ; C -1 ; WX 500 ; N abreve ; B 32 -12 471 684 ; C -1 ; WX 603 ; N uhungarumlaut ; B 18 -12 581 707 ; C -1 ; WX 479 ; N ecaron ; B 26 -20 448 697 ; C -1 ; WX 667 ; N Ydieresis ; B 9 -3 654 868 ; C -1 ; WX 606 ; N divide ; B 51 10 555 512 ; C -1 ; WX 667 ; N Yacute ; B 9 -3 654 908 ; C -1 ; WX 778 ; N Acircumflex ; B 15 -3 756 908 ; C -1 ; WX 500 ; N aacute ; B 32 -12 471 697 ; C -1 ; WX 778 ; N Ucircumflex ; B 12 -20 759 908 ; C -1 ; WX 556 ; N yacute ; B 12 -283 544 697 ; C -1 ; WX 424 ; N scommaaccent ; B 30 -263 391 469 ; C -1 ; WX 479 ; N ecircumflex ; B 26 -20 448 697 ; C -1 ; WX 778 ; N Uring ; B 12 -20 759 927 ; C -1 ; WX 778 ; N Udieresis ; B 12 -20 759 868 ; C -1 ; WX 500 ; N aogonek ; B 32 -225 488 469 ; C -1 ; WX 778 ; N Uacute ; B 12 -20 759 908 ; C -1 ; WX 603 ; N uogonek ; B 18 -225 628 469 ; C -1 ; WX 611 ; N Edieresis ; B 22 -4 572 868 ; C -1 ; WX 774 ; N Dcroat ; B 14 -3 751 692 ; C -1 ; WX 250 ; N commaaccent ; B 53 -283 213 -50 ; C -1 ; WX 747 ; N copyright ; B 11 -18 736 706 ; C -1 ; WX 611 ; N Emacron ; B 22 -4 572 822 ; C -1 ; WX 444 ; N ccaron ; B 26 -20 413 697 ; C -1 ; WX 500 ; N aring ; B 32 -12 471 716 ; C -1 ; WX 831 ; N Ncommaaccent ; B 17 -283 813 692 ; C -1 ; WX 291 ; N lacute ; B 21 -3 321 927 ; C -1 ; WX 500 ; N agrave ; B 32 -12 471 697 ; C -1 ; WX 613 ; N Tcommaaccent ; B 18 -283 595 692 ; C -1 ; WX 709 ; N Cacute ; B 22 -20 670 908 ; C -1 ; WX 500 ; N atilde ; B 32 -12 471 672 ; C -1 ; WX 611 ; N Edotaccent ; B 22 -4 572 868 ; C -1 ; WX 424 ; N scaron ; B 30 -20 391 697 ; C -1 ; WX 424 ; N scedilla ; B 30 -225 391 469 ; C -1 ; WX 287 ; N iacute ; B 21 -3 279 697 ; C -1 ; WX 471 ; N lozenge ; B 21 0 451 710 ; C -1 ; WX 668 ; N Rcaron ; B 22 -3 669 908 ; C -1 ; WX 763 ; N Gcommaaccent ; B 22 -283 728 709 ; C -1 ; WX 603 ; N ucircumflex ; B 18 -12 581 697 ; C -1 ; WX 500 ; N acircumflex ; B 32 -12 471 697 ; C -1 ; WX 778 ; N Amacron ; B 15 -3 756 822 ; C -1 ; WX 395 ; N rcaron ; B 21 -3 374 697 ; C -1 ; WX 444 ; N ccedilla ; B 26 -225 413 469 ; C -1 ; WX 667 ; N Zdotaccent ; B 15 -3 638 868 ; C -1 ; WX 604 ; N Thorn ; B 32 -3 574 692 ; C -1 ; WX 786 ; N Omacron ; B 22 -20 764 822 ; C -1 ; WX 668 ; N Racute ; B 22 -3 669 908 ; C -1 ; WX 525 ; N Sacute ; B 24 -20 503 908 ; C -1 ; WX 671 ; N dcaron ; B 35 -12 684 736 ; C -1 ; WX 778 ; N Umacron ; B 12 -20 759 822 ; C -1 ; WX 603 ; N uring ; B 18 -12 581 716 ; C -1 ; WX 300 ; N threesuperior ; B 1 266 299 689 ; C -1 ; WX 786 ; N Ograve ; B 22 -20 764 908 ; C -1 ; WX 778 ; N Agrave ; B 15 -3 756 908 ; C -1 ; WX 778 ; N Abreve ; B 15 -3 756 915 ; C -1 ; WX 606 ; N multiply ; B 83 36 523 474 ; C -1 ; WX 603 ; N uacute ; B 18 -12 581 697 ; C -1 ; WX 613 ; N Tcaron ; B 18 -3 595 908 ; C -1 ; WX 476 ; N partialdiff ; B 34 -21 450 711 ; C -1 ; WX 556 ; N ydieresis ; B 12 -283 544 657 ; C -1 ; WX 831 ; N Nacute ; B 17 -20 813 908 ; C -1 ; WX 287 ; N icircumflex ; B -12 -3 300 697 ; C -1 ; WX 611 ; N Ecircumflex ; B 22 -4 572 908 ; C -1 ; WX 500 ; N adieresis ; B 32 -12 471 657 ; C -1 ; WX 479 ; N edieresis ; B 26 -20 448 657 ; C -1 ; WX 444 ; N cacute ; B 26 -20 413 697 ; C -1 ; WX 582 ; N nacute ; B 6 -3 572 697 ; C -1 ; WX 603 ; N umacron ; B 18 -12 581 611 ; C -1 ; WX 831 ; N Ncaron ; B 17 -20 813 908 ; C -1 ; WX 337 ; N Iacute ; B 22 -3 315 908 ; C -1 ; WX 606 ; N plusminus ; B 51 0 555 512 ; C -1 ; WX 606 ; N brokenbar ; B 275 -175 331 675 ; C -1 ; WX 747 ; N registered ; B 11 -18 736 706 ; C -1 ; WX 763 ; N Gbreve ; B 22 -20 728 915 ; C -1 ; WX 337 ; N Idotaccent ; B 22 -3 315 868 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 611 ; N Egrave ; B 22 -4 572 908 ; C -1 ; WX 395 ; N racute ; B 21 -3 374 697 ; C -1 ; WX 546 ; N omacron ; B 32 -20 514 611 ; C -1 ; WX 667 ; N Zacute ; B 15 -3 638 908 ; C -1 ; WX 667 ; N Zcaron ; B 15 -3 638 908 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 643 ; C -1 ; WX 774 ; N Eth ; B 14 -3 751 692 ; C -1 ; WX 709 ; N Ccedilla ; B 22 -225 670 709 ; C -1 ; WX 291 ; N lcommaaccent ; B 21 -263 271 726 ; C -1 ; WX 386 ; N tcaron ; B 22 -12 401 746 ; C -1 ; WX 479 ; N eogonek ; B 26 -225 448 469 ; C -1 ; WX 778 ; N Uogonek ; B 12 -225 759 692 ; C -1 ; WX 778 ; N Aacute ; B 15 -3 756 908 ; C -1 ; WX 778 ; N Adieresis ; B 15 -3 756 868 ; C -1 ; WX 479 ; N egrave ; B 26 -20 448 697 ; C -1 ; WX 500 ; N zacute ; B 16 -3 466 697 ; C -1 ; WX 291 ; N iogonek ; B 21 -225 318 687 ; C -1 ; WX 786 ; N Oacute ; B 22 -20 764 908 ; C -1 ; WX 546 ; N oacute ; B 32 -20 514 697 ; C -1 ; WX 500 ; N amacron ; B 32 -12 471 611 ; C -1 ; WX 424 ; N sacute ; B 30 -20 391 697 ; C -1 ; WX 287 ; N idieresis ; B -11 -3 299 657 ; C -1 ; WX 786 ; N Ocircumflex ; B 22 -20 764 908 ; C -1 ; WX 778 ; N Ugrave ; B 12 -20 759 908 ; C -1 ; WX 600 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 601 ; N thorn ; B -2 -281 544 726 ; C -1 ; WX 300 ; N twosuperior ; B 0 273 301 689 ; C -1 ; WX 786 ; N Odieresis ; B 22 -20 764 868 ; C -1 ; WX 603 ; N mu ; B 18 -236 581 469 ; C -1 ; WX 287 ; N igrave ; B 8 -3 271 697 ; C -1 ; WX 546 ; N ohungarumlaut ; B 32 -20 514 707 ; C -1 ; WX 611 ; N Eogonek ; B 22 -225 572 692 ; C -1 ; WX 611 ; N dcroat ; B 35 -12 579 726 ; C -1 ; WX 750 ; N threequarters ; B 15 -3 735 689 ; C -1 ; WX 525 ; N Scedilla ; B 24 -225 503 709 ; C -1 ; WX 371 ; N lcaron ; B 21 -3 376 726 ; C -1 ; WX 726 ; N Kcommaaccent ; B 22 -283 719 692 ; C -1 ; WX 611 ; N Lacute ; B 22 -4 586 908 ; C -1 ; WX 979 ; N trademark ; B 40 285 939 689 ; C -1 ; WX 479 ; N edotaccent ; B 26 -20 448 657 ; C -1 ; WX 337 ; N Igrave ; B 22 -3 315 908 ; C -1 ; WX 337 ; N Imacron ; B 13 -3 325 822 ; C -1 ; WX 611 ; N Lcaron ; B 22 -4 586 716 ; C -1 ; WX 750 ; N onehalf ; B 15 -3 735 692 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 642 ; C -1 ; WX 546 ; N ocircumflex ; B 32 -20 514 697 ; C -1 ; WX 582 ; N ntilde ; B 6 -3 572 672 ; C -1 ; WX 778 ; N Uhungarumlaut ; B 12 -20 759 918 ; C -1 ; WX 611 ; N Eacute ; B 22 -4 572 908 ; C -1 ; WX 479 ; N emacron ; B 26 -20 448 611 ; C -1 ; WX 556 ; N gbreve ; B 32 -283 544 724 ; C -1 ; WX 750 ; N onequarter ; B 30 -3 727 692 ; C -1 ; WX 525 ; N Scaron ; B 24 -20 503 908 ; C -1 ; WX 525 ; N Scommaaccent ; B 24 -283 503 709 ; C -1 ; WX 786 ; N Ohungarumlaut ; B 22 -20 764 918 ; C -1 ; WX 400 ; N degree ; B 50 389 350 689 ; C -1 ; WX 546 ; N ograve ; B 32 -20 514 697 ; C -1 ; WX 709 ; N Ccaron ; B 22 -20 670 908 ; C -1 ; WX 603 ; N ugrave ; B 18 -12 581 697 ; C -1 ; WX 453 ; N radical ; B 12 -55 442 747 ; C -1 ; WX 774 ; N Dcaron ; B 22 -4 751 908 ; C -1 ; WX 395 ; N rcommaaccent ; B 21 -263 374 469 ; C -1 ; WX 831 ; N Ntilde ; B 17 -20 813 871 ; C -1 ; WX 546 ; N otilde ; B 32 -20 514 672 ; C -1 ; WX 668 ; N Rcommaaccent ; B 22 -283 669 692 ; C -1 ; WX 611 ; N Lcommaaccent ; B 22 -283 586 692 ; C -1 ; WX 778 ; N Atilde ; B 15 -3 756 871 ; C -1 ; WX 778 ; N Aogonek ; B 15 -225 768 700 ; C -1 ; WX 778 ; N Aring ; B 15 -3 756 927 ; C -1 ; WX 786 ; N Otilde ; B 22 -20 764 883 ; C -1 ; WX 500 ; N zdotaccent ; B 16 -3 466 657 ; C -1 ; WX 611 ; N Ecaron ; B 22 -4 572 908 ; C -1 ; WX 337 ; N Iogonek ; B 22 -225 328 692 ; C -1 ; WX 556 ; N kcommaaccent ; B 21 -263 549 726 ; C -1 ; WX 606 ; N minus ; B 51 233 555 289 ; C -1 ; WX 337 ; N Icircumflex ; B 13 -3 325 908 ; C -1 ; WX 582 ; N ncaron ; B 6 -3 572 697 ; C -1 ; WX 326 ; N tcommaaccent ; B 22 -263 319 621 ; C -1 ; WX 606 ; N logicalnot ; B 51 120 551 386 ; C -1 ; WX 546 ; N odieresis ; B 32 -20 514 657 ; C -1 ; WX 603 ; N udieresis ; B 18 -12 581 657 ; C -1 ; WX 549 ; N notequal ; B 12 -16 537 538 ; C -1 ; WX 556 ; N gcommaaccent ; B 32 -283 544 773 ; C -1 ; WX 546 ; N eth ; B 32 -20 504 728 ; C -1 ; WX 500 ; N zcaron ; B 16 -3 466 697 ; C -1 ; WX 582 ; N ncommaaccent ; B 6 -263 572 469 ; C -1 ; WX 300 ; N onesuperior ; B 31 273 269 692 ; C -1 ; WX 291 ; N imacron ; B 21 -3 271 591 ; C -1 ; WX 500 ; N Euro ; B -38 -20 465 709 ; C -1 ; WX 709 ; N Ccircumflex ; B 22 -20 670 959 ; C -1 ; WX 444 ; N ccircumflex ; B 26 -20 413 736 ; C -1 ; WX 709 ; N Cdotaccent ; B 22 -20 670 892 ; C -1 ; WX 444 ; N cdotaccent ; B 26 -20 413 669 ; C -1 ; WX 611 ; N Ebreve ; B 22 -3 572 950 ; C -1 ; WX 479 ; N ebreve ; B 26 -20 448 727 ; C -1 ; WX 763 ; N Gcircumflex ; B 22 -20 728 959 ; C -1 ; WX 556 ; N gcircumflex ; B 32 -283 544 736 ; C -1 ; WX 763 ; N Gdotaccent ; B 22 -20 728 892 ; C -1 ; WX 556 ; N gdotaccent ; B 32 -283 544 669 ; C -1 ; WX 832 ; N Hcircumflex ; B 22 -3 810 959 ; C -1 ; WX 582 ; N hcircumflex ; B 6 -3 572 993 ; C -1 ; WX 832 ; N Hbar ; B 21 -3 810 692 ; C -1 ; WX 582 ; N hbar ; B 6 -3 572 726 ; C -1 ; WX 337 ; N Itilde ; B 4 -3 334 897 ; C -1 ; WX 287 ; N itilde ; B -19 -3 311 674 ; C -1 ; WX 337 ; N Ibreve ; B 22 -3 315 950 ; C -1 ; WX 287 ; N ibreve ; B 5 -3 287 727 ; C -1 ; WX 690 ; N IJ ; B 22 -196 662 692 ; C -1 ; WX 504 ; N ij ; B 21 -283 419 688 ; C -1 ; WX 333 ; N Jcircumflex ; B -15 -196 311 959 ; C -1 ; WX 234 ; N jcircumflex ; B -59 -283 253 739 ; C -1 ; WX 556 ; N kgreenlandic ; B 21 -12 549 469 ; C -1 ; WX 611 ; N Ldot ; B 22 -3 586 692 ; C -1 ; WX 440 ; N ldot ; B 21 -3 380 726 ; C -1 ; WX 582 ; N napostrophe ; B 6 -3 572 740 ; C -1 ; WX 786 ; N Obreve ; B 22 -20 764 950 ; C -1 ; WX 546 ; N obreve ; B 32 -20 514 727 ; C -1 ; WX 525 ; N Scircumflex ; B 24 -20 503 959 ; C -1 ; WX 424 ; N scircumflex ; B 30 -20 391 736 ; C -1 ; WX 613 ; N Tbar ; B 18 -3 595 692 ; C -1 ; WX 326 ; N tbar ; B 22 -12 319 621 ; C -1 ; WX 613 ; N Tcedilla ; B 18 -283 595 692 ; C -1 ; WX 326 ; N tcedilla ; B 22 -263 319 621 ; C -1 ; WX 778 ; N Utilde ; B 12 -20 759 897 ; C -1 ; WX 603 ; N utilde ; B 18 -12 581 674 ; C -1 ; WX 778 ; N Ubreve ; B 12 -20 759 950 ; C -1 ; WX 603 ; N ubreve ; B 18 -12 581 727 ; C -1 ; WX 1000 ; N Wcircumflex ; B 8 -9 984 959 ; C -1 ; WX 834 ; N wcircumflex ; B 6 -7 808 736 ; C -1 ; WX 667 ; N Ycircumflex ; B 9 -3 654 959 ; C -1 ; WX 556 ; N ycircumflex ; B 12 -283 544 736 ; C -1 ; WX 333 ; N longs ; B 23 -3 341 728 ; C -1 ; WX 666 ; N infinity ; B 5 75 657 452 ; EndCharMetrics StartKernData StartKernPairs 1031 KPX A T -74 KPX A Tcaron -74 KPX A Tcommaaccent -74 KPX A V -111 KPX A W -74 KPX A Y -111 KPX A Yacute -111 KPX A Ydieresis -111 KPX A quoteright -74 KPX A space -55 KPX A v -92 KPX A w -74 KPX A y -74 KPX A yacute -74 KPX A ydieresis -74 KPX Aacute T -74 KPX Aacute Tcaron -74 KPX Aacute Tcommaaccent -74 KPX Aacute V -111 KPX Aacute W -74 KPX Aacute Y -111 KPX Aacute Yacute -111 KPX Aacute Ydieresis -111 KPX Aacute quoteright -74 KPX Aacute space -55 KPX Aacute v -92 KPX Aacute w -74 KPX Aacute y -74 KPX Aacute yacute -74 KPX Aacute ydieresis -74 KPX Abreve T -74 KPX Abreve Tcaron -74 KPX Abreve Tcommaaccent -74 KPX Abreve V -111 KPX Abreve W -74 KPX Abreve Y -111 KPX Abreve Yacute -111 KPX Abreve Ydieresis -111 KPX Abreve quoteright -74 KPX Abreve space -55 KPX Abreve v -92 KPX Abreve w -74 KPX Abreve y -74 KPX Abreve yacute -74 KPX Abreve ydieresis -74 KPX Acircumflex T -74 KPX Acircumflex Tcaron -74 KPX Acircumflex Tcommaaccent -74 KPX Acircumflex V -111 KPX Acircumflex W -74 KPX Acircumflex Y -111 KPX Acircumflex Yacute -111 KPX Acircumflex Ydieresis -111 KPX Acircumflex quoteright -74 KPX Acircumflex space -55 KPX Acircumflex v -92 KPX Acircumflex w -74 KPX Acircumflex y -74 KPX Acircumflex yacute -74 KPX Acircumflex ydieresis -74 KPX Adieresis T -74 KPX Adieresis Tcaron -74 KPX Adieresis Tcommaaccent -74 KPX Adieresis V -111 KPX Adieresis W -74 KPX Adieresis Y -111 KPX Adieresis Yacute -111 KPX Adieresis Ydieresis -111 KPX Adieresis quoteright -74 KPX Adieresis space -55 KPX Adieresis v -92 KPX Adieresis w -74 KPX Adieresis y -74 KPX Adieresis yacute -74 KPX Adieresis ydieresis -74 KPX Agrave T -74 KPX Agrave Tcaron -74 KPX Agrave Tcommaaccent -74 KPX Agrave V -111 KPX Agrave W -74 KPX Agrave Y -111 KPX Agrave Yacute -111 KPX Agrave Ydieresis -111 KPX Agrave quoteright -74 KPX Agrave space -55 KPX Agrave v -92 KPX Agrave w -74 KPX Agrave y -74 KPX Agrave yacute -74 KPX Agrave ydieresis -74 KPX Amacron T -74 KPX Amacron Tcaron -74 KPX Amacron Tcommaaccent -74 KPX Amacron V -111 KPX Amacron W -74 KPX Amacron Y -111 KPX Amacron Yacute -111 KPX Amacron Ydieresis -111 KPX Amacron quoteright -74 KPX Amacron space -55 KPX Amacron v -92 KPX Amacron w -74 KPX Amacron y -74 KPX Amacron yacute -74 KPX Amacron ydieresis -74 KPX Aogonek T -74 KPX Aogonek Tcaron -74 KPX Aogonek Tcommaaccent -74 KPX Aogonek V -111 KPX Aogonek W -74 KPX Aogonek Y -111 KPX Aogonek Yacute -111 KPX Aogonek Ydieresis -111 KPX Aogonek quoteright -74 KPX Aogonek space -55 KPX Aogonek v -92 KPX Aogonek w -74 KPX Aogonek y -74 KPX Aogonek yacute -74 KPX Aogonek ydieresis -74 KPX Aring T -74 KPX Aring Tcaron -74 KPX Aring Tcommaaccent -74 KPX Aring V -111 KPX Aring W -74 KPX Aring Y -111 KPX Aring Yacute -111 KPX Aring Ydieresis -111 KPX Aring quoteright -74 KPX Aring space -55 KPX Aring v -92 KPX Aring w -74 KPX Aring y -74 KPX Aring yacute -74 KPX Aring ydieresis -74 KPX Atilde T -74 KPX Atilde Tcaron -74 KPX Atilde Tcommaaccent -74 KPX Atilde V -111 KPX Atilde W -74 KPX Atilde Y -111 KPX Atilde Yacute -111 KPX Atilde Ydieresis -111 KPX Atilde quoteright -74 KPX Atilde space -55 KPX Atilde v -92 KPX Atilde w -74 KPX Atilde y -74 KPX Atilde yacute -74 KPX Atilde ydieresis -74 KPX F A -74 KPX F Aacute -74 KPX F Abreve -74 KPX F Acircumflex -74 KPX F Adieresis -74 KPX F Agrave -74 KPX F Amacron -74 KPX F Aogonek -74 KPX F Aring -74 KPX F Atilde -74 KPX F comma -92 KPX F period -92 KPX L T -74 KPX L Tcaron -74 KPX L Tcommaaccent -74 KPX L V -92 KPX L W -74 KPX L Y -92 KPX L Yacute -92 KPX L Ydieresis -92 KPX L quoteright -74 KPX L space -37 KPX L y -55 KPX L yacute -55 KPX L ydieresis -55 KPX Lacute T -74 KPX Lacute Tcaron -74 KPX Lacute Tcommaaccent -74 KPX Lacute V -92 KPX Lacute W -74 KPX Lacute Y -92 KPX Lacute Yacute -92 KPX Lacute Ydieresis -92 KPX Lacute quoteright -74 KPX Lacute space -37 KPX Lacute y -55 KPX Lacute yacute -55 KPX Lacute ydieresis -55 KPX Lcaron T -74 KPX Lcaron Tcaron -74 KPX Lcaron Tcommaaccent -74 KPX Lcaron V -92 KPX Lcaron W -74 KPX Lcaron Y -92 KPX Lcaron Yacute -92 KPX Lcaron Ydieresis -92 KPX Lcaron quoteright -74 KPX Lcaron space -37 KPX Lcaron y -55 KPX Lcaron yacute -55 KPX Lcaron ydieresis -55 KPX Lcommaaccent T -74 KPX Lcommaaccent Tcaron -74 KPX Lcommaaccent Tcommaaccent -74 KPX Lcommaaccent V -92 KPX Lcommaaccent W -74 KPX Lcommaaccent Y -92 KPX Lcommaaccent Yacute -92 KPX Lcommaaccent Ydieresis -92 KPX Lcommaaccent quoteright -74 KPX Lcommaaccent space -37 KPX Lcommaaccent y -55 KPX Lcommaaccent yacute -55 KPX Lcommaaccent ydieresis -55 KPX Lslash T -74 KPX Lslash Tcaron -74 KPX Lslash Tcommaaccent -74 KPX Lslash V -92 KPX Lslash W -74 KPX Lslash Y -92 KPX Lslash Yacute -92 KPX Lslash Ydieresis -92 KPX Lslash quoteright -74 KPX Lslash space -37 KPX Lslash y -55 KPX Lslash yacute -55 KPX Lslash ydieresis -55 KPX P A -92 KPX P Aacute -92 KPX P Abreve -92 KPX P Acircumflex -92 KPX P Adieresis -92 KPX P Agrave -92 KPX P Amacron -92 KPX P Aogonek -92 KPX P Aring -92 KPX P Atilde -92 KPX P comma -129 KPX P period -129 KPX P space -18 KPX R T -37 KPX R Tcaron -37 KPX R Tcommaaccent -37 KPX R V -55 KPX R W -37 KPX R Y -37 KPX R Yacute -37 KPX R Ydieresis -37 KPX R y -37 KPX R yacute -37 KPX R ydieresis -37 KPX Racute T -37 KPX Racute Tcaron -37 KPX Racute Tcommaaccent -37 KPX Racute V -55 KPX Racute W -37 KPX Racute Y -37 KPX Racute Yacute -37 KPX Racute Ydieresis -37 KPX Racute y -37 KPX Racute yacute -37 KPX Racute ydieresis -37 KPX Rcaron T -37 KPX Rcaron Tcaron -37 KPX Rcaron Tcommaaccent -37 KPX Rcaron V -55 KPX Rcaron W -37 KPX Rcaron Y -37 KPX Rcaron Yacute -37 KPX Rcaron Ydieresis -37 KPX Rcaron y -37 KPX Rcaron yacute -37 KPX Rcaron ydieresis -37 KPX Rcommaaccent T -37 KPX Rcommaaccent Tcaron -37 KPX Rcommaaccent Tcommaaccent -37 KPX Rcommaaccent V -55 KPX Rcommaaccent W -37 KPX Rcommaaccent Y -37 KPX Rcommaaccent Yacute -37 KPX Rcommaaccent Ydieresis -37 KPX Rcommaaccent y -37 KPX Rcommaaccent yacute -37 KPX Rcommaaccent ydieresis -37 KPX T A -74 KPX T Aacute -74 KPX T Abreve -74 KPX T Acircumflex -74 KPX T Adieresis -74 KPX T Agrave -74 KPX T Amacron -74 KPX T Aogonek -74 KPX T Aring -74 KPX T Atilde -74 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -92 KPX T aacute -92 KPX T abreve -92 KPX T acircumflex -92 KPX T adieresis -52 KPX T agrave -52 KPX T amacron -52 KPX T aogonek -92 KPX T aring -92 KPX T atilde -52 KPX T c -111 KPX T cacute -111 KPX T ccaron -71 KPX T ccedilla -111 KPX T colon -55 KPX T comma -74 KPX T e -92 KPX T eacute -92 KPX T ecaron -92 KPX T ecircumflex -92 KPX T edieresis -52 KPX T edotaccent -92 KPX T egrave -92 KPX T emacron -92 KPX T eogonek -92 KPX T hyphen -55 KPX T i -55 KPX T iacute -55 KPX T iogonek -55 KPX T o -92 KPX T oacute -92 KPX T ocircumflex -92 KPX T odieresis -92 KPX T ograve -92 KPX T ohungarumlaut -92 KPX T omacron -92 KPX T oslash -92 KPX T otilde -92 KPX T period -74 KPX T r -90 KPX T racute -90 KPX T rcaron -50 KPX T rcommaaccent -90 KPX T s -90 KPX T sacute -90 KPX T scaron -50 KPX T scedilla -90 KPX T scommaaccent -90 KPX T semicolon -55 KPX T u -90 KPX T uacute -90 KPX T ucircumflex -90 KPX T udieresis -90 KPX T ugrave -90 KPX T uhungarumlaut -90 KPX T umacron -90 KPX T uogonek -90 KPX T uring -90 KPX T w -90 KPX T y -90 KPX T yacute -90 KPX T ydieresis -90 KPX Tcaron A -74 KPX Tcaron Aacute -74 KPX Tcaron Abreve -74 KPX Tcaron Acircumflex -74 KPX Tcaron Adieresis -74 KPX Tcaron Agrave -74 KPX Tcaron Amacron -74 KPX Tcaron Aogonek -74 KPX Tcaron Aring -74 KPX Tcaron Atilde -74 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -92 KPX Tcaron aacute -92 KPX Tcaron abreve -92 KPX Tcaron acircumflex -92 KPX Tcaron adieresis -52 KPX Tcaron agrave -52 KPX Tcaron amacron -52 KPX Tcaron aogonek -92 KPX Tcaron aring -92 KPX Tcaron atilde -52 KPX Tcaron c -111 KPX Tcaron cacute -111 KPX Tcaron ccaron -71 KPX Tcaron ccedilla -111 KPX Tcaron colon -55 KPX Tcaron comma -74 KPX Tcaron e -92 KPX Tcaron eacute -92 KPX Tcaron ecaron -92 KPX Tcaron ecircumflex -92 KPX Tcaron edieresis -52 KPX Tcaron edotaccent -92 KPX Tcaron egrave -92 KPX Tcaron emacron -92 KPX Tcaron eogonek -92 KPX Tcaron hyphen -55 KPX Tcaron i -55 KPX Tcaron iacute -55 KPX Tcaron iogonek -55 KPX Tcaron o -92 KPX Tcaron oacute -92 KPX Tcaron ocircumflex -92 KPX Tcaron odieresis -92 KPX Tcaron ograve -92 KPX Tcaron ohungarumlaut -92 KPX Tcaron omacron -92 KPX Tcaron oslash -92 KPX Tcaron otilde -92 KPX Tcaron period -74 KPX Tcaron r -90 KPX Tcaron racute -90 KPX Tcaron rcaron -50 KPX Tcaron rcommaaccent -90 KPX Tcaron s -90 KPX Tcaron sacute -90 KPX Tcaron scaron -50 KPX Tcaron scedilla -90 KPX Tcaron scommaaccent -90 KPX Tcaron semicolon -55 KPX Tcaron u -90 KPX Tcaron uacute -90 KPX Tcaron ucircumflex -90 KPX Tcaron udieresis -90 KPX Tcaron ugrave -90 KPX Tcaron uhungarumlaut -90 KPX Tcaron umacron -90 KPX Tcaron uogonek -90 KPX Tcaron uring -90 KPX Tcaron w -90 KPX Tcaron y -90 KPX Tcaron yacute -90 KPX Tcaron ydieresis -90 KPX Tcommaaccent A -74 KPX Tcommaaccent Aacute -74 KPX Tcommaaccent Abreve -74 KPX Tcommaaccent Acircumflex -74 KPX Tcommaaccent Adieresis -74 KPX Tcommaaccent Agrave -74 KPX Tcommaaccent Amacron -74 KPX Tcommaaccent Aogonek -74 KPX Tcommaaccent Aring -74 KPX Tcommaaccent Atilde -74 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -92 KPX Tcommaaccent aacute -92 KPX Tcommaaccent abreve -92 KPX Tcommaaccent acircumflex -92 KPX Tcommaaccent adieresis -52 KPX Tcommaaccent agrave -52 KPX Tcommaaccent amacron -52 KPX Tcommaaccent aogonek -92 KPX Tcommaaccent aring -92 KPX Tcommaaccent atilde -52 KPX Tcommaaccent c -111 KPX Tcommaaccent cacute -111 KPX Tcommaaccent ccaron -71 KPX Tcommaaccent ccedilla -111 KPX Tcommaaccent colon -55 KPX Tcommaaccent comma -74 KPX Tcommaaccent e -92 KPX Tcommaaccent eacute -92 KPX Tcommaaccent ecaron -92 KPX Tcommaaccent ecircumflex -92 KPX Tcommaaccent edieresis -52 KPX Tcommaaccent edotaccent -92 KPX Tcommaaccent egrave -92 KPX Tcommaaccent emacron -92 KPX Tcommaaccent eogonek -92 KPX Tcommaaccent hyphen -55 KPX Tcommaaccent i -55 KPX Tcommaaccent iacute -55 KPX Tcommaaccent iogonek -55 KPX Tcommaaccent o -92 KPX Tcommaaccent oacute -92 KPX Tcommaaccent ocircumflex -92 KPX Tcommaaccent odieresis -92 KPX Tcommaaccent ograve -92 KPX Tcommaaccent ohungarumlaut -92 KPX Tcommaaccent omacron -92 KPX Tcommaaccent oslash -92 KPX Tcommaaccent otilde -92 KPX Tcommaaccent period -74 KPX Tcommaaccent r -90 KPX Tcommaaccent racute -90 KPX Tcommaaccent rcaron -50 KPX Tcommaaccent rcommaaccent -90 KPX Tcommaaccent s -90 KPX Tcommaaccent sacute -90 KPX Tcommaaccent scaron -50 KPX Tcommaaccent scedilla -90 KPX Tcommaaccent scommaaccent -90 KPX Tcommaaccent semicolon -55 KPX Tcommaaccent u -90 KPX Tcommaaccent uacute -90 KPX Tcommaaccent ucircumflex -90 KPX Tcommaaccent udieresis -90 KPX Tcommaaccent ugrave -90 KPX Tcommaaccent uhungarumlaut -90 KPX Tcommaaccent umacron -90 KPX Tcommaaccent uogonek -90 KPX Tcommaaccent uring -90 KPX Tcommaaccent w -90 KPX Tcommaaccent y -90 KPX Tcommaaccent yacute -90 KPX Tcommaaccent ydieresis -90 KPX V A -111 KPX V Aacute -111 KPX V Abreve -111 KPX V Acircumflex -111 KPX V Adieresis -111 KPX V Agrave -111 KPX V Amacron -111 KPX V Aogonek -111 KPX V Aring -111 KPX V Atilde -111 KPX V a -92 KPX V aacute -92 KPX V abreve -92 KPX V acircumflex -92 KPX V adieresis -92 KPX V agrave -92 KPX V amacron -92 KPX V aogonek -92 KPX V aring -92 KPX V atilde -92 KPX V colon -55 KPX V comma -129 KPX V e -111 KPX V eacute -111 KPX V ecaron -111 KPX V ecircumflex -111 KPX V edieresis -71 KPX V edotaccent -111 KPX V egrave -71 KPX V emacron -111 KPX V eogonek -111 KPX V hyphen -74 KPX V i -55 KPX V iacute -55 KPX V iogonek -55 KPX V o -111 KPX V oacute -111 KPX V ocircumflex -111 KPX V odieresis -111 KPX V ograve -71 KPX V ohungarumlaut -111 KPX V omacron -111 KPX V oslash -111 KPX V otilde -111 KPX V period -129 KPX V r -92 KPX V racute -92 KPX V rcaron -92 KPX V rcommaaccent -92 KPX V semicolon -55 KPX V u -92 KPX V uacute -92 KPX V ucircumflex -92 KPX V udieresis -92 KPX V ugrave -92 KPX V uhungarumlaut -92 KPX V umacron -92 KPX V uogonek -92 KPX V uring -92 KPX V y -92 KPX V yacute -92 KPX V ydieresis -92 KPX W A -92 KPX W Aacute -92 KPX W Abreve -92 KPX W Acircumflex -92 KPX W Adieresis -92 KPX W Agrave -92 KPX W Amacron -92 KPX W Aogonek -92 KPX W Aring -92 KPX W Atilde -92 KPX W a -92 KPX W aacute -92 KPX W abreve -92 KPX W acircumflex -92 KPX W adieresis -92 KPX W agrave -92 KPX W amacron -92 KPX W aogonek -92 KPX W aring -92 KPX W atilde -92 KPX W colon -18 KPX W comma -92 KPX W e -92 KPX W eacute -92 KPX W ecaron -92 KPX W ecircumflex -92 KPX W edieresis -92 KPX W edotaccent -92 KPX W egrave -92 KPX W emacron -92 KPX W eogonek -92 KPX W hyphen -55 KPX W i -55 KPX W iacute -55 KPX W icircumflex -55 KPX W idieresis -55 KPX W igrave -55 KPX W imacron -55 KPX W iogonek -55 KPX W o -92 KPX W oacute -92 KPX W ocircumflex -92 KPX W odieresis -92 KPX W ograve -92 KPX W ohungarumlaut -92 KPX W omacron -92 KPX W oslash -92 KPX W otilde -92 KPX W period -92 KPX W r -74 KPX W racute -74 KPX W rcaron -74 KPX W rcommaaccent -74 KPX W semicolon -18 KPX W u -50 KPX W uacute -50 KPX W ucircumflex -50 KPX W udieresis -50 KPX W ugrave -50 KPX W uhungarumlaut -50 KPX W umacron -50 KPX W uogonek -50 KPX W uring -50 KPX W y -50 KPX W yacute -50 KPX W ydieresis -50 KPX Y A -92 KPX Y Aacute -92 KPX Y Abreve -92 KPX Y Acircumflex -92 KPX Y Adieresis -92 KPX Y Agrave -92 KPX Y Amacron -92 KPX Y Aogonek -92 KPX Y Aring -92 KPX Y Atilde -92 KPX Y a -92 KPX Y aacute -92 KPX Y abreve -92 KPX Y acircumflex -92 KPX Y adieresis -92 KPX Y agrave -92 KPX Y amacron -92 KPX Y aogonek -92 KPX Y aring -92 KPX Y atilde -92 KPX Y colon -74 KPX Y comma -111 KPX Y e -92 KPX Y eacute -92 KPX Y ecaron -92 KPX Y ecircumflex -92 KPX Y edieresis -92 KPX Y edotaccent -92 KPX Y egrave -92 KPX Y emacron -92 KPX Y eogonek -92 KPX Y hyphen -92 KPX Y i -55 KPX Y iacute -55 KPX Y imacron -55 KPX Y iogonek -55 KPX Y o -92 KPX Y oacute -92 KPX Y ocircumflex -92 KPX Y odieresis -92 KPX Y ograve -92 KPX Y ohungarumlaut -92 KPX Y omacron -92 KPX Y oslash -92 KPX Y otilde -92 KPX Y p -111 KPX Y period -111 KPX Y q -90 KPX Y semicolon -74 KPX Y space -18 KPX Y u -90 KPX Y uacute -90 KPX Y ucircumflex -90 KPX Y udieresis -90 KPX Y ugrave -90 KPX Y uhungarumlaut -90 KPX Y umacron -90 KPX Y uogonek -90 KPX Y uring -90 KPX Y v -90 KPX Yacute A -92 KPX Yacute Aacute -92 KPX Yacute Abreve -92 KPX Yacute Acircumflex -92 KPX Yacute Adieresis -92 KPX Yacute Agrave -92 KPX Yacute Amacron -92 KPX Yacute Aogonek -92 KPX Yacute Aring -92 KPX Yacute Atilde -92 KPX Yacute a -92 KPX Yacute aacute -92 KPX Yacute abreve -92 KPX Yacute acircumflex -92 KPX Yacute adieresis -92 KPX Yacute agrave -92 KPX Yacute amacron -92 KPX Yacute aogonek -92 KPX Yacute aring -92 KPX Yacute atilde -92 KPX Yacute colon -74 KPX Yacute comma -111 KPX Yacute e -92 KPX Yacute eacute -92 KPX Yacute ecaron -92 KPX Yacute ecircumflex -92 KPX Yacute edieresis -92 KPX Yacute edotaccent -92 KPX Yacute egrave -92 KPX Yacute emacron -92 KPX Yacute eogonek -92 KPX Yacute hyphen -92 KPX Yacute i -55 KPX Yacute iacute -55 KPX Yacute imacron -55 KPX Yacute iogonek -55 KPX Yacute o -92 KPX Yacute oacute -92 KPX Yacute ocircumflex -92 KPX Yacute odieresis -92 KPX Yacute ograve -92 KPX Yacute ohungarumlaut -92 KPX Yacute omacron -92 KPX Yacute oslash -92 KPX Yacute otilde -92 KPX Yacute p -111 KPX Yacute period -111 KPX Yacute q -90 KPX Yacute semicolon -74 KPX Yacute space -18 KPX Yacute u -90 KPX Yacute uacute -90 KPX Yacute ucircumflex -90 KPX Yacute udieresis -90 KPX Yacute ugrave -90 KPX Yacute uhungarumlaut -90 KPX Yacute umacron -90 KPX Yacute uogonek -90 KPX Yacute uring -90 KPX Yacute v -90 KPX Ydieresis A -92 KPX Ydieresis Aacute -92 KPX Ydieresis Abreve -92 KPX Ydieresis Acircumflex -92 KPX Ydieresis Adieresis -92 KPX Ydieresis Agrave -92 KPX Ydieresis Amacron -92 KPX Ydieresis Aogonek -92 KPX Ydieresis Aring -92 KPX Ydieresis Atilde -92 KPX Ydieresis a -92 KPX Ydieresis aacute -92 KPX Ydieresis abreve -92 KPX Ydieresis acircumflex -92 KPX Ydieresis adieresis -92 KPX Ydieresis agrave -92 KPX Ydieresis amacron -92 KPX Ydieresis aogonek -92 KPX Ydieresis aring -92 KPX Ydieresis atilde -92 KPX Ydieresis colon -74 KPX Ydieresis comma -111 KPX Ydieresis e -92 KPX Ydieresis eacute -92 KPX Ydieresis ecaron -92 KPX Ydieresis ecircumflex -92 KPX Ydieresis edieresis -92 KPX Ydieresis edotaccent -92 KPX Ydieresis egrave -92 KPX Ydieresis emacron -92 KPX Ydieresis eogonek -92 KPX Ydieresis hyphen -92 KPX Ydieresis i -55 KPX Ydieresis iacute -55 KPX Ydieresis imacron -55 KPX Ydieresis iogonek -55 KPX Ydieresis o -92 KPX Ydieresis oacute -92 KPX Ydieresis ocircumflex -92 KPX Ydieresis odieresis -92 KPX Ydieresis ograve -92 KPX Ydieresis ohungarumlaut -92 KPX Ydieresis omacron -92 KPX Ydieresis oslash -92 KPX Ydieresis otilde -92 KPX Ydieresis p -111 KPX Ydieresis period -111 KPX Ydieresis q -90 KPX Ydieresis semicolon -74 KPX Ydieresis space -18 KPX Ydieresis u -90 KPX Ydieresis uacute -90 KPX Ydieresis ucircumflex -90 KPX Ydieresis udieresis -90 KPX Ydieresis ugrave -90 KPX Ydieresis uhungarumlaut -90 KPX Ydieresis umacron -90 KPX Ydieresis uogonek -90 KPX Ydieresis uring -90 KPX Ydieresis v -90 KPX f f -18 KPX f quoteright 55 KPX one one -55 KPX quoteleft quoteleft -37 KPX quoteright quoteright -37 KPX r c -18 KPX r cacute -18 KPX r ccaron -18 KPX r ccedilla -18 KPX r comma -74 KPX r d -18 KPX r dcroat -18 KPX r e -18 KPX r eacute -18 KPX r ecaron -18 KPX r ecircumflex -18 KPX r edieresis -18 KPX r edotaccent -18 KPX r egrave -18 KPX r emacron -18 KPX r eogonek -18 KPX r g -18 KPX r gbreve -18 KPX r gcommaaccent -18 KPX r h -18 KPX r hyphen -18 KPX r o -18 KPX r oacute -18 KPX r ocircumflex -18 KPX r odieresis -18 KPX r ograve -18 KPX r ohungarumlaut -18 KPX r omacron -18 KPX r oslash -18 KPX r otilde -18 KPX r period -74 KPX r q -18 KPX r quoteright 74 KPX r u -8 KPX r uacute -8 KPX r ucircumflex -8 KPX r udieresis -8 KPX r ugrave -8 KPX r uhungarumlaut -8 KPX r umacron -8 KPX r uogonek -8 KPX r uring -8 KPX racute c -18 KPX racute cacute -18 KPX racute ccaron -18 KPX racute ccedilla -18 KPX racute comma -74 KPX racute d -18 KPX racute dcroat -18 KPX racute e -18 KPX racute eacute -18 KPX racute ecaron -18 KPX racute ecircumflex -18 KPX racute edieresis -18 KPX racute edotaccent -18 KPX racute egrave -18 KPX racute emacron -18 KPX racute eogonek -18 KPX racute g -18 KPX racute gbreve -18 KPX racute gcommaaccent -18 KPX racute h -18 KPX racute hyphen -18 KPX racute o -18 KPX racute oacute -18 KPX racute ocircumflex -18 KPX racute odieresis -18 KPX racute ograve -18 KPX racute ohungarumlaut -18 KPX racute omacron -18 KPX racute oslash -18 KPX racute otilde -18 KPX racute period -74 KPX racute q -18 KPX racute quoteright 74 KPX racute u -8 KPX racute uacute -8 KPX racute ucircumflex -8 KPX racute udieresis -8 KPX racute ugrave -8 KPX racute uhungarumlaut -8 KPX racute umacron -8 KPX racute uogonek -8 KPX racute uring -8 KPX rcaron c -18 KPX rcaron cacute -18 KPX rcaron ccaron -18 KPX rcaron ccedilla -18 KPX rcaron comma -74 KPX rcaron d -18 KPX rcaron dcroat -18 KPX rcaron e -18 KPX rcaron eacute -18 KPX rcaron ecaron -18 KPX rcaron ecircumflex -18 KPX rcaron edieresis -18 KPX rcaron edotaccent -18 KPX rcaron egrave -18 KPX rcaron emacron -18 KPX rcaron eogonek -18 KPX rcaron g -18 KPX rcaron gbreve -18 KPX rcaron gcommaaccent -18 KPX rcaron h -18 KPX rcaron hyphen -18 KPX rcaron o -18 KPX rcaron oacute -18 KPX rcaron ocircumflex -18 KPX rcaron odieresis -18 KPX rcaron ograve -18 KPX rcaron ohungarumlaut -18 KPX rcaron omacron -18 KPX rcaron oslash -18 KPX rcaron otilde -18 KPX rcaron period -74 KPX rcaron q -18 KPX rcaron quoteright 74 KPX rcaron u -8 KPX rcaron uacute -8 KPX rcaron ucircumflex -8 KPX rcaron udieresis -8 KPX rcaron ugrave -8 KPX rcaron uhungarumlaut -8 KPX rcaron umacron -8 KPX rcaron uogonek -8 KPX rcaron uring -8 KPX rcommaaccent c -18 KPX rcommaaccent cacute -18 KPX rcommaaccent ccaron -18 KPX rcommaaccent ccedilla -18 KPX rcommaaccent comma -74 KPX rcommaaccent d -18 KPX rcommaaccent dcroat -18 KPX rcommaaccent e -18 KPX rcommaaccent eacute -18 KPX rcommaaccent ecaron -18 KPX rcommaaccent ecircumflex -18 KPX rcommaaccent edieresis -18 KPX rcommaaccent edotaccent -18 KPX rcommaaccent egrave -18 KPX rcommaaccent emacron -18 KPX rcommaaccent eogonek -18 KPX rcommaaccent g -18 KPX rcommaaccent gbreve -18 KPX rcommaaccent gcommaaccent -18 KPX rcommaaccent h -18 KPX rcommaaccent hyphen -18 KPX rcommaaccent o -18 KPX rcommaaccent oacute -18 KPX rcommaaccent ocircumflex -18 KPX rcommaaccent odieresis -18 KPX rcommaaccent ograve -18 KPX rcommaaccent ohungarumlaut -18 KPX rcommaaccent omacron -18 KPX rcommaaccent oslash -18 KPX rcommaaccent otilde -18 KPX rcommaaccent period -74 KPX rcommaaccent q -18 KPX rcommaaccent quoteright 74 KPX rcommaaccent u -8 KPX rcommaaccent uacute -8 KPX rcommaaccent ucircumflex -8 KPX rcommaaccent udieresis -8 KPX rcommaaccent ugrave -8 KPX rcommaaccent uhungarumlaut -8 KPX rcommaaccent umacron -8 KPX rcommaaccent uogonek -8 KPX rcommaaccent uring -8 KPX space A -37 KPX space Aacute -37 KPX space Abreve -37 KPX space Acircumflex -37 KPX space Adieresis -37 KPX space Agrave -37 KPX space Amacron -37 KPX space Aogonek -37 KPX space Aring -37 KPX space Atilde -37 KPX space Y -18 KPX space Yacute -18 KPX space Ydieresis -18 KPX v comma -111 KPX v period -111 KPX w comma -92 KPX w period -92 KPX y comma -111 KPX y period -111 KPX yacute comma -111 KPX yacute period -111 KPX ydieresis comma -111 KPX ydieresis period -111 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Bookman-Demi.afm0000644000222100022210000010736514541067540015641 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:44:58 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43079 Comment VMusage 45854 56879 FontName Bookman-Demi FullName ITC Bookman Demi FamilyName ITC Bookman Weight Demi ItalicAngle 0 IsFixedPitch false FontBBox -194 -250 1346 934 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 681 XHeight 502 Ascender 717 Descender -228 StdHW 82 StdVW 167 StartCharMetrics 359 C 32 ; WX 340 ; N space ; B 0 0 0 0 ; C 33 ; WX 360 ; N exclam ; B 82 -8 282 698 ; C 34 ; WX 420 ; N quotedbl ; B 11 379 369 698 ; C 35 ; WX 660 ; N numbersign ; B 84 0 576 681 ; C 36 ; WX 660 ; N dollar ; B 48 -119 620 805 ; C 37 ; WX 940 ; N percent ; B 12 -8 924 698 ; C 38 ; WX 800 ; N ampersand ; B 21 -17 772 698 ; C 39 ; WX 320 ; N quoteright ; B 82 440 242 698 ; C 40 ; WX 320 ; N parenleft ; B 48 -150 289 749 ; C 41 ; WX 320 ; N parenright ; B 20 -150 262 749 ; C 42 ; WX 460 ; N asterisk ; B 62 317 405 697 ; C 43 ; WX 600 ; N plus ; B 51 9 555 514 ; C 44 ; WX 340 ; N comma ; B 78 -124 257 162 ; C 45 ; WX 360 ; N hyphen ; B 20 210 340 318 ; C 46 ; WX 340 ; N period ; B 76 -8 258 172 ; C 47 ; WX 600 ; N slash ; B 50 -149 555 725 ; C 48 ; WX 660 ; N zero ; B 30 -17 639 698 ; C 49 ; WX 660 ; N one ; B 137 0 568 681 ; C 50 ; WX 660 ; N two ; B 41 0 628 698 ; C 51 ; WX 660 ; N three ; B 37 -17 631 698 ; C 52 ; WX 660 ; N four ; B 19 0 649 681 ; C 53 ; WX 660 ; N five ; B 44 -17 623 723 ; C 54 ; WX 660 ; N six ; B 34 -17 634 698 ; C 55 ; WX 660 ; N seven ; B 36 0 632 681 ; C 56 ; WX 660 ; N eight ; B 36 -17 633 698 ; C 57 ; WX 660 ; N nine ; B 33 -17 636 698 ; C 58 ; WX 340 ; N colon ; B 76 -8 258 515 ; C 59 ; WX 340 ; N semicolon ; B 75 -124 259 515 ; C 60 ; WX 600 ; N less ; B 49 -9 558 542 ; C 61 ; WX 600 ; N equal ; B 51 109 555 421 ; C 62 ; WX 600 ; N greater ; B 48 -9 557 542 ; C 63 ; WX 660 ; N question ; B 61 -8 608 698 ; C 64 ; WX 820 ; N at ; B 60 -17 758 698 ; C 65 ; WX 720 ; N A ; B -34 0 763 681 ; C 66 ; WX 720 ; N B ; B 20 0 693 681 ; C 67 ; WX 740 ; N C ; B 35 -17 724 698 ; C 68 ; WX 780 ; N D ; B 20 0 748 681 ; C 69 ; WX 720 ; N E ; B 20 0 724 681 ; C 70 ; WX 680 ; N F ; B 20 0 686 681 ; C 71 ; WX 780 ; N G ; B 35 -17 773 698 ; C 72 ; WX 820 ; N H ; B 20 0 800 681 ; C 73 ; WX 400 ; N I ; B 20 0 379 681 ; C 74 ; WX 640 ; N J ; B -12 -17 622 681 ; C 75 ; WX 800 ; N K ; B 20 0 796 681 ; C 76 ; WX 640 ; N L ; B 20 0 668 681 ; C 77 ; WX 940 ; N M ; B 20 0 924 681 ; C 78 ; WX 740 ; N N ; B 20 0 724 681 ; C 79 ; WX 800 ; N O ; B 35 -17 769 698 ; C 80 ; WX 660 ; N P ; B 20 0 658 681 ; C 81 ; WX 800 ; N Q ; B 35 -226 775 698 ; C 82 ; WX 780 ; N R ; B 20 0 783 681 ; C 83 ; WX 660 ; N S ; B 21 -17 639 698 ; C 84 ; WX 700 ; N T ; B -4 0 703 681 ; C 85 ; WX 740 ; N U ; B 15 -17 724 681 ; C 86 ; WX 720 ; N V ; B -20 0 730 681 ; C 87 ; WX 940 ; N W ; B -20 0 963 681 ; C 88 ; WX 780 ; N X ; B 1 0 770 681 ; C 89 ; WX 700 ; N Y ; B -20 0 718 681 ; C 90 ; WX 640 ; N Z ; B 6 0 635 681 ; C 91 ; WX 300 ; N bracketleft ; B 75 -138 285 725 ; C 92 ; WX 600 ; N backslash ; B 50 0 555 725 ; C 93 ; WX 300 ; N bracketright ; B 21 -138 231 725 ; C 94 ; WX 600 ; N asciicircum ; B 52 281 554 681 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 320 ; N quoteleft ; B 82 440 242 698 ; C 97 ; WX 580 ; N a ; B 28 -8 588 515 ; C 98 ; WX 600 ; N b ; B -20 -8 568 725 ; C 99 ; WX 580 ; N c ; B 31 -8 550 515 ; C 100 ; WX 640 ; N d ; B 31 -8 622 725 ; C 101 ; WX 580 ; N e ; B 31 -8 548 515 ; C 102 ; WX 380 ; N f ; B 22 0 461 741 ; L i fi ; L l fl ; C 103 ; WX 580 ; N g ; B 9 -243 583 595 ; C 104 ; WX 680 ; N h ; B 22 0 654 725 ; C 105 ; WX 360 ; N i ; B 22 0 335 729 ; C 106 ; WX 340 ; N j ; B -94 -221 278 729 ; C 107 ; WX 660 ; N k ; B 22 0 643 725 ; C 108 ; WX 340 ; N l ; B 9 0 322 725 ; C 109 ; WX 1000 ; N m ; B 22 0 980 515 ; C 110 ; WX 680 ; N n ; B 22 0 652 515 ; C 111 ; WX 620 ; N o ; B 31 -8 585 515 ; C 112 ; WX 640 ; N p ; B 22 -212 611 515 ; C 113 ; WX 620 ; N q ; B 31 -212 633 515 ; C 114 ; WX 460 ; N r ; B 22 0 462 502 ; C 115 ; WX 520 ; N s ; B 22 -8 492 515 ; C 116 ; WX 460 ; N t ; B 22 -8 445 660 ; C 117 ; WX 660 ; N u ; B 22 -8 653 502 ; C 118 ; WX 600 ; N v ; B -6 0 593 502 ; C 119 ; WX 800 ; N w ; B -6 0 810 502 ; C 120 ; WX 600 ; N x ; B 8 0 591 502 ; C 121 ; WX 620 ; N y ; B 6 -221 613 502 ; C 122 ; WX 560 ; N z ; B 22 0 547 502 ; C 123 ; WX 320 ; N braceleft ; B 14 -139 301 726 ; C 124 ; WX 600 ; N bar ; B 243 -250 362 750 ; C 125 ; WX 320 ; N braceright ; B 15 -140 302 725 ; C 126 ; WX 600 ; N asciitilde ; B 51 162 555 368 ; C 160 ; WX 340 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 360 ; N exclamdown ; B 84 -191 284 515 ; C 162 ; WX 660 ; N cent ; B 133 17 535 674 ; C 163 ; WX 660 ; N sterling ; B 10 -17 659 698 ; C 164 ; WX 120 ; N fraction ; B -194 0 312 681 ; C 165 ; WX 660 ; N yen ; B -28 0 696 681 ; C 166 ; WX 660 ; N florin ; B -46 -209 674 749 ; C 167 ; WX 600 ; N section ; B 36 -153 560 698 ; C 168 ; WX 660 ; N currency ; B 77 88 584 593 ; C 169 ; WX 240 ; N quotesingle ; B 42 379 178 698 ; C 170 ; WX 540 ; N quotedblleft ; B 82 439 449 698 ; C 171 ; WX 400 ; N guillemotleft ; B 34 101 360 457 ; C 172 ; WX 220 ; N guilsinglleft ; B 34 101 188 457 ; C 173 ; WX 220 ; N guilsinglright ; B 34 101 188 457 ; C 174 ; WX 740 ; N fi ; B 22 0 710 741 ; C 175 ; WX 740 ; N fl ; B 22 0 710 741 ; C 177 ; WX 500 ; N endash ; B -25 212 525 318 ; C 178 ; WX 440 ; N dagger ; B 33 -156 398 698 ; C 179 ; WX 380 ; N daggerdbl ; B 8 -156 380 698 ; C 180 ; WX 340 ; N periodcentered ; B 76 175 258 355 ; C 182 ; WX 800 ; N paragraph ; B 51 0 698 681 ; C 183 ; WX 460 ; N bullet ; B 60 170 404 511 ; C 184 ; WX 320 ; N quotesinglbase ; B 82 -114 242 144 ; C 185 ; WX 540 ; N quotedblbase ; B 82 -114 450 144 ; C 186 ; WX 540 ; N quotedblright ; B 82 440 449 698 ; C 187 ; WX 400 ; N guillemotright ; B 34 101 360 457 ; C 188 ; WX 1000 ; N ellipsis ; B 76 -8 924 172 ; C 189 ; WX 1360 ; N perthousand ; B 12 -8 1346 698 ; C 191 ; WX 660 ; N questiondown ; B 62 -191 609 515 ; C 193 ; WX 400 ; N grave ; B 68 547 327 730 ; C 194 ; WX 400 ; N acute ; B 98 547 357 731 ; C 195 ; WX 500 ; N circumflex ; B 68 555 430 731 ; C 196 ; WX 480 ; N tilde ; B 69 556 421 691 ; C 197 ; WX 460 ; N macron ; B 68 577 383 663 ; C 198 ; WX 500 ; N breve ; B 68 553 429 722 ; C 199 ; WX 320 ; N dotaccent ; B 68 535 259 729 ; C 200 ; WX 500 ; N dieresis ; B 68 535 441 673 ; C 202 ; WX 340 ; N ring ; B 68 552 275 755 ; C 203 ; WX 360 ; N cedilla ; B 68 -213 284 0 ; C 205 ; WX 440 ; N hungarumlaut ; B 68 554 365 741 ; C 206 ; WX 320 ; N ogonek ; B 82 -199 314 0 ; C 207 ; WX 500 ; N caron ; B 68 541 430 717 ; C 208 ; WX 1000 ; N emdash ; B -25 212 1025 318 ; C 225 ; WX 1140 ; N AE ; B -34 0 1149 681 ; C 227 ; WX 400 ; N ordfeminine ; B 27 383 396 698 ; C 232 ; WX 640 ; N Lslash ; B 20 0 668 681 ; C 233 ; WX 800 ; N Oslash ; B 35 -110 771 781 ; C 234 ; WX 1220 ; N OE ; B 35 -17 1219 698 ; C 235 ; WX 400 ; N ordmasculine ; B 17 383 383 698 ; C 241 ; WX 880 ; N ae ; B 28 -8 852 515 ; C 245 ; WX 360 ; N dotlessi ; B 22 0 335 502 ; C 248 ; WX 340 ; N lslash ; B 9 0 322 725 ; C 249 ; WX 620 ; N oslash ; B 31 -40 586 551 ; C 250 ; WX 940 ; N oe ; B 31 -8 908 515 ; C 251 ; WX 660 ; N germandbls ; B -61 -91 644 699 ; C -1 ; WX 400 ; N Idieresis ; B 18 0 391 877 ; C -1 ; WX 580 ; N eacute ; B 31 -8 548 731 ; C -1 ; WX 580 ; N abreve ; B 28 -8 588 722 ; C -1 ; WX 660 ; N uhungarumlaut ; B 22 -8 653 741 ; C -1 ; WX 580 ; N ecaron ; B 31 -8 548 717 ; C -1 ; WX 700 ; N Ydieresis ; B -20 0 718 877 ; C -1 ; WX 600 ; N divide ; B 51 9 555 521 ; C -1 ; WX 700 ; N Yacute ; B -20 0 718 910 ; C -1 ; WX 720 ; N Acircumflex ; B -34 0 763 910 ; C -1 ; WX 580 ; N aacute ; B 28 -8 588 731 ; C -1 ; WX 740 ; N Ucircumflex ; B 15 -17 724 910 ; C -1 ; WX 620 ; N yacute ; B 6 -221 613 731 ; C -1 ; WX 520 ; N scommaaccent ; B 22 -249 492 515 ; C -1 ; WX 580 ; N ecircumflex ; B 31 -8 548 731 ; C -1 ; WX 740 ; N Uring ; B 15 -17 724 934 ; C -1 ; WX 740 ; N Udieresis ; B 15 -17 724 877 ; C -1 ; WX 580 ; N aogonek ; B 28 -206 594 515 ; C -1 ; WX 740 ; N Uacute ; B 15 -17 724 910 ; C -1 ; WX 660 ; N uogonek ; B 22 -199 663 502 ; C -1 ; WX 720 ; N Edieresis ; B 20 0 724 877 ; C -1 ; WX 780 ; N Dcroat ; B 20 0 748 681 ; C -1 ; WX 250 ; N commaaccent ; B 53 -249 197 -40 ; C -1 ; WX 740 ; N copyright ; B 23 -17 723 698 ; C -1 ; WX 720 ; N Emacron ; B 20 0 724 842 ; C -1 ; WX 580 ; N ccaron ; B 31 -8 550 717 ; C -1 ; WX 580 ; N aring ; B 28 -8 588 755 ; C -1 ; WX 740 ; N Ncommaaccent ; B 20 -249 724 681 ; C -1 ; WX 340 ; N lacute ; B 9 0 367 930 ; C -1 ; WX 580 ; N agrave ; B 28 -8 588 730 ; C -1 ; WX 700 ; N Tcommaaccent ; B -4 -249 703 681 ; C -1 ; WX 740 ; N Cacute ; B 35 -17 724 910 ; C -1 ; WX 580 ; N atilde ; B 28 -8 588 691 ; C -1 ; WX 720 ; N Edotaccent ; B 20 0 724 933 ; C -1 ; WX 520 ; N scaron ; B 22 -8 492 717 ; C -1 ; WX 520 ; N scedilla ; B 22 -213 492 515 ; C -1 ; WX 360 ; N iacute ; B 22 0 337 731 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 780 ; N Rcaron ; B 20 0 783 896 ; C -1 ; WX 780 ; N Gcommaaccent ; B 35 -249 773 698 ; C -1 ; WX 660 ; N ucircumflex ; B 22 -8 653 731 ; C -1 ; WX 580 ; N acircumflex ; B 28 -8 588 731 ; C -1 ; WX 720 ; N Amacron ; B -34 0 763 842 ; C -1 ; WX 460 ; N rcaron ; B 22 0 462 717 ; C -1 ; WX 580 ; N ccedilla ; B 31 -213 550 515 ; C -1 ; WX 640 ; N Zdotaccent ; B 6 0 635 933 ; C -1 ; WX 660 ; N Thorn ; B 20 0 658 681 ; C -1 ; WX 800 ; N Omacron ; B 35 -17 769 842 ; C -1 ; WX 780 ; N Racute ; B 20 0 783 910 ; C -1 ; WX 660 ; N Sacute ; B 21 -17 639 910 ; C -1 ; WX 737 ; N dcaron ; B 31 -8 726 731 ; C -1 ; WX 740 ; N Umacron ; B 15 -17 724 842 ; C -1 ; WX 660 ; N uring ; B 22 -8 653 755 ; C -1 ; WX 396 ; N threesuperior ; B 5 269 391 698 ; C -1 ; WX 800 ; N Ograve ; B 35 -17 769 909 ; C -1 ; WX 720 ; N Agrave ; B -34 0 763 909 ; C -1 ; WX 720 ; N Abreve ; B -34 0 763 901 ; C -1 ; WX 600 ; N multiply ; B 48 10 552 514 ; C -1 ; WX 660 ; N uacute ; B 22 -8 653 731 ; C -1 ; WX 700 ; N Tcaron ; B -4 0 703 896 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 620 ; N ydieresis ; B 6 -221 613 698 ; C -1 ; WX 740 ; N Nacute ; B 20 0 724 910 ; C -1 ; WX 360 ; N icircumflex ; B -2 0 360 731 ; C -1 ; WX 720 ; N Ecircumflex ; B 20 0 724 910 ; C -1 ; WX 580 ; N adieresis ; B 28 -8 588 698 ; C -1 ; WX 580 ; N edieresis ; B 31 -8 548 698 ; C -1 ; WX 580 ; N cacute ; B 31 -8 550 731 ; C -1 ; WX 680 ; N nacute ; B 22 0 652 731 ; C -1 ; WX 660 ; N umacron ; B 22 -8 653 663 ; C -1 ; WX 740 ; N Ncaron ; B 20 0 724 896 ; C -1 ; WX 400 ; N Iacute ; B 20 0 379 910 ; C -1 ; WX 600 ; N plusminus ; B 51 0 555 514 ; C -1 ; WX 600 ; N brokenbar ; B 243 -175 362 675 ; C -1 ; WX 740 ; N registered ; B 23 -17 723 698 ; C -1 ; WX 780 ; N Gbreve ; B 35 -17 773 901 ; C -1 ; WX 400 ; N Idotaccent ; B 20 0 379 933 ; C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 720 ; N Egrave ; B 20 0 724 909 ; C -1 ; WX 460 ; N racute ; B 22 0 462 731 ; C -1 ; WX 620 ; N omacron ; B 31 -8 585 663 ; C -1 ; WX 640 ; N Zacute ; B 6 0 635 910 ; C -1 ; WX 640 ; N Zcaron ; B 6 0 635 896 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 780 ; N Eth ; B 20 0 748 681 ; C -1 ; WX 740 ; N Ccedilla ; B 35 -213 724 698 ; C -1 ; WX 340 ; N lcommaaccent ; B 9 -249 322 725 ; C -1 ; WX 460 ; N tcaron ; B 22 -8 445 794 ; C -1 ; WX 580 ; N eogonek ; B 31 -204 548 515 ; C -1 ; WX 740 ; N Uogonek ; B 15 -199 724 681 ; C -1 ; WX 720 ; N Aacute ; B -34 0 763 910 ; C -1 ; WX 720 ; N Adieresis ; B -34 0 763 877 ; C -1 ; WX 580 ; N egrave ; B 31 -8 548 730 ; C -1 ; WX 560 ; N zacute ; B 22 0 547 731 ; C -1 ; WX 360 ; N iogonek ; B 22 -199 335 729 ; C -1 ; WX 800 ; N Oacute ; B 35 -17 769 910 ; C -1 ; WX 620 ; N oacute ; B 31 -8 585 731 ; C -1 ; WX 580 ; N amacron ; B 28 -8 588 663 ; C -1 ; WX 520 ; N sacute ; B 22 -8 492 731 ; C -1 ; WX 360 ; N idieresis ; B -2 0 371 698 ; C -1 ; WX 800 ; N Ocircumflex ; B 35 -17 769 910 ; C -1 ; WX 740 ; N Ugrave ; B 15 -17 724 909 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 640 ; N thorn ; B 22 -212 611 725 ; C -1 ; WX 396 ; N twosuperior ; B 14 279 396 698 ; C -1 ; WX 800 ; N Odieresis ; B 35 -17 769 877 ; C -1 ; WX 660 ; N mu ; B 22 -221 653 502 ; C -1 ; WX 360 ; N igrave ; B 18 0 335 730 ; C -1 ; WX 620 ; N ohungarumlaut ; B 31 -8 585 741 ; C -1 ; WX 720 ; N Eogonek ; B 20 -204 724 681 ; C -1 ; WX 640 ; N dcroat ; B 31 -8 622 725 ; C -1 ; WX 990 ; N threequarters ; B 15 0 967 692 ; C -1 ; WX 660 ; N Scedilla ; B 21 -213 639 698 ; C -1 ; WX 450 ; N lcaron ; B 9 0 434 731 ; C -1 ; WX 800 ; N Kcommaaccent ; B 20 -249 796 681 ; C -1 ; WX 640 ; N Lacute ; B 20 0 668 910 ; C -1 ; WX 980 ; N trademark ; B 42 277 982 681 ; C -1 ; WX 580 ; N edotaccent ; B 31 -8 548 754 ; C -1 ; WX 400 ; N Igrave ; B 20 0 379 909 ; C -1 ; WX 400 ; N Imacron ; B 20 0 379 842 ; C -1 ; WX 640 ; N Lcaron ; B 20 0 668 698 ; C -1 ; WX 990 ; N onehalf ; B 65 0 980 681 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 620 ; N ocircumflex ; B 31 -8 585 731 ; C -1 ; WX 680 ; N ntilde ; B 22 0 652 691 ; C -1 ; WX 740 ; N Uhungarumlaut ; B 15 -17 724 920 ; C -1 ; WX 720 ; N Eacute ; B 20 0 724 910 ; C -1 ; WX 580 ; N emacron ; B 31 -8 548 663 ; C -1 ; WX 580 ; N gbreve ; B 9 -243 583 722 ; C -1 ; WX 990 ; N onequarter ; B 65 0 967 681 ; C -1 ; WX 660 ; N Scaron ; B 21 -17 639 896 ; C -1 ; WX 660 ; N Scommaaccent ; B 21 -249 639 698 ; C -1 ; WX 800 ; N Ohungarumlaut ; B 35 -17 769 920 ; C -1 ; WX 400 ; N degree ; B 50 398 350 698 ; C -1 ; WX 620 ; N ograve ; B 31 -8 585 730 ; C -1 ; WX 740 ; N Ccaron ; B 35 -17 724 896 ; C -1 ; WX 660 ; N ugrave ; B 22 -8 653 730 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 780 ; N Dcaron ; B 20 0 748 896 ; C -1 ; WX 460 ; N rcommaaccent ; B 22 -249 462 502 ; C -1 ; WX 740 ; N Ntilde ; B 20 0 724 870 ; C -1 ; WX 620 ; N otilde ; B 31 -8 585 691 ; C -1 ; WX 780 ; N Rcommaaccent ; B 20 -249 783 681 ; C -1 ; WX 640 ; N Lcommaaccent ; B 20 -249 668 681 ; C -1 ; WX 720 ; N Atilde ; B -34 0 763 870 ; C -1 ; WX 720 ; N Aogonek ; B -34 -199 763 681 ; C -1 ; WX 720 ; N Aring ; B -34 0 763 934 ; C -1 ; WX 800 ; N Otilde ; B 35 -17 769 870 ; C -1 ; WX 560 ; N zdotaccent ; B 22 0 547 754 ; C -1 ; WX 720 ; N Ecaron ; B 20 0 724 896 ; C -1 ; WX 400 ; N Iogonek ; B 20 -204 379 681 ; C -1 ; WX 660 ; N kcommaaccent ; B 22 -249 643 725 ; C -1 ; WX 600 ; N minus ; B 51 207 555 323 ; C -1 ; WX 400 ; N Icircumflex ; B 18 0 380 910 ; C -1 ; WX 680 ; N ncaron ; B 22 0 652 717 ; C -1 ; WX 460 ; N tcommaaccent ; B 22 -249 445 660 ; C -1 ; WX 600 ; N logicalnot ; B 51 129 555 421 ; C -1 ; WX 620 ; N odieresis ; B 31 -8 585 698 ; C -1 ; WX 660 ; N udieresis ; B 22 -8 653 698 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 580 ; N gcommaaccent ; B 9 -243 583 785 ; C -1 ; WX 620 ; N eth ; B 31 -8 585 741 ; C -1 ; WX 560 ; N zcaron ; B 22 0 547 717 ; C -1 ; WX 680 ; N ncommaaccent ; B 22 -249 652 515 ; C -1 ; WX 396 ; N onesuperior ; B 65 279 345 687 ; C -1 ; WX 360 ; N imacron ; B 18 0 335 663 ; C -1 ; WX 660 ; N Euro ; B 9 -13 636 694 ; C -1 ; WX 740 ; N Ccircumflex ; B 35 -13 724 957 ; C -1 ; WX 580 ; N ccircumflex ; B 31 -9 550 778 ; C -1 ; WX 740 ; N Cdotaccent ; B 35 -13 724 972 ; C -1 ; WX 580 ; N cdotaccent ; B 31 -9 550 793 ; C -1 ; WX 720 ; N Ebreve ; B 20 0 724 950 ; C -1 ; WX 580 ; N ebreve ; B 31 -9 548 771 ; C -1 ; WX 780 ; N Gcircumflex ; B 35 -13 773 957 ; C -1 ; WX 580 ; N gcircumflex ; B 9 -248 583 869 ; C -1 ; WX 780 ; N Gdotaccent ; B 35 -13 773 972 ; C -1 ; WX 580 ; N gdotaccent ; B 9 -248 583 884 ; C -1 ; WX 820 ; N Hcircumflex ; B 20 0 800 957 ; C -1 ; WX 680 ; N hcircumflex ; B 22 0 654 1000 ; C -1 ; WX 820 ; N Hbar ; B 19 0 799 681 ; C -1 ; WX 680 ; N hbar ; B 22 0 654 724 ; C -1 ; WX 400 ; N Itilde ; B 20 0 379 916 ; C -1 ; WX 360 ; N itilde ; B 2 0 354 737 ; C -1 ; WX 400 ; N Ibreve ; B 19 0 380 950 ; C -1 ; WX 360 ; N ibreve ; B -2 0 359 771 ; C -1 ; WX 1059 ; N IJ ; B 20 -13 1035 681 ; C -1 ; WX 650 ; N ij ; B 22 -226 558 731 ; C -1 ; WX 640 ; N Jcircumflex ; B -12 -13 622 957 ; C -1 ; WX 340 ; N jcircumflex ; B -94 -226 349 788 ; C -1 ; WX 665 ; N kgreenlandic ; B 20 -12 680 514 ; C -1 ; WX 640 ; N Ldot ; B 20 0 668 681 ; C -1 ; WX 680 ; N ldot ; B 9 0 521 724 ; C -1 ; WX 680 ; N napostrophe ; B 22 0 652 778 ; C -1 ; WX 800 ; N Obreve ; B 35 -13 769 950 ; C -1 ; WX 620 ; N obreve ; B 31 -9 585 771 ; C -1 ; WX 660 ; N Scircumflex ; B 21 -13 639 957 ; C -1 ; WX 520 ; N scircumflex ; B 22 -9 492 778 ; C -1 ; WX 700 ; N Tbar ; B -3 0 704 681 ; C -1 ; WX 460 ; N tbar ; B 22 -9 445 661 ; C -1 ; WX 700 ; N Tcedilla ; B -4 -249 703 681 ; C -1 ; WX 460 ; N tcedilla ; B 22 -249 445 660 ; C -1 ; WX 740 ; N Utilde ; B 15 -13 724 916 ; C -1 ; WX 660 ; N utilde ; B 22 -13 653 737 ; C -1 ; WX 740 ; N Ubreve ; B 15 -13 724 950 ; C -1 ; WX 660 ; N ubreve ; B 22 -13 653 771 ; C -1 ; WX 940 ; N Wcircumflex ; B -20 0 963 957 ; C -1 ; WX 800 ; N wcircumflex ; B -6 0 810 778 ; C -1 ; WX 700 ; N Ycircumflex ; B -20 0 718 957 ; C -1 ; WX 620 ; N ycircumflex ; B 6 -221 613 778 ; C -1 ; WX 380 ; N longs ; B 22 0 461 736 ; C -1 ; WX 698 ; N infinity ; B 12 41 678 571 ; EndCharMetrics StartKernData StartKernPairs 912 KPX A T -40 KPX A Tcaron -40 KPX A Tcommaaccent -40 KPX A V -68 KPX A W -20 KPX A Y -52 KPX A Yacute -52 KPX A Ydieresis -52 KPX A v -8 KPX A w -9 KPX A y -1 KPX A yacute -1 KPX A ydieresis -1 KPX Aacute T -40 KPX Aacute Tcaron -40 KPX Aacute Tcommaaccent -40 KPX Aacute V -68 KPX Aacute W -20 KPX Aacute Y -52 KPX Aacute Yacute -52 KPX Aacute Ydieresis -52 KPX Aacute v -8 KPX Aacute w -9 KPX Aacute y -1 KPX Aacute yacute -1 KPX Aacute ydieresis -1 KPX Abreve T -40 KPX Abreve Tcaron -40 KPX Abreve Tcommaaccent -40 KPX Abreve V -68 KPX Abreve W -20 KPX Abreve Y -52 KPX Abreve Yacute -52 KPX Abreve Ydieresis -52 KPX Abreve v -8 KPX Abreve w -9 KPX Abreve y -1 KPX Abreve yacute -1 KPX Abreve ydieresis -1 KPX Acircumflex T -40 KPX Acircumflex Tcaron -40 KPX Acircumflex Tcommaaccent -40 KPX Acircumflex V -68 KPX Acircumflex W -20 KPX Acircumflex Y -52 KPX Acircumflex Yacute -52 KPX Acircumflex Ydieresis -52 KPX Acircumflex v -8 KPX Acircumflex w -9 KPX Acircumflex y -1 KPX Acircumflex yacute -1 KPX Acircumflex ydieresis -1 KPX Adieresis T -40 KPX Adieresis Tcaron -40 KPX Adieresis Tcommaaccent -40 KPX Adieresis V -68 KPX Adieresis W -20 KPX Adieresis Y -52 KPX Adieresis Yacute -52 KPX Adieresis Ydieresis -52 KPX Adieresis v -8 KPX Adieresis w -9 KPX Adieresis y -1 KPX Adieresis yacute -1 KPX Adieresis ydieresis -1 KPX Agrave T -40 KPX Agrave Tcaron -40 KPX Agrave Tcommaaccent -40 KPX Agrave V -68 KPX Agrave W -20 KPX Agrave Y -52 KPX Agrave Yacute -52 KPX Agrave Ydieresis -52 KPX Agrave v -8 KPX Agrave w -9 KPX Agrave y -1 KPX Agrave yacute -1 KPX Agrave ydieresis -1 KPX Amacron T -40 KPX Amacron Tcaron -40 KPX Amacron Tcommaaccent -40 KPX Amacron V -68 KPX Amacron W -20 KPX Amacron Y -52 KPX Amacron Yacute -52 KPX Amacron Ydieresis -52 KPX Amacron v -8 KPX Amacron w -9 KPX Amacron y -1 KPX Amacron yacute -1 KPX Amacron ydieresis -1 KPX Aogonek T -40 KPX Aogonek Tcaron -40 KPX Aogonek Tcommaaccent -40 KPX Aogonek V -68 KPX Aogonek W -20 KPX Aogonek Y -52 KPX Aogonek Yacute -52 KPX Aogonek Ydieresis -52 KPX Aogonek v -8 KPX Aogonek w -9 KPX Aogonek y -1 KPX Aogonek yacute -1 KPX Aogonek ydieresis -1 KPX Aring T -40 KPX Aring Tcaron -40 KPX Aring Tcommaaccent -40 KPX Aring V -68 KPX Aring W -20 KPX Aring Y -52 KPX Aring Yacute -52 KPX Aring Ydieresis -52 KPX Aring v -8 KPX Aring w -9 KPX Aring y -1 KPX Aring yacute -1 KPX Aring ydieresis -1 KPX Atilde T -40 KPX Atilde Tcaron -40 KPX Atilde Tcommaaccent -40 KPX Atilde V -68 KPX Atilde W -20 KPX Atilde Y -52 KPX Atilde Yacute -52 KPX Atilde Ydieresis -52 KPX Atilde v -8 KPX Atilde w -9 KPX Atilde y -1 KPX Atilde yacute -1 KPX Atilde ydieresis -1 KPX F A -59 KPX F Aacute -59 KPX F Abreve -59 KPX F Acircumflex -59 KPX F Adieresis -59 KPX F Agrave -59 KPX F Amacron -59 KPX F Aogonek -59 KPX F Aring -59 KPX F Atilde -59 KPX F comma -130 KPX F period -132 KPX L T -4 KPX L Tcaron -4 KPX L Tcommaaccent -4 KPX L V -50 KPX L W -41 KPX L Y -35 KPX L Yacute -35 KPX L Ydieresis -35 KPX L y 19 KPX L yacute 19 KPX L ydieresis 19 KPX Lacute T -4 KPX Lacute Tcaron -4 KPX Lacute Tcommaaccent -4 KPX Lacute V -50 KPX Lacute W -41 KPX Lacute Y -35 KPX Lacute Yacute -35 KPX Lacute Ydieresis -35 KPX Lacute y 19 KPX Lacute yacute 19 KPX Lacute ydieresis 19 KPX Lcaron T -4 KPX Lcaron Tcaron -4 KPX Lcaron Tcommaaccent -4 KPX Lcaron y 19 KPX Lcaron yacute 19 KPX Lcaron ydieresis 19 KPX Lcommaaccent T -4 KPX Lcommaaccent Tcaron -4 KPX Lcommaaccent Tcommaaccent -4 KPX Lcommaaccent V -50 KPX Lcommaaccent W -41 KPX Lcommaaccent Y -35 KPX Lcommaaccent Yacute -35 KPX Lcommaaccent Ydieresis -35 KPX Lcommaaccent y 19 KPX Lcommaaccent yacute 19 KPX Lcommaaccent ydieresis 19 KPX Lslash T -4 KPX Lslash Tcaron -4 KPX Lslash Tcommaaccent -4 KPX Lslash V -50 KPX Lslash W -41 KPX Lslash Y -35 KPX Lslash Yacute -35 KPX Lslash Ydieresis -35 KPX Lslash y 19 KPX Lslash yacute 19 KPX Lslash ydieresis 19 KPX P A -46 KPX P Aacute -46 KPX P Abreve -46 KPX P Acircumflex -46 KPX P Adieresis -46 KPX P Agrave -46 KPX P Amacron -46 KPX P Aogonek -46 KPX P Aring -46 KPX P Atilde -46 KPX P comma -129 KPX P period -128 KPX R T -4 KPX R Tcaron -4 KPX R Tcommaaccent -4 KPX R V -29 KPX R W -24 KPX R Y -20 KPX R Yacute -20 KPX R Ydieresis -20 KPX R y -8 KPX R yacute -8 KPX R ydieresis -8 KPX Racute T -4 KPX Racute Tcaron -4 KPX Racute Tcommaaccent -4 KPX Racute V -29 KPX Racute W -24 KPX Racute Y -20 KPX Racute Yacute -20 KPX Racute Ydieresis -20 KPX Racute y -8 KPX Racute yacute -8 KPX Racute ydieresis -8 KPX Rcaron T -4 KPX Rcaron Tcaron -4 KPX Rcaron Tcommaaccent -4 KPX Rcaron V -29 KPX Rcaron W -24 KPX Rcaron Y -20 KPX Rcaron Yacute -20 KPX Rcaron Ydieresis -20 KPX Rcaron y -8 KPX Rcaron yacute -8 KPX Rcaron ydieresis -8 KPX Rcommaaccent T -4 KPX Rcommaaccent Tcaron -4 KPX Rcommaaccent Tcommaaccent -4 KPX Rcommaaccent V -29 KPX Rcommaaccent W -24 KPX Rcommaaccent Y -20 KPX Rcommaaccent Yacute -20 KPX Rcommaaccent Ydieresis -20 KPX Rcommaaccent y -8 KPX Rcommaaccent yacute -8 KPX Rcommaaccent ydieresis -8 KPX T A -42 KPX T Aacute -42 KPX T Abreve -42 KPX T Acircumflex -42 KPX T Adieresis -42 KPX T Agrave -42 KPX T Amacron -42 KPX T Aogonek -42 KPX T Aring -42 KPX T Atilde -42 KPX T a -24 KPX T aacute -24 KPX T abreve -24 KPX T acircumflex -24 KPX T adieresis -24 KPX T agrave -24 KPX T amacron -24 KPX T aogonek -24 KPX T aring -24 KPX T atilde -24 KPX T c -29 KPX T cacute -29 KPX T ccaron -29 KPX T ccedilla -29 KPX T colon 7 KPX T comma -122 KPX T e -29 KPX T eacute -29 KPX T ecaron -29 KPX T ecircumflex -29 KPX T edieresis -29 KPX T edotaccent -29 KPX T egrave -29 KPX T emacron -29 KPX T eogonek -29 KPX T hyphen -10 KPX T i 27 KPX T iacute 27 KPX T icircumflex 27 KPX T idieresis 27 KPX T igrave 27 KPX T imacron 27 KPX T iogonek 27 KPX T o -28 KPX T oacute -28 KPX T ocircumflex -28 KPX T odieresis -28 KPX T ograve -28 KPX T ohungarumlaut -28 KPX T omacron -28 KPX T oslash -28 KPX T otilde -28 KPX T period -122 KPX T r 27 KPX T racute 27 KPX T rcaron 27 KPX T rcommaaccent 27 KPX T s -10 KPX T sacute -10 KPX T scaron -10 KPX T scedilla -10 KPX T scommaaccent -10 KPX T semicolon 5 KPX Tcaron A -42 KPX Tcaron Aacute -42 KPX Tcaron Abreve -42 KPX Tcaron Acircumflex -42 KPX Tcaron Adieresis -42 KPX Tcaron Agrave -42 KPX Tcaron Amacron -42 KPX Tcaron Aogonek -42 KPX Tcaron Aring -42 KPX Tcaron Atilde -42 KPX Tcaron a -24 KPX Tcaron aacute -24 KPX Tcaron abreve -24 KPX Tcaron acircumflex -24 KPX Tcaron adieresis -24 KPX Tcaron agrave -24 KPX Tcaron amacron -24 KPX Tcaron aogonek -24 KPX Tcaron aring -24 KPX Tcaron atilde -24 KPX Tcaron c -29 KPX Tcaron cacute -29 KPX Tcaron ccaron -29 KPX Tcaron ccedilla -29 KPX Tcaron colon 7 KPX Tcaron comma -122 KPX Tcaron e -29 KPX Tcaron eacute -29 KPX Tcaron ecaron -29 KPX Tcaron ecircumflex -29 KPX Tcaron edieresis -29 KPX Tcaron edotaccent -29 KPX Tcaron egrave -29 KPX Tcaron emacron -29 KPX Tcaron eogonek -29 KPX Tcaron hyphen -10 KPX Tcaron i 27 KPX Tcaron iacute 27 KPX Tcaron icircumflex 27 KPX Tcaron idieresis 27 KPX Tcaron igrave 27 KPX Tcaron imacron 27 KPX Tcaron iogonek 27 KPX Tcaron o -28 KPX Tcaron oacute -28 KPX Tcaron ocircumflex -28 KPX Tcaron odieresis -28 KPX Tcaron ograve -28 KPX Tcaron ohungarumlaut -28 KPX Tcaron omacron -28 KPX Tcaron oslash -28 KPX Tcaron otilde -28 KPX Tcaron period -122 KPX Tcaron r 27 KPX Tcaron racute 27 KPX Tcaron rcaron 27 KPX Tcaron rcommaaccent 27 KPX Tcaron s -10 KPX Tcaron sacute -10 KPX Tcaron scaron -10 KPX Tcaron scedilla -10 KPX Tcaron scommaaccent -10 KPX Tcaron semicolon 5 KPX Tcommaaccent A -42 KPX Tcommaaccent Aacute -42 KPX Tcommaaccent Abreve -42 KPX Tcommaaccent Acircumflex -42 KPX Tcommaaccent Adieresis -42 KPX Tcommaaccent Agrave -42 KPX Tcommaaccent Amacron -42 KPX Tcommaaccent Aogonek -42 KPX Tcommaaccent Aring -42 KPX Tcommaaccent Atilde -42 KPX Tcommaaccent a -24 KPX Tcommaaccent aacute -24 KPX Tcommaaccent abreve -24 KPX Tcommaaccent acircumflex -24 KPX Tcommaaccent adieresis -24 KPX Tcommaaccent agrave -24 KPX Tcommaaccent amacron -24 KPX Tcommaaccent aogonek -24 KPX Tcommaaccent aring -24 KPX Tcommaaccent atilde -24 KPX Tcommaaccent c -29 KPX Tcommaaccent cacute -29 KPX Tcommaaccent ccaron -29 KPX Tcommaaccent ccedilla -29 KPX Tcommaaccent colon 7 KPX Tcommaaccent comma -122 KPX Tcommaaccent e -29 KPX Tcommaaccent eacute -29 KPX Tcommaaccent ecaron -29 KPX Tcommaaccent ecircumflex -29 KPX Tcommaaccent edieresis -29 KPX Tcommaaccent edotaccent -29 KPX Tcommaaccent egrave -29 KPX Tcommaaccent emacron -29 KPX Tcommaaccent eogonek -29 KPX Tcommaaccent hyphen -10 KPX Tcommaaccent i 27 KPX Tcommaaccent iacute 27 KPX Tcommaaccent icircumflex 27 KPX Tcommaaccent idieresis 27 KPX Tcommaaccent igrave 27 KPX Tcommaaccent imacron 27 KPX Tcommaaccent iogonek 27 KPX Tcommaaccent o -28 KPX Tcommaaccent oacute -28 KPX Tcommaaccent ocircumflex -28 KPX Tcommaaccent odieresis -28 KPX Tcommaaccent ograve -28 KPX Tcommaaccent ohungarumlaut -28 KPX Tcommaaccent omacron -28 KPX Tcommaaccent oslash -28 KPX Tcommaaccent otilde -28 KPX Tcommaaccent period -122 KPX Tcommaaccent r 27 KPX Tcommaaccent racute 27 KPX Tcommaaccent rcaron 27 KPX Tcommaaccent rcommaaccent 27 KPX Tcommaaccent s -10 KPX Tcommaaccent sacute -10 KPX Tcommaaccent scaron -10 KPX Tcommaaccent scedilla -10 KPX Tcommaaccent scommaaccent -10 KPX Tcommaaccent semicolon 5 KPX V A -88 KPX V Aacute -88 KPX V Abreve -88 KPX V Acircumflex -88 KPX V Adieresis -88 KPX V Agrave -88 KPX V Amacron -88 KPX V Aogonek -88 KPX V Aring -88 KPX V Atilde -88 KPX V a -74 KPX V aacute -74 KPX V abreve -74 KPX V acircumflex -74 KPX V adieresis -74 KPX V agrave -74 KPX V amacron -74 KPX V aogonek -74 KPX V aring -74 KPX V atilde -74 KPX V colon -37 KPX V comma -103 KPX V e -80 KPX V eacute -80 KPX V ecaron -80 KPX V ecircumflex -80 KPX V edieresis -80 KPX V edotaccent -80 KPX V egrave -80 KPX V emacron -80 KPX V eogonek -80 KPX V hyphen -10 KPX V i 15 KPX V iacute 15 KPX V icircumflex 15 KPX V idieresis 15 KPX V igrave 15 KPX V imacron 15 KPX V iogonek 15 KPX V o -79 KPX V oacute -79 KPX V ocircumflex -79 KPX V odieresis -79 KPX V ograve -79 KPX V ohungarumlaut -79 KPX V omacron -79 KPX V oslash -79 KPX V otilde -79 KPX V period -105 KPX V r -15 KPX V racute -15 KPX V rcaron -15 KPX V rcommaaccent -15 KPX V semicolon -38 KPX V u -11 KPX V uacute -11 KPX V ucircumflex -11 KPX V udieresis -11 KPX V ugrave -11 KPX V uhungarumlaut -11 KPX V umacron -11 KPX V uogonek -11 KPX V uring -11 KPX V y 12 KPX V yacute 12 KPX V ydieresis 12 KPX W A -60 KPX W Aacute -60 KPX W Abreve -60 KPX W Acircumflex -60 KPX W Adieresis -60 KPX W Agrave -60 KPX W Amacron -60 KPX W Aogonek -60 KPX W Aring -60 KPX W Atilde -60 KPX W a -73 KPX W aacute -73 KPX W abreve -73 KPX W acircumflex -73 KPX W adieresis -73 KPX W agrave -73 KPX W amacron -73 KPX W aogonek -73 KPX W aring -73 KPX W atilde -73 KPX W colon -37 KPX W comma -103 KPX W e -79 KPX W eacute -79 KPX W ecaron -79 KPX W ecircumflex -79 KPX W edieresis -79 KPX W edotaccent -79 KPX W egrave -79 KPX W emacron -79 KPX W eogonek -79 KPX W hyphen -10 KPX W i 15 KPX W iacute 15 KPX W icircumflex 15 KPX W idieresis 15 KPX W igrave 15 KPX W imacron 15 KPX W iogonek 15 KPX W o -78 KPX W oacute -78 KPX W ocircumflex -78 KPX W odieresis -78 KPX W ograve -78 KPX W ohungarumlaut -78 KPX W omacron -78 KPX W oslash -78 KPX W otilde -78 KPX W period -105 KPX W r -15 KPX W racute -15 KPX W rcaron -15 KPX W rcommaaccent -15 KPX W semicolon -38 KPX W u -11 KPX W uacute -11 KPX W ucircumflex -11 KPX W udieresis -11 KPX W ugrave -11 KPX W uhungarumlaut -11 KPX W umacron -11 KPX W uogonek -11 KPX W uring -11 KPX W y 12 KPX W yacute 12 KPX W ydieresis 12 KPX Y A -56 KPX Y Aacute -56 KPX Y Abreve -56 KPX Y Acircumflex -56 KPX Y Adieresis -56 KPX Y Agrave -56 KPX Y Amacron -56 KPX Y Aogonek -56 KPX Y Aring -56 KPX Y Atilde -56 KPX Y a -60 KPX Y aacute -60 KPX Y abreve -60 KPX Y acircumflex -60 KPX Y adieresis -60 KPX Y agrave -60 KPX Y amacron -60 KPX Y aogonek -60 KPX Y aring -60 KPX Y atilde -60 KPX Y colon -32 KPX Y comma -103 KPX Y e -67 KPX Y eacute -67 KPX Y ecaron -67 KPX Y ecircumflex -67 KPX Y edieresis -67 KPX Y edotaccent -67 KPX Y egrave -67 KPX Y emacron -67 KPX Y eogonek -67 KPX Y hyphen -10 KPX Y i 2 KPX Y iacute 2 KPX Y icircumflex 12 KPX Y idieresis 12 KPX Y igrave 12 KPX Y imacron 12 KPX Y iogonek 2 KPX Y o -66 KPX Y oacute -66 KPX Y ocircumflex -66 KPX Y odieresis -66 KPX Y ograve -66 KPX Y ohungarumlaut -66 KPX Y omacron -66 KPX Y oslash -66 KPX Y otilde -66 KPX Y p -23 KPX Y period -105 KPX Y q -66 KPX Y semicolon -34 KPX Y u -13 KPX Y uacute -13 KPX Y ucircumflex -13 KPX Y udieresis -13 KPX Y ugrave -13 KPX Y uhungarumlaut -13 KPX Y umacron -13 KPX Y uogonek -13 KPX Y uring -13 KPX Y v 24 KPX Yacute A -56 KPX Yacute Aacute -56 KPX Yacute Abreve -56 KPX Yacute Acircumflex -56 KPX Yacute Adieresis -56 KPX Yacute Agrave -56 KPX Yacute Amacron -56 KPX Yacute Aogonek -56 KPX Yacute Aring -56 KPX Yacute Atilde -56 KPX Yacute a -60 KPX Yacute aacute -60 KPX Yacute abreve -60 KPX Yacute acircumflex -60 KPX Yacute adieresis -60 KPX Yacute agrave -60 KPX Yacute amacron -60 KPX Yacute aogonek -60 KPX Yacute aring -60 KPX Yacute atilde -60 KPX Yacute colon -32 KPX Yacute comma -103 KPX Yacute e -67 KPX Yacute eacute -67 KPX Yacute ecaron -67 KPX Yacute ecircumflex -67 KPX Yacute edieresis -67 KPX Yacute edotaccent -67 KPX Yacute egrave -67 KPX Yacute emacron -67 KPX Yacute eogonek -67 KPX Yacute hyphen -10 KPX Yacute i 2 KPX Yacute iacute 2 KPX Yacute icircumflex 12 KPX Yacute idieresis 12 KPX Yacute igrave 12 KPX Yacute imacron 12 KPX Yacute iogonek 2 KPX Yacute o -66 KPX Yacute oacute -66 KPX Yacute ocircumflex -66 KPX Yacute odieresis -66 KPX Yacute ograve -66 KPX Yacute ohungarumlaut -66 KPX Yacute omacron -66 KPX Yacute oslash -66 KPX Yacute otilde -66 KPX Yacute p -23 KPX Yacute period -105 KPX Yacute q -66 KPX Yacute semicolon -34 KPX Yacute u -13 KPX Yacute uacute -13 KPX Yacute ucircumflex -13 KPX Yacute udieresis -13 KPX Yacute ugrave -13 KPX Yacute uhungarumlaut -13 KPX Yacute umacron -13 KPX Yacute uogonek -13 KPX Yacute uring -13 KPX Yacute v 24 KPX Ydieresis A -56 KPX Ydieresis Aacute -56 KPX Ydieresis Abreve -56 KPX Ydieresis Acircumflex -56 KPX Ydieresis Adieresis -56 KPX Ydieresis Agrave -56 KPX Ydieresis Amacron -56 KPX Ydieresis Aogonek -56 KPX Ydieresis Aring -56 KPX Ydieresis Atilde -56 KPX Ydieresis a -60 KPX Ydieresis aacute -60 KPX Ydieresis abreve -60 KPX Ydieresis acircumflex -60 KPX Ydieresis adieresis -60 KPX Ydieresis agrave -60 KPX Ydieresis amacron -60 KPX Ydieresis aogonek -60 KPX Ydieresis aring -60 KPX Ydieresis atilde -60 KPX Ydieresis colon -32 KPX Ydieresis comma -103 KPX Ydieresis e -67 KPX Ydieresis eacute -67 KPX Ydieresis ecaron -67 KPX Ydieresis ecircumflex -67 KPX Ydieresis edieresis -67 KPX Ydieresis edotaccent -67 KPX Ydieresis egrave -67 KPX Ydieresis emacron -67 KPX Ydieresis eogonek -67 KPX Ydieresis hyphen -10 KPX Ydieresis i 2 KPX Ydieresis iacute 2 KPX Ydieresis icircumflex 12 KPX Ydieresis idieresis 12 KPX Ydieresis igrave 12 KPX Ydieresis imacron 12 KPX Ydieresis iogonek 2 KPX Ydieresis o -66 KPX Ydieresis oacute -66 KPX Ydieresis ocircumflex -66 KPX Ydieresis odieresis -66 KPX Ydieresis ograve -66 KPX Ydieresis ohungarumlaut -66 KPX Ydieresis omacron -66 KPX Ydieresis oslash -66 KPX Ydieresis otilde -66 KPX Ydieresis p -23 KPX Ydieresis period -105 KPX Ydieresis q -66 KPX Ydieresis semicolon -34 KPX Ydieresis u -13 KPX Ydieresis uacute -13 KPX Ydieresis ucircumflex -13 KPX Ydieresis udieresis -13 KPX Ydieresis ugrave -13 KPX Ydieresis uhungarumlaut -13 KPX Ydieresis umacron -13 KPX Ydieresis uogonek -13 KPX Ydieresis uring -13 KPX Ydieresis v 24 KPX f f 21 KPX r c -9 KPX r cacute -9 KPX r ccaron -9 KPX r ccedilla -9 KPX r comma -101 KPX r d -10 KPX r dcroat -10 KPX r e -10 KPX r eacute -10 KPX r ecaron -10 KPX r ecircumflex -10 KPX r edieresis -10 KPX r edotaccent -10 KPX r egrave -10 KPX r emacron -10 KPX r eogonek -10 KPX r f 20 KPX r g -9 KPX r gbreve -9 KPX r gcommaaccent -9 KPX r h -23 KPX r hyphen -10 KPX r m 20 KPX r n 20 KPX r nacute 20 KPX r ncaron 20 KPX r ncommaaccent 20 KPX r ntilde 20 KPX r o -9 KPX r oacute -9 KPX r ocircumflex -9 KPX r odieresis -9 KPX r ograve -9 KPX r ohungarumlaut -9 KPX r omacron -9 KPX r oslash -9 KPX r otilde -9 KPX r period -102 KPX r q -9 KPX racute c -9 KPX racute cacute -9 KPX racute ccaron -9 KPX racute ccedilla -9 KPX racute comma -101 KPX racute d -10 KPX racute dcroat -10 KPX racute e -10 KPX racute eacute -10 KPX racute ecaron -10 KPX racute ecircumflex -10 KPX racute edieresis -10 KPX racute edotaccent -10 KPX racute egrave -10 KPX racute emacron -10 KPX racute eogonek -10 KPX racute f 20 KPX racute g -9 KPX racute gbreve -9 KPX racute gcommaaccent -9 KPX racute h -23 KPX racute hyphen -10 KPX racute m 20 KPX racute n 20 KPX racute nacute 20 KPX racute ncaron 20 KPX racute ncommaaccent 20 KPX racute ntilde 20 KPX racute o -9 KPX racute oacute -9 KPX racute ocircumflex -9 KPX racute odieresis -9 KPX racute ograve -9 KPX racute ohungarumlaut -9 KPX racute omacron -9 KPX racute oslash -9 KPX racute otilde -9 KPX racute period -102 KPX racute q -9 KPX rcaron c -9 KPX rcaron cacute -9 KPX rcaron ccaron -9 KPX rcaron ccedilla -9 KPX rcaron comma -101 KPX rcaron d -10 KPX rcaron dcroat -10 KPX rcaron e -10 KPX rcaron eacute -10 KPX rcaron ecaron -10 KPX rcaron ecircumflex -10 KPX rcaron edieresis -10 KPX rcaron edotaccent -10 KPX rcaron egrave -10 KPX rcaron emacron -10 KPX rcaron eogonek -10 KPX rcaron f 20 KPX rcaron g -9 KPX rcaron gbreve -9 KPX rcaron gcommaaccent -9 KPX rcaron h -23 KPX rcaron hyphen -10 KPX rcaron m 20 KPX rcaron n 20 KPX rcaron nacute 20 KPX rcaron ncaron 20 KPX rcaron ncommaaccent 20 KPX rcaron ntilde 20 KPX rcaron o -9 KPX rcaron oacute -9 KPX rcaron ocircumflex -9 KPX rcaron odieresis -9 KPX rcaron ograve -9 KPX rcaron ohungarumlaut -9 KPX rcaron omacron -9 KPX rcaron oslash -9 KPX rcaron otilde -9 KPX rcaron period -102 KPX rcaron q -9 KPX rcommaaccent c -9 KPX rcommaaccent cacute -9 KPX rcommaaccent ccaron -9 KPX rcommaaccent ccedilla -9 KPX rcommaaccent comma -101 KPX rcommaaccent d -10 KPX rcommaaccent dcroat -10 KPX rcommaaccent e -10 KPX rcommaaccent eacute -10 KPX rcommaaccent ecaron -10 KPX rcommaaccent ecircumflex -10 KPX rcommaaccent edieresis -10 KPX rcommaaccent edotaccent -10 KPX rcommaaccent egrave -10 KPX rcommaaccent emacron -10 KPX rcommaaccent eogonek -10 KPX rcommaaccent f 20 KPX rcommaaccent g -9 KPX rcommaaccent gbreve -9 KPX rcommaaccent gcommaaccent -9 KPX rcommaaccent h -23 KPX rcommaaccent hyphen -10 KPX rcommaaccent m 20 KPX rcommaaccent n 20 KPX rcommaaccent nacute 20 KPX rcommaaccent ncaron 20 KPX rcommaaccent ncommaaccent 20 KPX rcommaaccent ntilde 20 KPX rcommaaccent o -9 KPX rcommaaccent oacute -9 KPX rcommaaccent ocircumflex -9 KPX rcommaaccent odieresis -9 KPX rcommaaccent ograve -9 KPX rcommaaccent ohungarumlaut -9 KPX rcommaaccent omacron -9 KPX rcommaaccent oslash -9 KPX rcommaaccent otilde -9 KPX rcommaaccent period -102 KPX rcommaaccent q -9 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/NewCenturySchlbk-Roman.afm0000644000222100022210000014054314541067540017676 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:42:59 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43091 Comment VMusage 42481 53506 FontName NewCenturySchlbk-Roman FullName New Century Schoolbook Roman FamilyName New Century Schoolbook Weight Medium ItalicAngle 0 IsFixedPitch false FontBBox -195 -250 1000 965 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 722 XHeight 464 Ascender 737 Descender -205 StdHW 45 StdVW 92 StartCharMetrics 361 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 296 ; N exclam ; B 86 -15 210 737 ; C 34 ; WX 389 ; N quotedbl ; B 61 443 328 737 ; C 35 ; WX 556 ; N numbersign ; B 28 0 528 690 ; C 36 ; WX 556 ; N dollar ; B 45 -138 511 813 ; C 37 ; WX 833 ; N percent ; B 43 -15 790 705 ; C 38 ; WX 815 ; N ampersand ; B 51 -15 775 737 ; C 39 ; WX 204 ; N quoteright ; B 25 443 179 737 ; C 40 ; WX 333 ; N parenleft ; B 40 -117 279 745 ; C 41 ; WX 333 ; N parenright ; B 54 -117 293 745 ; C 42 ; WX 500 ; N asterisk ; B 57 306 443 737 ; C 43 ; WX 606 ; N plus ; B 50 0 556 506 ; C 44 ; WX 278 ; N comma ; B 62 -185 216 109 ; C 45 ; WX 333 ; N hyphen ; B 42 199 291 277 ; C 46 ; WX 278 ; N period ; B 77 -15 201 109 ; C 47 ; WX 278 ; N slash ; B -32 -15 310 737 ; C 48 ; WX 556 ; N zero ; B 42 -15 514 705 ; C 49 ; WX 556 ; N one ; B 100 0 496 705 ; C 50 ; WX 556 ; N two ; B 35 0 505 705 ; C 51 ; WX 556 ; N three ; B 42 -15 498 705 ; C 52 ; WX 556 ; N four ; B 28 0 528 705 ; C 53 ; WX 556 ; N five ; B 46 -15 502 705 ; C 54 ; WX 556 ; N six ; B 41 -15 515 705 ; C 55 ; WX 556 ; N seven ; B 59 -15 508 705 ; C 56 ; WX 556 ; N eight ; B 42 -15 514 705 ; C 57 ; WX 556 ; N nine ; B 41 -15 515 705 ; C 58 ; WX 278 ; N colon ; B 77 -15 201 474 ; C 59 ; WX 278 ; N semicolon ; B 62 -185 216 474 ; C 60 ; WX 606 ; N less ; B 50 -8 556 514 ; C 61 ; WX 606 ; N equal ; B 50 117 556 389 ; C 62 ; WX 606 ; N greater ; B 50 -8 556 514 ; C 63 ; WX 444 ; N question ; B 29 -15 415 737 ; C 64 ; WX 737 ; N at ; B -8 -15 744 737 ; C 65 ; WX 722 ; N A ; B -8 0 730 737 ; C 66 ; WX 722 ; N B ; B 29 0 669 722 ; C 67 ; WX 722 ; N C ; B 45 -15 668 737 ; C 68 ; WX 778 ; N D ; B 29 0 733 722 ; C 69 ; WX 722 ; N E ; B 29 0 663 722 ; C 70 ; WX 667 ; N F ; B 29 0 638 722 ; C 71 ; WX 778 ; N G ; B 45 -15 775 737 ; C 72 ; WX 833 ; N H ; B 29 0 804 722 ; C 73 ; WX 407 ; N I ; B 38 0 369 722 ; C 74 ; WX 556 ; N J ; B 5 -15 540 722 ; C 75 ; WX 778 ; N K ; B 29 0 803 722 ; C 76 ; WX 667 ; N L ; B 29 0 644 722 ; C 77 ; WX 944 ; N M ; B 29 0 915 722 ; C 78 ; WX 815 ; N N ; B 24 -15 791 722 ; C 79 ; WX 778 ; N O ; B 45 -15 733 737 ; C 80 ; WX 667 ; N P ; B 29 0 650 722 ; C 81 ; WX 778 ; N Q ; B 45 -190 748 737 ; C 82 ; WX 722 ; N R ; B 29 -15 713 722 ; C 83 ; WX 630 ; N S ; B 47 -15 583 737 ; C 84 ; WX 667 ; N T ; B 19 0 648 722 ; C 85 ; WX 815 ; N U ; B 16 -15 799 722 ; C 86 ; WX 722 ; N V ; B -8 -10 730 722 ; C 87 ; WX 981 ; N W ; B 5 -10 976 722 ; C 88 ; WX 704 ; N X ; B -8 0 712 722 ; C 89 ; WX 704 ; N Y ; B -11 0 715 722 ; C 90 ; WX 611 ; N Z ; B 24 0 576 722 ; C 91 ; WX 333 ; N bracketleft ; B 126 -109 315 737 ; C 92 ; WX 606 ; N backslash ; B 132 -15 474 737 ; C 93 ; WX 333 ; N bracketright ; B 18 -109 207 737 ; C 94 ; WX 606 ; N asciicircum ; B 89 325 517 690 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 204 ; N quoteleft ; B 25 443 179 737 ; C 97 ; WX 556 ; N a ; B 44 -15 542 479 ; C 98 ; WX 556 ; N b ; B 10 -15 522 737 ; C 99 ; WX 444 ; N c ; B 34 -15 426 479 ; C 100 ; WX 574 ; N d ; B 34 -15 552 737 ; C 101 ; WX 500 ; N e ; B 34 -15 466 479 ; C 102 ; WX 333 ; N f ; B 18 0 437 737 ; L i fi ; L l fl ; C 103 ; WX 537 ; N g ; B 23 -205 542 494 ; C 104 ; WX 611 ; N h ; B 7 0 592 737 ; C 105 ; WX 315 ; N i ; B 18 0 286 722 ; C 106 ; WX 296 ; N j ; B -86 -205 216 722 ; C 107 ; WX 593 ; N k ; B 10 0 589 737 ; C 108 ; WX 315 ; N l ; B 18 0 286 737 ; C 109 ; WX 889 ; N m ; B 26 0 863 479 ; C 110 ; WX 611 ; N n ; B 22 0 589 479 ; C 111 ; WX 500 ; N o ; B 34 -15 466 479 ; C 112 ; WX 574 ; N p ; B 22 -205 540 479 ; C 113 ; WX 556 ; N q ; B 34 -205 552 479 ; C 114 ; WX 444 ; N r ; B 18 0 434 479 ; C 115 ; WX 463 ; N s ; B 46 -15 417 479 ; C 116 ; WX 389 ; N t ; B 18 -15 371 666 ; C 117 ; WX 611 ; N u ; B 22 -15 589 464 ; C 118 ; WX 537 ; N v ; B -6 -10 515 464 ; C 119 ; WX 778 ; N w ; B 1 -10 749 464 ; C 120 ; WX 537 ; N x ; B 8 0 529 464 ; C 121 ; WX 537 ; N y ; B 4 -205 533 464 ; C 122 ; WX 481 ; N z ; B 42 0 439 464 ; C 123 ; WX 333 ; N braceleft ; B 54 -109 279 737 ; C 124 ; WX 606 ; N bar ; B 267 -250 339 750 ; C 125 ; WX 333 ; N braceright ; B 54 -109 279 737 ; C 126 ; WX 606 ; N asciitilde ; B 72 184 534 322 ; C 160 ; WX 278 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 296 ; N exclamdown ; B 86 -205 210 547 ; C 162 ; WX 556 ; N cent ; B 74 -141 482 584 ; C 163 ; WX 556 ; N sterling ; B 18 -15 538 705 ; C 164 ; WX 167 ; N fraction ; B -195 -15 362 705 ; C 165 ; WX 556 ; N yen ; B -1 0 557 690 ; C 166 ; WX 556 ; N florin ; B 0 -205 538 737 ; C 167 ; WX 500 ; N section ; B 55 -147 445 737 ; C 168 ; WX 556 ; N currency ; B 26 93 530 597 ; C 169 ; WX 204 ; N quotesingle ; B 59 443 145 737 ; C 170 ; WX 389 ; N quotedblleft ; B 25 443 364 737 ; C 171 ; WX 426 ; N guillemotleft ; B 39 78 387 398 ; C 172 ; WX 259 ; N guilsinglleft ; B 39 78 220 398 ; C 173 ; WX 259 ; N guilsinglright ; B 39 78 220 398 ; C 174 ; WX 611 ; N fi ; B 18 0 582 737 ; C 175 ; WX 611 ; N fl ; B 18 0 582 737 ; C 177 ; WX 556 ; N endash ; B 0 208 556 268 ; C 178 ; WX 500 ; N dagger ; B 42 -147 458 737 ; C 179 ; WX 500 ; N daggerdbl ; B 42 -149 458 737 ; C 180 ; WX 278 ; N periodcentered ; B 71 238 207 374 ; C 182 ; WX 606 ; N paragraph ; B 60 -132 546 722 ; C 183 ; WX 606 ; N bullet ; B 122 180 484 542 ; C 184 ; WX 204 ; N quotesinglbase ; B 25 -185 179 109 ; C 185 ; WX 389 ; N quotedblbase ; B 25 -185 364 109 ; C 186 ; WX 389 ; N quotedblright ; B 25 443 364 737 ; C 187 ; WX 426 ; N guillemotright ; B 39 78 387 398 ; C 188 ; WX 1000 ; N ellipsis ; B 105 -15 895 109 ; C 189 ; WX 1000 ; N perthousand ; B 6 -15 994 705 ; C 191 ; WX 444 ; N questiondown ; B 29 -205 415 547 ; C 193 ; WX 333 ; N grave ; B 17 528 242 699 ; C 194 ; WX 333 ; N acute ; B 91 528 316 699 ; C 195 ; WX 333 ; N circumflex ; B 10 528 323 695 ; C 196 ; WX 333 ; N tilde ; B 1 553 332 655 ; C 197 ; WX 333 ; N macron ; B 10 568 323 623 ; C 198 ; WX 333 ; N breve ; B 25 528 308 685 ; C 199 ; WX 333 ; N dotaccent ; B 116 602 218 704 ; C 200 ; WX 333 ; N dieresis ; B 16 602 317 704 ; C 202 ; WX 333 ; N ring ; B 66 522 266 722 ; C 203 ; WX 333 ; N cedilla ; B 29 -215 237 0 ; C 205 ; WX 333 ; N hungarumlaut ; B -9 528 416 699 ; C 206 ; WX 333 ; N ogonek ; B 81 -220 317 4 ; C 207 ; WX 333 ; N caron ; B 10 528 323 695 ; C 208 ; WX 1000 ; N emdash ; B 0 208 1000 268 ; C 225 ; WX 1000 ; N AE ; B 0 0 962 722 ; C 227 ; WX 334 ; N ordfeminine ; B -4 407 338 705 ; C 232 ; WX 667 ; N Lslash ; B 29 0 644 722 ; C 233 ; WX 778 ; N Oslash ; B 45 -56 733 778 ; C 234 ; WX 1000 ; N OE ; B 21 0 979 722 ; C 235 ; WX 300 ; N ordmasculine ; B 4 407 296 705 ; C 241 ; WX 796 ; N ae ; B 34 -15 762 479 ; C 245 ; WX 315 ; N dotlessi ; B 18 0 286 464 ; C 248 ; WX 315 ; N lslash ; B 18 0 294 737 ; C 249 ; WX 500 ; N oslash ; B 34 -97 466 561 ; C 250 ; WX 833 ; N oe ; B 34 -15 799 479 ; C 251 ; WX 574 ; N germandbls ; B 30 -15 537 737 ; C -1 ; WX 407 ; N Idieresis ; B 38 0 369 883 ; C -1 ; WX 500 ; N eacute ; B 34 -15 466 699 ; C -1 ; WX 556 ; N abreve ; B 44 -15 542 685 ; C -1 ; WX 611 ; N uhungarumlaut ; B 22 -15 595 699 ; C -1 ; WX 500 ; N ecaron ; B 34 -15 466 695 ; C -1 ; WX 704 ; N Ydieresis ; B -11 0 715 883 ; C -1 ; WX 606 ; N divide ; B 50 -22 556 528 ; C -1 ; WX 704 ; N Yacute ; B -11 0 715 937 ; C -1 ; WX 722 ; N Acircumflex ; B -8 0 730 933 ; C -1 ; WX 556 ; N aacute ; B 44 -15 542 699 ; C -1 ; WX 815 ; N Ucircumflex ; B 16 -15 799 933 ; C -1 ; WX 537 ; N yacute ; B 4 -205 533 699 ; C -1 ; WX 463 ; N scommaaccent ; B 46 -250 417 479 ; C -1 ; WX 500 ; N ecircumflex ; B 34 -15 466 695 ; C -1 ; WX 815 ; N Uring ; B 16 -15 799 965 ; C -1 ; WX 815 ; N Udieresis ; B 16 -15 799 883 ; C -1 ; WX 556 ; N aogonek ; B 44 -220 565 479 ; C -1 ; WX 815 ; N Uacute ; B 16 -15 799 937 ; C -1 ; WX 611 ; N uogonek ; B 22 -220 589 464 ; C -1 ; WX 722 ; N Edieresis ; B 29 0 663 883 ; C -1 ; WX 778 ; N Dcroat ; B 29 0 733 722 ; C -1 ; WX 250 ; N commaaccent ; B 66 -250 204 -50 ; C -1 ; WX 737 ; N copyright ; B -8 -15 744 737 ; C -1 ; WX 722 ; N Emacron ; B 29 0 663 861 ; C -1 ; WX 444 ; N ccaron ; B 34 -15 426 695 ; C -1 ; WX 556 ; N aring ; B 44 -15 542 732 ; C -1 ; WX 815 ; N Ncommaaccent ; B 24 -250 791 722 ; C -1 ; WX 315 ; N lacute ; B 18 0 297 957 ; C -1 ; WX 556 ; N agrave ; B 44 -15 542 699 ; C -1 ; WX 667 ; N Tcommaaccent ; B 19 -250 648 722 ; C -1 ; WX 722 ; N Cacute ; B 45 -15 668 937 ; C -1 ; WX 556 ; N atilde ; B 44 -15 542 655 ; C -1 ; WX 722 ; N Edotaccent ; B 29 0 663 883 ; C -1 ; WX 463 ; N scaron ; B 46 -15 417 695 ; C -1 ; WX 463 ; N scedilla ; B 46 -215 417 479 ; C -1 ; WX 315 ; N iacute ; B 18 0 307 699 ; C -1 ; WX 471 ; N lozenge ; B 10 0 462 728 ; C -1 ; WX 722 ; N Rcaron ; B 29 -15 713 933 ; C -1 ; WX 778 ; N Gcommaaccent ; B 45 -250 775 737 ; C -1 ; WX 611 ; N ucircumflex ; B 22 -15 589 695 ; C -1 ; WX 556 ; N acircumflex ; B 44 -15 542 695 ; C -1 ; WX 722 ; N Amacron ; B -8 0 730 861 ; C -1 ; WX 444 ; N rcaron ; B 18 0 434 695 ; C -1 ; WX 444 ; N ccedilla ; B 34 -215 426 479 ; C -1 ; WX 611 ; N Zdotaccent ; B 24 0 576 883 ; C -1 ; WX 667 ; N Thorn ; B 29 0 650 722 ; C -1 ; WX 778 ; N Omacron ; B 45 -15 733 861 ; C -1 ; WX 722 ; N Racute ; B 29 -15 713 937 ; C -1 ; WX 630 ; N Sacute ; B 47 -15 583 937 ; C -1 ; WX 639 ; N dcaron ; B 34 -15 643 737 ; C -1 ; WX 815 ; N Umacron ; B 16 -15 799 861 ; C -1 ; WX 611 ; N uring ; B 22 -15 589 722 ; C -1 ; WX 333 ; N threesuperior ; B 18 273 315 705 ; C -1 ; WX 778 ; N Ograve ; B 45 -15 733 937 ; C -1 ; WX 722 ; N Agrave ; B -8 0 730 937 ; C -1 ; WX 722 ; N Abreve ; B -8 0 730 923 ; C -1 ; WX 606 ; N multiply ; B 74 24 532 482 ; C -1 ; WX 611 ; N uacute ; B 22 -15 589 699 ; C -1 ; WX 667 ; N Tcaron ; B 19 0 648 933 ; C -1 ; WX 476 ; N partialdiff ; B 13 -38 463 714 ; C -1 ; WX 537 ; N ydieresis ; B 4 -205 533 645 ; C -1 ; WX 815 ; N Nacute ; B 24 -15 791 937 ; C -1 ; WX 315 ; N icircumflex ; B 1 0 314 695 ; C -1 ; WX 722 ; N Ecircumflex ; B 29 0 663 933 ; C -1 ; WX 556 ; N adieresis ; B 44 -15 542 645 ; C -1 ; WX 500 ; N edieresis ; B 34 -15 466 645 ; C -1 ; WX 444 ; N cacute ; B 34 -15 426 699 ; C -1 ; WX 611 ; N nacute ; B 22 0 589 699 ; C -1 ; WX 611 ; N umacron ; B 22 -15 589 623 ; C -1 ; WX 815 ; N Ncaron ; B 24 -15 791 933 ; C -1 ; WX 407 ; N Iacute ; B 38 0 369 937 ; C -1 ; WX 606 ; N plusminus ; B 50 0 556 506 ; C -1 ; WX 606 ; N brokenbar ; B 267 -175 339 675 ; C -1 ; WX 737 ; N registered ; B -8 -15 744 737 ; C -1 ; WX 778 ; N Gbreve ; B 45 -15 775 923 ; C -1 ; WX 407 ; N Idotaccent ; B 38 0 369 883 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 722 ; N Egrave ; B 29 0 663 937 ; C -1 ; WX 444 ; N racute ; B 18 0 434 699 ; C -1 ; WX 500 ; N omacron ; B 34 -15 466 623 ; C -1 ; WX 611 ; N Zacute ; B 24 0 576 937 ; C -1 ; WX 611 ; N Zcaron ; B 24 0 576 933 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 674 ; C -1 ; WX 778 ; N Eth ; B 29 0 733 722 ; C -1 ; WX 722 ; N Ccedilla ; B 45 -215 668 737 ; C -1 ; WX 315 ; N lcommaaccent ; B 18 -250 286 737 ; C -1 ; WX 389 ; N tcaron ; B 18 -15 394 777 ; C -1 ; WX 500 ; N eogonek ; B 34 -220 466 479 ; C -1 ; WX 815 ; N Uogonek ; B 16 -220 799 722 ; C -1 ; WX 722 ; N Aacute ; B -8 0 730 937 ; C -1 ; WX 722 ; N Adieresis ; B -8 0 730 883 ; C -1 ; WX 500 ; N egrave ; B 34 -15 466 699 ; C -1 ; WX 481 ; N zacute ; B 42 0 439 699 ; C -1 ; WX 315 ; N iogonek ; B 18 -220 296 722 ; C -1 ; WX 778 ; N Oacute ; B 45 -15 733 937 ; C -1 ; WX 500 ; N oacute ; B 34 -15 466 699 ; C -1 ; WX 556 ; N amacron ; B 44 -15 542 623 ; C -1 ; WX 463 ; N sacute ; B 46 -15 417 699 ; C -1 ; WX 315 ; N idieresis ; B 7 0 308 645 ; C -1 ; WX 778 ; N Ocircumflex ; B 45 -15 733 933 ; C -1 ; WX 815 ; N Ugrave ; B 16 -15 799 937 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 574 ; N thorn ; B 22 -205 540 737 ; C -1 ; WX 333 ; N twosuperior ; B 14 282 319 705 ; C -1 ; WX 778 ; N Odieresis ; B 45 -15 733 883 ; C -1 ; WX 611 ; N mu ; B 22 -205 589 464 ; C -1 ; WX 315 ; N igrave ; B 8 0 286 699 ; C -1 ; WX 500 ; N ohungarumlaut ; B 34 -15 540 699 ; C -1 ; WX 722 ; N Eogonek ; B 29 -220 663 722 ; C -1 ; WX 574 ; N dcroat ; B 34 -15 552 737 ; C -1 ; WX 834 ; N threequarters ; B 28 -15 795 705 ; C -1 ; WX 630 ; N Scedilla ; B 47 -215 583 737 ; C -1 ; WX 365 ; N lcaron ; B 18 0 377 737 ; C -1 ; WX 778 ; N Kcommaaccent ; B 29 -250 803 722 ; C -1 ; WX 667 ; N Lacute ; B 29 0 644 937 ; C -1 ; WX 1000 ; N trademark ; B 32 318 968 722 ; C -1 ; WX 500 ; N edotaccent ; B 34 -15 466 645 ; C -1 ; WX 407 ; N Igrave ; B 38 0 369 937 ; C -1 ; WX 407 ; N Imacron ; B 38 0 369 861 ; C -1 ; WX 667 ; N Lcaron ; B 29 0 644 737 ; C -1 ; WX 834 ; N onehalf ; B 39 -15 820 705 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 674 ; C -1 ; WX 500 ; N ocircumflex ; B 34 -15 466 695 ; C -1 ; WX 611 ; N ntilde ; B 22 0 589 655 ; C -1 ; WX 815 ; N Uhungarumlaut ; B 16 -15 799 937 ; C -1 ; WX 722 ; N Eacute ; B 29 0 663 937 ; C -1 ; WX 500 ; N emacron ; B 34 -15 466 623 ; C -1 ; WX 537 ; N gbreve ; B 23 -205 542 685 ; C -1 ; WX 834 ; N onequarter ; B 39 -15 795 705 ; C -1 ; WX 630 ; N Scaron ; B 47 -15 583 933 ; C -1 ; WX 630 ; N Scommaaccent ; B 47 -250 583 737 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 45 -15 733 937 ; C -1 ; WX 400 ; N degree ; B 57 419 343 705 ; C -1 ; WX 500 ; N ograve ; B 34 -15 466 699 ; C -1 ; WX 722 ; N Ccaron ; B 45 -15 668 933 ; C -1 ; WX 611 ; N ugrave ; B 22 -15 589 699 ; C -1 ; WX 453 ; N radical ; B -4 -80 458 762 ; C -1 ; WX 778 ; N Dcaron ; B 29 0 733 933 ; C -1 ; WX 444 ; N rcommaaccent ; B 18 -250 434 479 ; C -1 ; WX 815 ; N Ntilde ; B 24 -15 791 893 ; C -1 ; WX 500 ; N otilde ; B 34 -15 466 655 ; C -1 ; WX 722 ; N Rcommaaccent ; B 29 -250 713 722 ; C -1 ; WX 667 ; N Lcommaaccent ; B 29 -250 644 722 ; C -1 ; WX 722 ; N Atilde ; B -8 0 730 893 ; C -1 ; WX 722 ; N Aogonek ; B -8 -220 730 737 ; C -1 ; WX 722 ; N Aring ; B -8 0 730 965 ; C -1 ; WX 778 ; N Otilde ; B 45 -15 733 893 ; C -1 ; WX 481 ; N zdotaccent ; B 42 0 439 645 ; C -1 ; WX 722 ; N Ecaron ; B 29 0 663 933 ; C -1 ; WX 407 ; N Iogonek ; B 38 -220 369 722 ; C -1 ; WX 593 ; N kcommaaccent ; B 10 -250 589 737 ; C -1 ; WX 606 ; N minus ; B 50 217 556 289 ; C -1 ; WX 407 ; N Icircumflex ; B 38 0 369 933 ; C -1 ; WX 611 ; N ncaron ; B 22 0 589 695 ; C -1 ; WX 389 ; N tcommaaccent ; B 18 -250 371 666 ; C -1 ; WX 606 ; N logicalnot ; B 50 108 556 389 ; C -1 ; WX 500 ; N odieresis ; B 34 -15 466 645 ; C -1 ; WX 611 ; N udieresis ; B 22 -15 589 645 ; C -1 ; WX 549 ; N notequal ; B 12 -35 537 551 ; C -1 ; WX 537 ; N gcommaaccent ; B 23 -205 542 807 ; C -1 ; WX 500 ; N eth ; B 34 -15 466 737 ; C -1 ; WX 481 ; N zcaron ; B 42 0 439 695 ; C -1 ; WX 611 ; N ncommaaccent ; B 22 -250 589 479 ; C -1 ; WX 333 ; N onesuperior ; B 39 282 294 705 ; C -1 ; WX 315 ; N imacron ; B 18 0 291 623 ; C -1 ; WX 556 ; N Euro ; B 0 -15 545 713 ; C -1 ; WX 722 ; N Ccircumflex ; B 45 -15 668 963 ; C -1 ; WX 444 ; N ccircumflex ; B 34 -15 426 707 ; C -1 ; WX 722 ; N Cdotaccent ; B 45 -15 668 897 ; C -1 ; WX 444 ; N cdotaccent ; B 34 -15 426 641 ; C -1 ; WX 722 ; N Ebreve ; B 29 0 663 954 ; C -1 ; WX 500 ; N ebreve ; B 35 -15 466 698 ; C -1 ; WX 778 ; N Gcircumflex ; B 42 -15 772 963 ; C -1 ; WX 537 ; N gcircumflex ; B 23 -203 542 721 ; C -1 ; WX 778 ; N Gdotaccent ; B 42 -15 772 897 ; C -1 ; WX 537 ; N gdotaccent ; B 23 -203 542 655 ; C -1 ; WX 833 ; N Hcircumflex ; B 29 0 804 963 ; C -1 ; WX 611 ; N hcircumflex ; B 15 0 593 963 ; C -1 ; WX 833 ; N Hbar ; B 29 0 804 722 ; C -1 ; WX 611 ; N hbar ; B 15 0 593 737 ; C -1 ; WX 407 ; N Itilde ; B 38 0 369 903 ; C -1 ; WX 315 ; N itilde ; B -6 0 325 647 ; C -1 ; WX 407 ; N Ibreve ; B 38 0 369 954 ; C -1 ; WX 315 ; N ibreve ; B 18 0 301 698 ; C -1 ; WX 962 ; N IJ ; B 38 -15 922 722 ; C -1 ; WX 610 ; N ij ; B 18 -202 514 715 ; C -1 ; WX 556 ; N Jcircumflex ; B 5 -15 537 963 ; C -1 ; WX 296 ; N jcircumflex ; B -82 -202 316 701 ; C -1 ; WX 591 ; N kgreenlandic ; B 27 -10 596 475 ; C -1 ; WX 667 ; N Ldot ; B 35 0 646 722 ; C -1 ; WX 460 ; N ldot ; B 19 0 410 737 ; C -1 ; WX 611 ; N napostrophe ; B 27 0 593 783 ; C -1 ; WX 815 ; N Eng ; B 19 -177 794 722 ; C -1 ; WX 611 ; N eng ; B 27 -140 514 481 ; C -1 ; WX 778 ; N Obreve ; B 45 -15 733 979 ; C -1 ; WX 500 ; N obreve ; B 34 -15 466 723 ; C -1 ; WX 630 ; N Scircumflex ; B 51 -15 590 988 ; C -1 ; WX 463 ; N scircumflex ; B 51 -15 421 732 ; C -1 ; WX 667 ; N Tbar ; B 19 0 648 722 ; C -1 ; WX 389 ; N tbar ; B 18 -15 374 664 ; C -1 ; WX 667 ; N Tcedilla ; B 19 -250 648 722 ; C -1 ; WX 389 ; N tcedilla ; B 18 -250 371 666 ; C -1 ; WX 815 ; N Utilde ; B 17 -15 799 928 ; C -1 ; WX 611 ; N utilde ; B 21 -15 594 672 ; C -1 ; WX 815 ; N Ubreve ; B 17 -15 799 979 ; C -1 ; WX 611 ; N ubreve ; B 21 -15 594 723 ; C -1 ; WX 981 ; N Wcircumflex ; B 6 -15 976 988 ; C -1 ; WX 778 ; N wcircumflex ; B 15 -15 763 732 ; C -1 ; WX 704 ; N Ycircumflex ; B -13 0 713 988 ; C -1 ; WX 537 ; N ycircumflex ; B 3 -206 531 732 ; C -1 ; WX 333 ; N longs ; B 19 0 433 737 ; C -1 ; WX 716 ; N infinity ; B 14 24 688 433 ; EndCharMetrics StartKernData StartKernPairs 1480 KPX A T -18 KPX A Tcaron -18 KPX A Tcommaaccent -18 KPX A U -30 KPX A Uacute -30 KPX A Ucircumflex -30 KPX A Udieresis -30 KPX A Ugrave -30 KPX A Uhungarumlaut -30 KPX A Umacron -30 KPX A Uogonek -30 KPX A Uring -30 KPX A V -75 KPX A W -50 KPX A Y -75 KPX A Yacute -75 KPX A Ydieresis -75 KPX A quotedblright -74 KPX A quoteright -74 KPX A v -37 KPX A w -25 KPX A y -37 KPX A yacute -37 KPX A ydieresis -37 KPX Aacute T -18 KPX Aacute Tcaron -18 KPX Aacute Tcommaaccent -18 KPX Aacute U -30 KPX Aacute Uacute -30 KPX Aacute Ucircumflex -30 KPX Aacute Udieresis -30 KPX Aacute Ugrave -30 KPX Aacute Uhungarumlaut -30 KPX Aacute Umacron -30 KPX Aacute Uogonek -30 KPX Aacute Uring -30 KPX Aacute V -75 KPX Aacute W -50 KPX Aacute Y -75 KPX Aacute Yacute -75 KPX Aacute Ydieresis -75 KPX Aacute quotedblright -74 KPX Aacute quoteright -74 KPX Aacute v -37 KPX Aacute w -25 KPX Aacute y -37 KPX Aacute yacute -37 KPX Aacute ydieresis -37 KPX Abreve T -18 KPX Abreve Tcaron -18 KPX Abreve Tcommaaccent -18 KPX Abreve U -30 KPX Abreve Uacute -30 KPX Abreve Ucircumflex -30 KPX Abreve Udieresis -30 KPX Abreve Ugrave -30 KPX Abreve Uhungarumlaut -30 KPX Abreve Umacron -30 KPX Abreve Uogonek -30 KPX Abreve Uring -30 KPX Abreve V -75 KPX Abreve W -50 KPX Abreve Y -75 KPX Abreve Yacute -75 KPX Abreve Ydieresis -75 KPX Abreve quotedblright -74 KPX Abreve quoteright -74 KPX Abreve v -37 KPX Abreve w -25 KPX Abreve y -37 KPX Abreve yacute -37 KPX Abreve ydieresis -37 KPX Acircumflex T -18 KPX Acircumflex Tcaron -18 KPX Acircumflex Tcommaaccent -18 KPX Acircumflex U -30 KPX Acircumflex Uacute -30 KPX Acircumflex Ucircumflex -30 KPX Acircumflex Udieresis -30 KPX Acircumflex Ugrave -30 KPX Acircumflex Uhungarumlaut -30 KPX Acircumflex Umacron -30 KPX Acircumflex Uogonek -30 KPX Acircumflex Uring -30 KPX Acircumflex V -75 KPX Acircumflex W -50 KPX Acircumflex Y -75 KPX Acircumflex Yacute -75 KPX Acircumflex Ydieresis -75 KPX Acircumflex quotedblright -74 KPX Acircumflex quoteright -74 KPX Acircumflex v -37 KPX Acircumflex w -25 KPX Acircumflex y -37 KPX Acircumflex yacute -37 KPX Acircumflex ydieresis -37 KPX Adieresis T -18 KPX Adieresis Tcaron -18 KPX Adieresis Tcommaaccent -18 KPX Adieresis U -30 KPX Adieresis Uacute -30 KPX Adieresis Ucircumflex -30 KPX Adieresis Udieresis -30 KPX Adieresis Ugrave -30 KPX Adieresis Uhungarumlaut -30 KPX Adieresis Umacron -30 KPX Adieresis Uogonek -30 KPX Adieresis Uring -30 KPX Adieresis V -75 KPX Adieresis W -50 KPX Adieresis Y -75 KPX Adieresis Yacute -75 KPX Adieresis Ydieresis -75 KPX Adieresis quotedblright -74 KPX Adieresis quoteright -74 KPX Adieresis v -37 KPX Adieresis w -25 KPX Adieresis y -37 KPX Adieresis yacute -37 KPX Adieresis ydieresis -37 KPX Agrave T -18 KPX Agrave Tcaron -18 KPX Agrave Tcommaaccent -18 KPX Agrave U -30 KPX Agrave Uacute -30 KPX Agrave Ucircumflex -30 KPX Agrave Udieresis -30 KPX Agrave Ugrave -30 KPX Agrave Uhungarumlaut -30 KPX Agrave Umacron -30 KPX Agrave Uogonek -30 KPX Agrave Uring -30 KPX Agrave V -75 KPX Agrave W -50 KPX Agrave Y -75 KPX Agrave Yacute -75 KPX Agrave Ydieresis -75 KPX Agrave quotedblright -74 KPX Agrave quoteright -74 KPX Agrave v -37 KPX Agrave w -25 KPX Agrave y -37 KPX Agrave yacute -37 KPX Agrave ydieresis -37 KPX Amacron T -18 KPX Amacron Tcaron -18 KPX Amacron Tcommaaccent -18 KPX Amacron U -30 KPX Amacron Uacute -30 KPX Amacron Ucircumflex -30 KPX Amacron Udieresis -30 KPX Amacron Ugrave -30 KPX Amacron Uhungarumlaut -30 KPX Amacron Umacron -30 KPX Amacron Uogonek -30 KPX Amacron Uring -30 KPX Amacron V -75 KPX Amacron W -50 KPX Amacron Y -75 KPX Amacron Yacute -75 KPX Amacron Ydieresis -75 KPX Amacron quotedblright -74 KPX Amacron quoteright -74 KPX Amacron v -37 KPX Amacron w -25 KPX Amacron y -37 KPX Amacron yacute -37 KPX Amacron ydieresis -37 KPX Aogonek T -18 KPX Aogonek Tcaron -18 KPX Aogonek Tcommaaccent -18 KPX Aogonek U -30 KPX Aogonek Uacute -30 KPX Aogonek Ucircumflex -30 KPX Aogonek Udieresis -30 KPX Aogonek Ugrave -30 KPX Aogonek Uhungarumlaut -30 KPX Aogonek Umacron -30 KPX Aogonek Uogonek -30 KPX Aogonek Uring -30 KPX Aogonek V -75 KPX Aogonek W -50 KPX Aogonek Y -75 KPX Aogonek Yacute -75 KPX Aogonek Ydieresis -75 KPX Aogonek quotedblright -74 KPX Aogonek quoteright -74 KPX Aogonek v -37 KPX Aogonek w -25 KPX Aogonek y -17 KPX Aogonek yacute -17 KPX Aogonek ydieresis -17 KPX Aring T -18 KPX Aring Tcaron -18 KPX Aring Tcommaaccent -18 KPX Aring U -30 KPX Aring Uacute -30 KPX Aring Ucircumflex -30 KPX Aring Udieresis -30 KPX Aring Ugrave -30 KPX Aring Uhungarumlaut -30 KPX Aring Umacron -30 KPX Aring Uogonek -30 KPX Aring Uring -30 KPX Aring V -75 KPX Aring W -50 KPX Aring Y -75 KPX Aring Yacute -75 KPX Aring Ydieresis -75 KPX Aring quotedblright -74 KPX Aring quoteright -74 KPX Aring v -37 KPX Aring w -25 KPX Aring y -37 KPX Aring yacute -37 KPX Aring ydieresis -37 KPX Atilde T -18 KPX Atilde Tcaron -18 KPX Atilde Tcommaaccent -18 KPX Atilde U -30 KPX Atilde Uacute -30 KPX Atilde Ucircumflex -30 KPX Atilde Udieresis -30 KPX Atilde Ugrave -30 KPX Atilde Uhungarumlaut -30 KPX Atilde Umacron -30 KPX Atilde Uogonek -30 KPX Atilde Uring -30 KPX Atilde V -75 KPX Atilde W -50 KPX Atilde Y -75 KPX Atilde Yacute -75 KPX Atilde Ydieresis -75 KPX Atilde quotedblright -74 KPX Atilde quoteright -74 KPX Atilde v -37 KPX Atilde w -25 KPX Atilde y -37 KPX Atilde yacute -37 KPX Atilde ydieresis -37 KPX B A -18 KPX B Aacute -18 KPX B Abreve -18 KPX B Acircumflex -18 KPX B Adieresis -18 KPX B Agrave -18 KPX B Amacron -18 KPX B Aogonek -18 KPX B Aring -18 KPX B Atilde -18 KPX B comma -37 KPX B period -37 KPX C A -18 KPX C Aacute -18 KPX C Abreve -18 KPX C Acircumflex -18 KPX C Adieresis -18 KPX C Agrave -18 KPX C Amacron -18 KPX C Aogonek -18 KPX C Aring -18 KPX C Atilde -18 KPX C comma -37 KPX C period -37 KPX Cacute A -18 KPX Cacute Aacute -18 KPX Cacute Abreve -18 KPX Cacute Acircumflex -18 KPX Cacute Adieresis -18 KPX Cacute Agrave -18 KPX Cacute Amacron -18 KPX Cacute Aogonek -18 KPX Cacute Aring -18 KPX Cacute Atilde -18 KPX Cacute comma -37 KPX Cacute period -37 KPX Ccaron A -18 KPX Ccaron Aacute -18 KPX Ccaron Abreve -18 KPX Ccaron Acircumflex -18 KPX Ccaron Adieresis -18 KPX Ccaron Agrave -18 KPX Ccaron Amacron -18 KPX Ccaron Aogonek -18 KPX Ccaron Aring -18 KPX Ccaron Atilde -18 KPX Ccaron comma -37 KPX Ccaron period -37 KPX Ccedilla A -18 KPX Ccedilla Aacute -18 KPX Ccedilla Abreve -18 KPX Ccedilla Acircumflex -18 KPX Ccedilla Adieresis -18 KPX Ccedilla Agrave -18 KPX Ccedilla Amacron -18 KPX Ccedilla Aogonek -18 KPX Ccedilla Aring -18 KPX Ccedilla Atilde -18 KPX Ccedilla comma -37 KPX Ccedilla period -37 KPX D V -18 KPX D Y -18 KPX D Yacute -18 KPX D Ydieresis -18 KPX D comma -37 KPX D period -37 KPX Dcaron V -18 KPX Dcaron Y -18 KPX Dcaron Yacute -18 KPX Dcaron Ydieresis -18 KPX Dcaron comma -37 KPX Dcaron period -37 KPX Dcroat V -18 KPX Dcroat Y -18 KPX Dcroat Yacute -18 KPX Dcroat Ydieresis -18 KPX Dcroat comma -37 KPX Dcroat period -37 KPX F A -50 KPX F Aacute -50 KPX F Abreve -50 KPX F Acircumflex -50 KPX F Adieresis -50 KPX F Agrave -50 KPX F Amacron -50 KPX F Aogonek -50 KPX F Aring -50 KPX F Atilde -50 KPX F a -65 KPX F aacute -65 KPX F abreve -65 KPX F acircumflex -65 KPX F adieresis -65 KPX F agrave -65 KPX F amacron -65 KPX F aogonek -65 KPX F aring -65 KPX F atilde -65 KPX F comma -125 KPX F e -55 KPX F eacute -55 KPX F ecaron -55 KPX F ecircumflex -55 KPX F edieresis -55 KPX F edotaccent -55 KPX F egrave -55 KPX F emacron -55 KPX F eogonek -55 KPX F i -10 KPX F iacute -10 KPX F icircumflex -10 KPX F idieresis -10 KPX F igrave -10 KPX F imacron -10 KPX F iogonek -10 KPX F o -55 KPX F oacute -55 KPX F ocircumflex -55 KPX F odieresis -55 KPX F ograve -55 KPX F ohungarumlaut -55 KPX F omacron -55 KPX F oslash -55 KPX F otilde -55 KPX F period -125 KPX F r -10 KPX F racute -10 KPX F rcaron -10 KPX F rcommaaccent -10 KPX G comma -37 KPX G period -37 KPX Gbreve comma -37 KPX Gbreve period -37 KPX Gcommaaccent comma -37 KPX Gcommaaccent period -37 KPX J A -18 KPX J Aacute -18 KPX J Abreve -18 KPX J Acircumflex -18 KPX J Adieresis -18 KPX J Agrave -18 KPX J Amacron -18 KPX J Aogonek -18 KPX J Aring -18 KPX J Atilde -18 KPX J a -25 KPX J aacute -25 KPX J abreve -25 KPX J acircumflex -25 KPX J adieresis -25 KPX J agrave -25 KPX J amacron -25 KPX J aogonek -25 KPX J aring -25 KPX J atilde -25 KPX J comma -74 KPX J e -25 KPX J eacute -25 KPX J ecaron -25 KPX J ecircumflex -25 KPX J edieresis -25 KPX J edotaccent -25 KPX J egrave -25 KPX J emacron -25 KPX J eogonek -25 KPX J o -25 KPX J oacute -25 KPX J ocircumflex -25 KPX J odieresis -25 KPX J ograve -25 KPX J ohungarumlaut -25 KPX J omacron -25 KPX J oslash -25 KPX J otilde -25 KPX J period -74 KPX J u -25 KPX J uacute -25 KPX J ucircumflex -25 KPX J udieresis -25 KPX J ugrave -25 KPX J uhungarumlaut -25 KPX J umacron -25 KPX J uogonek -25 KPX J uring -25 KPX K e 10 KPX K eacute 10 KPX K ecaron 10 KPX K ecircumflex 10 KPX K edieresis 10 KPX K edotaccent 10 KPX K egrave 10 KPX K emacron 10 KPX K eogonek 10 KPX K o 10 KPX K oacute 10 KPX K ocircumflex 10 KPX K odieresis 10 KPX K ograve 10 KPX K ohungarumlaut 10 KPX K omacron 10 KPX K oslash 10 KPX K otilde 10 KPX K y -25 KPX K yacute -25 KPX K ydieresis -25 KPX Kcommaaccent e 10 KPX Kcommaaccent eacute 10 KPX Kcommaaccent ecaron 10 KPX Kcommaaccent ecircumflex 10 KPX Kcommaaccent edieresis 10 KPX Kcommaaccent edotaccent 10 KPX Kcommaaccent egrave 10 KPX Kcommaaccent emacron 10 KPX Kcommaaccent eogonek 10 KPX Kcommaaccent o 10 KPX Kcommaaccent oacute 10 KPX Kcommaaccent ocircumflex 10 KPX Kcommaaccent odieresis 10 KPX Kcommaaccent ograve 10 KPX Kcommaaccent ohungarumlaut 10 KPX Kcommaaccent omacron 10 KPX Kcommaaccent oslash 10 KPX Kcommaaccent otilde 10 KPX Kcommaaccent y -25 KPX Kcommaaccent yacute -25 KPX Kcommaaccent ydieresis -25 KPX L T -75 KPX L Tcaron -75 KPX L Tcommaaccent -75 KPX L V -91 KPX L W -74 KPX L Y -74 KPX L Yacute -74 KPX L Ydieresis -74 KPX L quotedblright -100 KPX L quoteright -100 KPX L y -25 KPX L yacute -25 KPX L ydieresis -25 KPX Lacute T -75 KPX Lacute Tcaron -75 KPX Lacute Tcommaaccent -75 KPX Lacute V -91 KPX Lacute W -74 KPX Lacute Y -74 KPX Lacute Yacute -74 KPX Lacute Ydieresis -74 KPX Lacute quotedblright -100 KPX Lacute quoteright -100 KPX Lacute y -25 KPX Lacute yacute -25 KPX Lacute ydieresis -25 KPX Lcommaaccent T -75 KPX Lcommaaccent Tcaron -75 KPX Lcommaaccent Tcommaaccent -75 KPX Lcommaaccent V -91 KPX Lcommaaccent W -74 KPX Lcommaaccent Y -74 KPX Lcommaaccent Yacute -74 KPX Lcommaaccent Ydieresis -74 KPX Lcommaaccent quotedblright -100 KPX Lcommaaccent quoteright -100 KPX Lcommaaccent y -25 KPX Lcommaaccent yacute -25 KPX Lcommaaccent ydieresis -25 KPX Lslash T -75 KPX Lslash Tcaron -75 KPX Lslash Tcommaaccent -75 KPX Lslash V -91 KPX Lslash W -74 KPX Lslash Y -74 KPX Lslash Yacute -74 KPX Lslash Ydieresis -74 KPX Lslash quotedblright -100 KPX Lslash quoteright -100 KPX Lslash y -25 KPX Lslash yacute -25 KPX Lslash ydieresis -25 KPX N comma -55 KPX N period -55 KPX Nacute comma -55 KPX Nacute period -55 KPX Ncaron comma -55 KPX Ncaron period -55 KPX Ncommaaccent comma -55 KPX Ncommaaccent period -55 KPX Ntilde comma -55 KPX Ntilde period -55 KPX O T 10 KPX O Tcaron 10 KPX O Tcommaaccent 10 KPX O V -18 KPX O Y -18 KPX O Yacute -18 KPX O Ydieresis -18 KPX O comma -37 KPX O period -37 KPX Oacute T 10 KPX Oacute Tcaron 10 KPX Oacute Tcommaaccent 10 KPX Oacute V -18 KPX Oacute Y -18 KPX Oacute Yacute -18 KPX Oacute Ydieresis -18 KPX Oacute comma -37 KPX Oacute period -37 KPX Ocircumflex T 10 KPX Ocircumflex Tcaron 10 KPX Ocircumflex Tcommaaccent 10 KPX Ocircumflex V -18 KPX Ocircumflex Y -18 KPX Ocircumflex Yacute -18 KPX Ocircumflex Ydieresis -18 KPX Ocircumflex comma -37 KPX Ocircumflex period -37 KPX Odieresis T 10 KPX Odieresis Tcaron 10 KPX Odieresis Tcommaaccent 10 KPX Odieresis V -18 KPX Odieresis Y -18 KPX Odieresis Yacute -18 KPX Odieresis Ydieresis -18 KPX Odieresis comma -37 KPX Odieresis period -37 KPX Ograve T 10 KPX Ograve Tcaron 10 KPX Ograve Tcommaaccent 10 KPX Ograve V -18 KPX Ograve Y -18 KPX Ograve Yacute -18 KPX Ograve Ydieresis -18 KPX Ograve comma -37 KPX Ograve period -37 KPX Ohungarumlaut T 10 KPX Ohungarumlaut Tcaron 10 KPX Ohungarumlaut Tcommaaccent 10 KPX Ohungarumlaut V -18 KPX Ohungarumlaut Y -18 KPX Ohungarumlaut Yacute -18 KPX Ohungarumlaut Ydieresis -18 KPX Ohungarumlaut comma -37 KPX Ohungarumlaut period -37 KPX Omacron T 10 KPX Omacron Tcaron 10 KPX Omacron Tcommaaccent 10 KPX Omacron V -18 KPX Omacron Y -18 KPX Omacron Yacute -18 KPX Omacron Ydieresis -18 KPX Omacron comma -37 KPX Omacron period -37 KPX Oslash T 10 KPX Oslash Tcaron 10 KPX Oslash Tcommaaccent 10 KPX Oslash V -18 KPX Oslash Y -18 KPX Oslash Yacute -18 KPX Oslash Ydieresis -18 KPX Oslash comma -37 KPX Oslash period -37 KPX Otilde T 10 KPX Otilde Tcaron 10 KPX Otilde Tcommaaccent 10 KPX Otilde V -18 KPX Otilde Y -18 KPX Otilde Yacute -18 KPX Otilde Ydieresis -18 KPX Otilde comma -37 KPX Otilde period -37 KPX P A -55 KPX P Aacute -55 KPX P Abreve -55 KPX P Acircumflex -55 KPX P Adieresis -55 KPX P Agrave -55 KPX P Amacron -55 KPX P Aogonek -55 KPX P Aring -55 KPX P Atilde -55 KPX P a -37 KPX P aacute -37 KPX P abreve -37 KPX P acircumflex -37 KPX P adieresis -37 KPX P agrave -37 KPX P amacron -37 KPX P aogonek -37 KPX P aring -37 KPX P atilde -37 KPX P comma -125 KPX P e -37 KPX P eacute -37 KPX P ecaron -37 KPX P ecircumflex -37 KPX P edieresis -37 KPX P edotaccent -37 KPX P egrave -37 KPX P emacron -37 KPX P eogonek -37 KPX P o -37 KPX P oacute -37 KPX P ocircumflex -37 KPX P odieresis -37 KPX P ograve -37 KPX P ohungarumlaut -37 KPX P omacron -37 KPX P oslash -37 KPX P otilde -37 KPX P period -125 KPX Q comma -25 KPX Q period -25 KPX S comma -37 KPX S period -37 KPX Sacute comma -37 KPX Sacute period -37 KPX Scaron comma -37 KPX Scaron period -37 KPX Scedilla comma -37 KPX Scedilla period -37 KPX Scommaaccent comma -37 KPX Scommaaccent period -37 KPX T A -18 KPX T Aacute -18 KPX T Abreve -18 KPX T Acircumflex -18 KPX T Adieresis -18 KPX T Agrave -18 KPX T Amacron -18 KPX T Aogonek -18 KPX T Aring -18 KPX T Atilde -18 KPX T O 10 KPX T Oacute 10 KPX T Ocircumflex 10 KPX T Odieresis 10 KPX T Ograve 10 KPX T Ohungarumlaut 10 KPX T Omacron 10 KPX T Oslash 10 KPX T Otilde 10 KPX T a -55 KPX T aacute -55 KPX T abreve -55 KPX T acircumflex -55 KPX T adieresis -55 KPX T agrave -55 KPX T amacron -55 KPX T aogonek -55 KPX T aring -55 KPX T atilde -55 KPX T colon -37 KPX T comma -125 KPX T e -55 KPX T eacute -55 KPX T ecaron -55 KPX T ecircumflex -55 KPX T edieresis -55 KPX T edotaccent -55 KPX T egrave -55 KPX T emacron -55 KPX T eogonek -55 KPX T hyphen -100 KPX T o -55 KPX T oacute -55 KPX T ocircumflex -55 KPX T odieresis -55 KPX T ograve -55 KPX T ohungarumlaut -55 KPX T omacron -55 KPX T oslash -55 KPX T otilde -55 KPX T period -125 KPX T semicolon -37 KPX Tcaron A -18 KPX Tcaron Aacute -18 KPX Tcaron Abreve -18 KPX Tcaron Acircumflex -18 KPX Tcaron Adieresis -18 KPX Tcaron Agrave -18 KPX Tcaron Amacron -18 KPX Tcaron Aogonek -18 KPX Tcaron Aring -18 KPX Tcaron Atilde -18 KPX Tcaron O 10 KPX Tcaron Oacute 10 KPX Tcaron Ocircumflex 10 KPX Tcaron Odieresis 10 KPX Tcaron Ograve 10 KPX Tcaron Ohungarumlaut 10 KPX Tcaron Omacron 10 KPX Tcaron Oslash 10 KPX Tcaron Otilde 10 KPX Tcaron a -55 KPX Tcaron aacute -55 KPX Tcaron abreve -55 KPX Tcaron acircumflex -55 KPX Tcaron adieresis -55 KPX Tcaron agrave -55 KPX Tcaron amacron -55 KPX Tcaron aogonek -55 KPX Tcaron aring -55 KPX Tcaron atilde -55 KPX Tcaron colon -37 KPX Tcaron comma -125 KPX Tcaron e -55 KPX Tcaron eacute -55 KPX Tcaron ecaron -55 KPX Tcaron ecircumflex -55 KPX Tcaron edieresis -55 KPX Tcaron edotaccent -55 KPX Tcaron egrave -55 KPX Tcaron emacron -55 KPX Tcaron eogonek -55 KPX Tcaron hyphen -100 KPX Tcaron o -55 KPX Tcaron oacute -55 KPX Tcaron ocircumflex -55 KPX Tcaron odieresis -55 KPX Tcaron ograve -55 KPX Tcaron ohungarumlaut -55 KPX Tcaron omacron -55 KPX Tcaron oslash -55 KPX Tcaron otilde -55 KPX Tcaron period -125 KPX Tcaron semicolon -37 KPX Tcommaaccent A -18 KPX Tcommaaccent Aacute -18 KPX Tcommaaccent Abreve -18 KPX Tcommaaccent Acircumflex -18 KPX Tcommaaccent Adieresis -18 KPX Tcommaaccent Agrave -18 KPX Tcommaaccent Amacron -18 KPX Tcommaaccent Aogonek -18 KPX Tcommaaccent Aring -18 KPX Tcommaaccent Atilde -18 KPX Tcommaaccent O 10 KPX Tcommaaccent Oacute 10 KPX Tcommaaccent Ocircumflex 10 KPX Tcommaaccent Odieresis 10 KPX Tcommaaccent Ograve 10 KPX Tcommaaccent Ohungarumlaut 10 KPX Tcommaaccent Omacron 10 KPX Tcommaaccent Oslash 10 KPX Tcommaaccent Otilde 10 KPX Tcommaaccent a -55 KPX Tcommaaccent aacute -55 KPX Tcommaaccent abreve -55 KPX Tcommaaccent acircumflex -55 KPX Tcommaaccent adieresis -55 KPX Tcommaaccent agrave -55 KPX Tcommaaccent amacron -55 KPX Tcommaaccent aogonek -55 KPX Tcommaaccent aring -55 KPX Tcommaaccent atilde -55 KPX Tcommaaccent colon -37 KPX Tcommaaccent comma -125 KPX Tcommaaccent e -55 KPX Tcommaaccent eacute -55 KPX Tcommaaccent ecaron -55 KPX Tcommaaccent ecircumflex -55 KPX Tcommaaccent edieresis -55 KPX Tcommaaccent edotaccent -55 KPX Tcommaaccent egrave -55 KPX Tcommaaccent emacron -55 KPX Tcommaaccent eogonek -55 KPX Tcommaaccent hyphen -100 KPX Tcommaaccent o -55 KPX Tcommaaccent oacute -55 KPX Tcommaaccent ocircumflex -55 KPX Tcommaaccent odieresis -55 KPX Tcommaaccent ograve -55 KPX Tcommaaccent ohungarumlaut -55 KPX Tcommaaccent omacron -55 KPX Tcommaaccent oslash -55 KPX Tcommaaccent otilde -55 KPX Tcommaaccent period -125 KPX Tcommaaccent semicolon -37 KPX U A -30 KPX U Aacute -30 KPX U Abreve -30 KPX U Acircumflex -30 KPX U Adieresis -30 KPX U Agrave -30 KPX U Amacron -30 KPX U Aogonek -30 KPX U Aring -30 KPX U Atilde -30 KPX U comma -100 KPX U period -100 KPX Uacute A -30 KPX Uacute Aacute -30 KPX Uacute Abreve -30 KPX Uacute Acircumflex -30 KPX Uacute Adieresis -30 KPX Uacute Agrave -30 KPX Uacute Amacron -30 KPX Uacute Aogonek -30 KPX Uacute Aring -30 KPX Uacute Atilde -30 KPX Uacute comma -100 KPX Uacute period -100 KPX Ucircumflex A -30 KPX Ucircumflex Aacute -30 KPX Ucircumflex Abreve -30 KPX Ucircumflex Acircumflex -30 KPX Ucircumflex Adieresis -30 KPX Ucircumflex Agrave -30 KPX Ucircumflex Amacron -30 KPX Ucircumflex Aogonek -30 KPX Ucircumflex Aring -30 KPX Ucircumflex Atilde -30 KPX Ucircumflex comma -100 KPX Ucircumflex period -100 KPX Udieresis A -30 KPX Udieresis Aacute -30 KPX Udieresis Abreve -30 KPX Udieresis Acircumflex -30 KPX Udieresis Adieresis -30 KPX Udieresis Agrave -30 KPX Udieresis Amacron -30 KPX Udieresis Aogonek -30 KPX Udieresis Aring -30 KPX Udieresis Atilde -30 KPX Udieresis comma -100 KPX Udieresis period -100 KPX Ugrave A -30 KPX Ugrave Aacute -30 KPX Ugrave Abreve -30 KPX Ugrave Acircumflex -30 KPX Ugrave Adieresis -30 KPX Ugrave Agrave -30 KPX Ugrave Amacron -30 KPX Ugrave Aogonek -30 KPX Ugrave Aring -30 KPX Ugrave Atilde -30 KPX Ugrave comma -100 KPX Ugrave period -100 KPX Uhungarumlaut A -30 KPX Uhungarumlaut Aacute -30 KPX Uhungarumlaut Abreve -30 KPX Uhungarumlaut Acircumflex -30 KPX Uhungarumlaut Adieresis -30 KPX Uhungarumlaut Agrave -30 KPX Uhungarumlaut Amacron -30 KPX Uhungarumlaut Aogonek -30 KPX Uhungarumlaut Aring -30 KPX Uhungarumlaut Atilde -30 KPX Uhungarumlaut comma -100 KPX Uhungarumlaut period -100 KPX Umacron A -30 KPX Umacron Aacute -30 KPX Umacron Abreve -30 KPX Umacron Acircumflex -30 KPX Umacron Adieresis -30 KPX Umacron Agrave -30 KPX Umacron Amacron -30 KPX Umacron Aogonek -30 KPX Umacron Aring -30 KPX Umacron Atilde -30 KPX Umacron comma -100 KPX Umacron period -100 KPX Uogonek A -30 KPX Uogonek Aacute -30 KPX Uogonek Abreve -30 KPX Uogonek Acircumflex -30 KPX Uogonek Adieresis -30 KPX Uogonek Agrave -30 KPX Uogonek Amacron -30 KPX Uogonek Aogonek -30 KPX Uogonek Aring -30 KPX Uogonek Atilde -30 KPX Uogonek comma -100 KPX Uogonek period -100 KPX Uring A -30 KPX Uring Aacute -30 KPX Uring Abreve -30 KPX Uring Acircumflex -30 KPX Uring Adieresis -30 KPX Uring Agrave -30 KPX Uring Amacron -30 KPX Uring Aogonek -30 KPX Uring Aring -30 KPX Uring Atilde -30 KPX Uring comma -100 KPX Uring period -100 KPX V A -74 KPX V Aacute -74 KPX V Abreve -74 KPX V Acircumflex -74 KPX V Adieresis -74 KPX V Agrave -74 KPX V Amacron -74 KPX V Aogonek -74 KPX V Aring -74 KPX V Atilde -74 KPX V O -18 KPX V Oacute -18 KPX V Ocircumflex -18 KPX V Odieresis -18 KPX V Ograve -18 KPX V Ohungarumlaut -18 KPX V Omacron -18 KPX V Oslash -18 KPX V Otilde -18 KPX V a -85 KPX V aacute -85 KPX V abreve -85 KPX V acircumflex -85 KPX V adieresis -85 KPX V agrave -85 KPX V amacron -85 KPX V aogonek -85 KPX V aring -85 KPX V atilde -85 KPX V colon -75 KPX V comma -125 KPX V e -75 KPX V eacute -75 KPX V ecaron -75 KPX V ecircumflex -75 KPX V edieresis -75 KPX V edotaccent -75 KPX V egrave -75 KPX V emacron -75 KPX V eogonek -75 KPX V hyphen -100 KPX V i -18 KPX V iacute -18 KPX V icircumflex -18 KPX V iogonek -18 KPX V o -75 KPX V oacute -75 KPX V ocircumflex -75 KPX V odieresis -75 KPX V ograve -75 KPX V ohungarumlaut -75 KPX V omacron -75 KPX V oslash -75 KPX V otilde -75 KPX V period -125 KPX V semicolon -75 KPX V u -75 KPX V uacute -75 KPX V ucircumflex -75 KPX V udieresis -75 KPX V ugrave -75 KPX V uhungarumlaut -75 KPX V umacron -75 KPX V uogonek -75 KPX V uring -75 KPX W A -50 KPX W Aacute -50 KPX W Abreve -50 KPX W Acircumflex -50 KPX W Adieresis -50 KPX W Agrave -50 KPX W Amacron -50 KPX W Aogonek -50 KPX W Aring -50 KPX W Atilde -50 KPX W a -75 KPX W aacute -75 KPX W abreve -75 KPX W acircumflex -75 KPX W adieresis -75 KPX W agrave -75 KPX W amacron -75 KPX W aogonek -75 KPX W aring -75 KPX W atilde -75 KPX W colon -100 KPX W comma -125 KPX W e -60 KPX W eacute -60 KPX W ecaron -60 KPX W ecircumflex -60 KPX W edieresis -60 KPX W edotaccent -60 KPX W egrave -60 KPX W emacron -60 KPX W eogonek -60 KPX W hyphen -100 KPX W i -18 KPX W iacute -18 KPX W icircumflex -18 KPX W iogonek -18 KPX W o -60 KPX W oacute -60 KPX W ocircumflex -60 KPX W odieresis -60 KPX W ograve -60 KPX W ohungarumlaut -60 KPX W omacron -60 KPX W oslash -60 KPX W otilde -60 KPX W period -125 KPX W semicolon -100 KPX W u -55 KPX W uacute -55 KPX W ucircumflex -55 KPX W udieresis -55 KPX W ugrave -55 KPX W uhungarumlaut -55 KPX W umacron -55 KPX W uogonek -55 KPX W uring -55 KPX W y -55 KPX W yacute -55 KPX W ydieresis -55 KPX Y A -75 KPX Y Aacute -75 KPX Y Abreve -75 KPX Y Acircumflex -75 KPX Y Adieresis -75 KPX Y Agrave -75 KPX Y Amacron -75 KPX Y Aogonek -75 KPX Y Aring -75 KPX Y Atilde -75 KPX Y O -18 KPX Y Oacute -18 KPX Y Ocircumflex -18 KPX Y Odieresis -18 KPX Y Ograve -18 KPX Y Ohungarumlaut -18 KPX Y Omacron -18 KPX Y Oslash -18 KPX Y Otilde -18 KPX Y a -100 KPX Y aacute -100 KPX Y abreve -60 KPX Y acircumflex -100 KPX Y adieresis -100 KPX Y agrave -60 KPX Y amacron -100 KPX Y aogonek -100 KPX Y aring -100 KPX Y atilde -100 KPX Y colon -75 KPX Y comma -100 KPX Y e -100 KPX Y eacute -100 KPX Y ecaron -60 KPX Y ecircumflex -100 KPX Y edieresis -60 KPX Y edotaccent -100 KPX Y egrave -60 KPX Y emacron -100 KPX Y eogonek -100 KPX Y hyphen -125 KPX Y i -18 KPX Y iacute -18 KPX Y icircumflex -18 KPX Y imacron -18 KPX Y iogonek -18 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -60 KPX Y ograve -60 KPX Y ohungarumlaut -100 KPX Y omacron -100 KPX Y oslash -100 KPX Y otilde -100 KPX Y period -100 KPX Y semicolon -75 KPX Y u -91 KPX Y uacute -91 KPX Y ucircumflex -91 KPX Y udieresis -91 KPX Y ugrave -91 KPX Y uhungarumlaut -91 KPX Y umacron -91 KPX Y uogonek -91 KPX Y uring -91 KPX Yacute A -75 KPX Yacute Aacute -75 KPX Yacute Abreve -75 KPX Yacute Acircumflex -75 KPX Yacute Adieresis -75 KPX Yacute Agrave -75 KPX Yacute Amacron -75 KPX Yacute Aogonek -75 KPX Yacute Aring -75 KPX Yacute Atilde -75 KPX Yacute O -18 KPX Yacute Oacute -18 KPX Yacute Ocircumflex -18 KPX Yacute Odieresis -18 KPX Yacute Ograve -18 KPX Yacute Ohungarumlaut -18 KPX Yacute Omacron -18 KPX Yacute Oslash -18 KPX Yacute Otilde -18 KPX Yacute a -100 KPX Yacute aacute -100 KPX Yacute abreve -60 KPX Yacute acircumflex -100 KPX Yacute adieresis -100 KPX Yacute agrave -60 KPX Yacute amacron -100 KPX Yacute aogonek -100 KPX Yacute aring -100 KPX Yacute atilde -100 KPX Yacute colon -75 KPX Yacute comma -100 KPX Yacute e -100 KPX Yacute eacute -100 KPX Yacute ecaron -60 KPX Yacute ecircumflex -100 KPX Yacute edieresis -60 KPX Yacute edotaccent -100 KPX Yacute egrave -60 KPX Yacute emacron -100 KPX Yacute eogonek -100 KPX Yacute hyphen -125 KPX Yacute i -18 KPX Yacute iacute -18 KPX Yacute icircumflex -18 KPX Yacute imacron -18 KPX Yacute iogonek -18 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -60 KPX Yacute ograve -60 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -100 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute period -100 KPX Yacute semicolon -75 KPX Yacute u -91 KPX Yacute uacute -91 KPX Yacute ucircumflex -91 KPX Yacute udieresis -91 KPX Yacute ugrave -91 KPX Yacute uhungarumlaut -91 KPX Yacute umacron -91 KPX Yacute uogonek -91 KPX Yacute uring -91 KPX Ydieresis A -75 KPX Ydieresis Aacute -75 KPX Ydieresis Abreve -75 KPX Ydieresis Acircumflex -75 KPX Ydieresis Adieresis -75 KPX Ydieresis Agrave -75 KPX Ydieresis Amacron -75 KPX Ydieresis Aogonek -75 KPX Ydieresis Aring -75 KPX Ydieresis Atilde -75 KPX Ydieresis O -18 KPX Ydieresis Oacute -18 KPX Ydieresis Ocircumflex -18 KPX Ydieresis Odieresis -18 KPX Ydieresis Ograve -18 KPX Ydieresis Ohungarumlaut -18 KPX Ydieresis Omacron -18 KPX Ydieresis Oslash -18 KPX Ydieresis Otilde -18 KPX Ydieresis a -100 KPX Ydieresis aacute -100 KPX Ydieresis abreve -60 KPX Ydieresis acircumflex -100 KPX Ydieresis adieresis -100 KPX Ydieresis agrave -60 KPX Ydieresis amacron -100 KPX Ydieresis aogonek -100 KPX Ydieresis aring -100 KPX Ydieresis atilde -100 KPX Ydieresis colon -75 KPX Ydieresis comma -100 KPX Ydieresis e -100 KPX Ydieresis eacute -100 KPX Ydieresis ecaron -60 KPX Ydieresis ecircumflex -100 KPX Ydieresis edieresis -60 KPX Ydieresis edotaccent -100 KPX Ydieresis egrave -60 KPX Ydieresis emacron -100 KPX Ydieresis eogonek -100 KPX Ydieresis hyphen -125 KPX Ydieresis i -18 KPX Ydieresis iacute -18 KPX Ydieresis icircumflex -18 KPX Ydieresis imacron -18 KPX Ydieresis iogonek -18 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -60 KPX Ydieresis ograve -60 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -100 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis period -100 KPX Ydieresis semicolon -75 KPX Ydieresis u -91 KPX Ydieresis uacute -91 KPX Ydieresis ucircumflex -91 KPX Ydieresis udieresis -91 KPX Ydieresis ugrave -91 KPX Ydieresis uhungarumlaut -91 KPX Ydieresis umacron -91 KPX Ydieresis uogonek -91 KPX Ydieresis uring -91 KPX a v -10 KPX a w -10 KPX a y -10 KPX a yacute -10 KPX a ydieresis -10 KPX aacute v -10 KPX aacute w -10 KPX aacute y -10 KPX aacute yacute -10 KPX aacute ydieresis -10 KPX abreve v -10 KPX abreve w -10 KPX abreve y -10 KPX abreve yacute -10 KPX abreve ydieresis -10 KPX acircumflex v -10 KPX acircumflex w -10 KPX acircumflex y -10 KPX acircumflex yacute -10 KPX acircumflex ydieresis -10 KPX adieresis v -10 KPX adieresis w -10 KPX adieresis y -10 KPX adieresis yacute -10 KPX adieresis ydieresis -10 KPX agrave v -10 KPX agrave w -10 KPX agrave y -10 KPX agrave yacute -10 KPX agrave ydieresis -10 KPX amacron v -10 KPX amacron w -10 KPX amacron y -10 KPX amacron yacute -10 KPX amacron ydieresis -10 KPX aogonek v -10 KPX aogonek w -10 KPX aring v -10 KPX aring w -10 KPX aring y -10 KPX aring yacute -10 KPX aring ydieresis -10 KPX atilde v -10 KPX atilde w -10 KPX atilde y -10 KPX atilde yacute -10 KPX atilde ydieresis -10 KPX b comma -18 KPX b period -18 KPX c comma -18 KPX c h -7 KPX c k -7 KPX c kcommaaccent -7 KPX c l -7 KPX c lacute -7 KPX c lcommaaccent -7 KPX c lslash -7 KPX c period -18 KPX cacute comma -18 KPX cacute h -7 KPX cacute k -7 KPX cacute kcommaaccent -7 KPX cacute l -7 KPX cacute lacute -7 KPX cacute lcommaaccent -7 KPX cacute lslash -7 KPX cacute period -18 KPX ccaron comma -18 KPX ccaron h -7 KPX ccaron k -7 KPX ccaron kcommaaccent -7 KPX ccaron l -7 KPX ccaron lacute -7 KPX ccaron lcommaaccent -7 KPX ccaron lslash -7 KPX ccaron period -18 KPX ccedilla comma -18 KPX ccedilla h -7 KPX ccedilla k -7 KPX ccedilla kcommaaccent -7 KPX ccedilla l -7 KPX ccedilla lacute -7 KPX ccedilla lcommaaccent -7 KPX ccedilla lslash -7 KPX ccedilla period -18 KPX colon space -37 KPX comma quotedblright -37 KPX comma quoteright -37 KPX comma space -37 KPX e comma -18 KPX e period -18 KPX eacute comma -18 KPX eacute period -18 KPX ecaron comma -18 KPX ecaron period -18 KPX ecircumflex comma -18 KPX ecircumflex period -18 KPX edieresis comma -18 KPX edieresis period -18 KPX edotaccent comma -18 KPX edotaccent period -18 KPX egrave comma -18 KPX egrave period -18 KPX emacron comma -18 KPX emacron period -18 KPX eogonek comma -18 KPX eogonek period -18 KPX f comma -37 KPX f period -37 KPX f quotedblright 100 KPX f quoteright 100 KPX g comma -25 KPX g period -25 KPX gbreve comma -25 KPX gbreve period -25 KPX gcommaaccent comma -25 KPX gcommaaccent period -25 KPX o comma -18 KPX o period -18 KPX oacute comma -18 KPX oacute period -18 KPX ocircumflex comma -18 KPX ocircumflex period -18 KPX odieresis comma -18 KPX odieresis period -18 KPX ograve comma -18 KPX ograve period -18 KPX ohungarumlaut comma -18 KPX ohungarumlaut period -18 KPX omacron comma -18 KPX omacron period -18 KPX oslash comma -18 KPX oslash period -18 KPX otilde comma -18 KPX otilde period -18 KPX p comma -18 KPX p period -18 KPX period quotedblright -37 KPX period quoteright -37 KPX period space -37 KPX quotedblleft A -74 KPX quotedblleft Aacute -74 KPX quotedblleft Abreve -74 KPX quotedblleft Acircumflex -74 KPX quotedblleft Adieresis -74 KPX quotedblleft Agrave -74 KPX quotedblleft Amacron -74 KPX quotedblleft Aogonek -74 KPX quotedblleft Aring -74 KPX quotedblleft Atilde -74 KPX quotedblright space -37 KPX quoteleft A -74 KPX quoteleft Aacute -74 KPX quoteleft Abreve -74 KPX quoteleft Acircumflex -74 KPX quoteleft Adieresis -74 KPX quoteleft Agrave -74 KPX quoteleft Amacron -74 KPX quoteleft Aogonek -74 KPX quoteleft Aring -74 KPX quoteleft Atilde -74 KPX quoteleft quoteleft -25 KPX quoteright d -37 KPX quoteright dcroat -37 KPX quoteright quoteright -25 KPX quoteright s -25 KPX quoteright sacute -25 KPX quoteright scaron -25 KPX quoteright scedilla -25 KPX quoteright scommaaccent -25 KPX r comma -100 KPX r hyphen -37 KPX r period -100 KPX racute comma -100 KPX racute hyphen -37 KPX racute period -100 KPX rcaron comma -100 KPX rcaron hyphen -37 KPX rcaron period -100 KPX rcommaaccent comma -100 KPX rcommaaccent hyphen -37 KPX rcommaaccent period -100 KPX s comma -25 KPX s period -25 KPX sacute comma -25 KPX sacute period -25 KPX scaron comma -25 KPX scaron period -25 KPX scedilla comma -25 KPX scedilla period -25 KPX scommaaccent comma -25 KPX scommaaccent period -25 KPX semicolon space -37 KPX space A -37 KPX space Aacute -37 KPX space Abreve -37 KPX space Acircumflex -37 KPX space Adieresis -37 KPX space Agrave -37 KPX space Amacron -37 KPX space Aogonek -37 KPX space Aring -37 KPX space Atilde -37 KPX space T -37 KPX space Tcaron -37 KPX space Tcommaaccent -37 KPX space V -37 KPX space W -37 KPX space Y -37 KPX space Yacute -37 KPX space Ydieresis -37 KPX space quotedblleft -37 KPX space quoteleft -37 KPX v comma -125 KPX v period -125 KPX w a -18 KPX w aacute -18 KPX w abreve -18 KPX w acircumflex -18 KPX w adieresis -18 KPX w agrave -18 KPX w amacron -18 KPX w aogonek -18 KPX w aring -18 KPX w atilde -18 KPX w comma -125 KPX w period -125 KPX y comma -125 KPX y period -125 KPX yacute comma -125 KPX yacute period -125 KPX ydieresis comma -125 KPX ydieresis period -125 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Times-Bold.afm0000644000222100022210000020213314541067540015323 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:52:56 1997 Comment PH added entry for Euro character, copied from a different version, 19 July 2009. Comment PH added additional characters (after Euro) 17 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43065 Comment VMusage 41636 52661 FontName Times-Bold FullName Times Bold FamilyName Times Weight Bold ItalicAngle 0 IsFixedPitch false FontBBox -168 -218 1000 935 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 676 XHeight 461 Ascender 683 Descender -217 StdHW 44 StdVW 139 StartCharMetrics 361 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 81 -13 251 691 ; C 34 ; WX 555 ; N quotedbl ; B 83 404 472 691 ; C 35 ; WX 500 ; N numbersign ; B 4 0 496 700 ; C 36 ; WX 500 ; N dollar ; B 29 -99 472 750 ; C 37 ; WX 1000 ; N percent ; B 124 -14 877 692 ; C 38 ; WX 833 ; N ampersand ; B 62 -16 787 691 ; C 39 ; WX 333 ; N quoteright ; B 79 356 263 691 ; C 40 ; WX 333 ; N parenleft ; B 46 -168 306 694 ; C 41 ; WX 333 ; N parenright ; B 27 -168 287 694 ; C 42 ; WX 500 ; N asterisk ; B 56 255 447 691 ; C 43 ; WX 570 ; N plus ; B 33 0 537 506 ; C 44 ; WX 250 ; N comma ; B 39 -180 223 155 ; C 45 ; WX 333 ; N hyphen ; B 44 171 287 287 ; C 46 ; WX 250 ; N period ; B 41 -13 210 156 ; C 47 ; WX 278 ; N slash ; B -24 -19 302 691 ; C 48 ; WX 500 ; N zero ; B 24 -13 476 688 ; C 49 ; WX 500 ; N one ; B 65 0 442 688 ; C 50 ; WX 500 ; N two ; B 17 0 478 688 ; C 51 ; WX 500 ; N three ; B 16 -14 468 688 ; C 52 ; WX 500 ; N four ; B 19 0 475 688 ; C 53 ; WX 500 ; N five ; B 22 -8 470 676 ; C 54 ; WX 500 ; N six ; B 28 -13 475 688 ; C 55 ; WX 500 ; N seven ; B 17 0 477 676 ; C 56 ; WX 500 ; N eight ; B 28 -13 472 688 ; C 57 ; WX 500 ; N nine ; B 26 -13 473 688 ; C 58 ; WX 333 ; N colon ; B 82 -13 251 472 ; C 59 ; WX 333 ; N semicolon ; B 82 -180 266 472 ; C 60 ; WX 570 ; N less ; B 31 -8 539 514 ; C 61 ; WX 570 ; N equal ; B 33 107 537 399 ; C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ; C 63 ; WX 500 ; N question ; B 57 -13 445 689 ; C 64 ; WX 930 ; N at ; B 108 -19 822 691 ; C 65 ; WX 722 ; N A ; B 9 0 689 690 ; C 66 ; WX 667 ; N B ; B 16 0 619 676 ; C 67 ; WX 722 ; N C ; B 49 -19 687 691 ; C 68 ; WX 722 ; N D ; B 14 0 690 676 ; C 69 ; WX 667 ; N E ; B 16 0 641 676 ; C 70 ; WX 611 ; N F ; B 16 0 583 676 ; C 71 ; WX 778 ; N G ; B 37 -19 755 691 ; C 72 ; WX 778 ; N H ; B 21 0 759 676 ; C 73 ; WX 389 ; N I ; B 20 0 370 676 ; C 74 ; WX 500 ; N J ; B 3 -96 479 676 ; C 75 ; WX 778 ; N K ; B 30 0 769 676 ; C 76 ; WX 667 ; N L ; B 19 0 638 676 ; C 77 ; WX 944 ; N M ; B 14 0 921 676 ; C 78 ; WX 722 ; N N ; B 16 -18 701 676 ; C 79 ; WX 778 ; N O ; B 35 -19 743 691 ; C 80 ; WX 611 ; N P ; B 16 0 600 676 ; C 81 ; WX 778 ; N Q ; B 35 -176 743 691 ; C 82 ; WX 722 ; N R ; B 26 0 715 676 ; C 83 ; WX 556 ; N S ; B 35 -19 513 692 ; C 84 ; WX 667 ; N T ; B 31 0 636 676 ; C 85 ; WX 722 ; N U ; B 16 -19 701 676 ; C 86 ; WX 722 ; N V ; B 16 -18 701 676 ; C 87 ; WX 1000 ; N W ; B 19 -15 981 676 ; C 88 ; WX 722 ; N X ; B 16 0 699 676 ; C 89 ; WX 722 ; N Y ; B 15 0 699 676 ; C 90 ; WX 667 ; N Z ; B 28 0 634 676 ; C 91 ; WX 333 ; N bracketleft ; B 67 -149 301 678 ; C 92 ; WX 278 ; N backslash ; B -25 -19 303 691 ; C 93 ; WX 333 ; N bracketright ; B 32 -149 266 678 ; C 94 ; WX 581 ; N asciicircum ; B 73 311 509 676 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 333 ; N quoteleft ; B 70 356 254 691 ; C 97 ; WX 500 ; N a ; B 25 -14 488 473 ; C 98 ; WX 556 ; N b ; B 17 -14 521 676 ; C 99 ; WX 444 ; N c ; B 25 -14 430 473 ; C 100 ; WX 556 ; N d ; B 25 -14 534 676 ; C 101 ; WX 444 ; N e ; B 25 -14 426 473 ; C 102 ; WX 333 ; N f ; B 14 0 389 691 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B 28 -206 483 473 ; C 104 ; WX 556 ; N h ; B 16 0 534 676 ; C 105 ; WX 278 ; N i ; B 16 0 255 691 ; C 106 ; WX 333 ; N j ; B -57 -203 263 691 ; C 107 ; WX 556 ; N k ; B 22 0 543 676 ; C 108 ; WX 278 ; N l ; B 16 0 255 676 ; C 109 ; WX 833 ; N m ; B 16 0 814 473 ; C 110 ; WX 556 ; N n ; B 21 0 539 473 ; C 111 ; WX 500 ; N o ; B 25 -14 476 473 ; C 112 ; WX 556 ; N p ; B 19 -205 524 473 ; C 113 ; WX 556 ; N q ; B 34 -205 536 473 ; C 114 ; WX 444 ; N r ; B 29 0 434 473 ; C 115 ; WX 389 ; N s ; B 25 -14 361 473 ; C 116 ; WX 333 ; N t ; B 20 -12 332 630 ; C 117 ; WX 556 ; N u ; B 16 -14 537 461 ; C 118 ; WX 500 ; N v ; B 21 -14 485 461 ; C 119 ; WX 722 ; N w ; B 23 -14 707 461 ; C 120 ; WX 500 ; N x ; B 12 0 484 461 ; C 121 ; WX 500 ; N y ; B 16 -205 480 461 ; C 122 ; WX 444 ; N z ; B 21 0 420 461 ; C 123 ; WX 394 ; N braceleft ; B 22 -175 340 698 ; C 124 ; WX 220 ; N bar ; B 66 -218 154 782 ; C 125 ; WX 394 ; N braceright ; B 54 -175 372 698 ; C 126 ; WX 520 ; N asciitilde ; B 29 173 491 333 ; C 160 ; WX 250 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 333 ; N exclamdown ; B 82 -203 252 501 ; C 162 ; WX 500 ; N cent ; B 53 -140 458 588 ; C 163 ; WX 500 ; N sterling ; B 21 -14 477 684 ; C 164 ; WX 167 ; N fraction ; B -168 -12 329 688 ; C 165 ; WX 500 ; N yen ; B -64 0 547 676 ; C 166 ; WX 500 ; N florin ; B 0 -155 498 706 ; C 167 ; WX 500 ; N section ; B 57 -132 443 691 ; C 168 ; WX 500 ; N currency ; B -26 61 526 613 ; C 169 ; WX 278 ; N quotesingle ; B 75 404 204 691 ; C 170 ; WX 500 ; N quotedblleft ; B 32 356 486 691 ; C 171 ; WX 500 ; N guillemotleft ; B 23 36 473 415 ; C 172 ; WX 333 ; N guilsinglleft ; B 51 36 305 415 ; C 173 ; WX 333 ; N guilsinglright ; B 28 36 282 415 ; C 174 ; WX 556 ; N fi ; B 14 0 536 691 ; C 175 ; WX 556 ; N fl ; B 14 0 536 691 ; C 177 ; WX 500 ; N endash ; B 0 181 500 271 ; C 178 ; WX 500 ; N dagger ; B 47 -134 453 691 ; C 179 ; WX 500 ; N daggerdbl ; B 45 -132 456 691 ; C 180 ; WX 250 ; N periodcentered ; B 41 248 210 417 ; C 182 ; WX 540 ; N paragraph ; B 0 -186 519 676 ; C 183 ; WX 350 ; N bullet ; B 35 198 315 478 ; C 184 ; WX 333 ; N quotesinglbase ; B 79 -180 263 155 ; C 185 ; WX 500 ; N quotedblbase ; B 14 -180 468 155 ; C 186 ; WX 500 ; N quotedblright ; B 14 356 468 691 ; C 187 ; WX 500 ; N guillemotright ; B 27 36 477 415 ; C 188 ; WX 1000 ; N ellipsis ; B 82 -13 917 156 ; C 189 ; WX 1000 ; N perthousand ; B 7 -29 995 706 ; C 191 ; WX 500 ; N questiondown ; B 55 -201 443 501 ; C 193 ; WX 333 ; N grave ; B 8 528 246 713 ; C 194 ; WX 333 ; N acute ; B 86 528 324 713 ; C 195 ; WX 333 ; N circumflex ; B -2 528 335 704 ; C 196 ; WX 333 ; N tilde ; B -16 547 349 674 ; C 197 ; WX 333 ; N macron ; B 1 565 331 637 ; C 198 ; WX 333 ; N breve ; B 15 528 318 691 ; C 199 ; WX 333 ; N dotaccent ; B 103 536 258 691 ; C 200 ; WX 333 ; N dieresis ; B -2 537 335 667 ; C 202 ; WX 333 ; N ring ; B 60 527 273 740 ; C 203 ; WX 333 ; N cedilla ; B 68 -218 294 0 ; C 205 ; WX 333 ; N hungarumlaut ; B -13 528 425 713 ; C 206 ; WX 333 ; N ogonek ; B 90 -193 319 24 ; C 207 ; WX 333 ; N caron ; B -2 528 335 704 ; C 208 ; WX 1000 ; N emdash ; B 0 181 1000 271 ; C 225 ; WX 1000 ; N AE ; B 4 0 951 676 ; C 227 ; WX 300 ; N ordfeminine ; B -1 397 301 688 ; C 232 ; WX 667 ; N Lslash ; B 19 0 638 676 ; C 233 ; WX 778 ; N Oslash ; B 35 -74 743 737 ; C 234 ; WX 1000 ; N OE ; B 22 -5 981 684 ; C 235 ; WX 330 ; N ordmasculine ; B 18 397 312 688 ; C 241 ; WX 722 ; N ae ; B 33 -14 693 473 ; C 245 ; WX 278 ; N dotlessi ; B 16 0 255 461 ; C 248 ; WX 278 ; N lslash ; B -22 0 303 676 ; C 249 ; WX 500 ; N oslash ; B 25 -92 476 549 ; C 250 ; WX 722 ; N oe ; B 22 -14 696 473 ; C 251 ; WX 556 ; N germandbls ; B 19 -12 517 691 ; C -1 ; WX 389 ; N Idieresis ; B 20 0 370 877 ; C -1 ; WX 444 ; N eacute ; B 25 -14 426 713 ; C -1 ; WX 500 ; N abreve ; B 25 -14 488 691 ; C -1 ; WX 556 ; N uhungarumlaut ; B 16 -14 557 713 ; C -1 ; WX 444 ; N ecaron ; B 25 -14 426 704 ; C -1 ; WX 722 ; N Ydieresis ; B 15 0 699 877 ; C -1 ; WX 570 ; N divide ; B 33 -31 537 537 ; C -1 ; WX 722 ; N Yacute ; B 15 0 699 923 ; C -1 ; WX 722 ; N Acircumflex ; B 9 0 689 914 ; C -1 ; WX 500 ; N aacute ; B 25 -14 488 713 ; C -1 ; WX 722 ; N Ucircumflex ; B 16 -19 701 914 ; C -1 ; WX 500 ; N yacute ; B 16 -205 480 713 ; C -1 ; WX 389 ; N scommaaccent ; B 25 -218 361 473 ; C -1 ; WX 444 ; N ecircumflex ; B 25 -14 426 704 ; C -1 ; WX 722 ; N Uring ; B 16 -19 701 935 ; C -1 ; WX 722 ; N Udieresis ; B 16 -19 701 877 ; C -1 ; WX 500 ; N aogonek ; B 25 -193 504 473 ; C -1 ; WX 722 ; N Uacute ; B 16 -19 701 923 ; C -1 ; WX 556 ; N uogonek ; B 16 -193 539 461 ; C -1 ; WX 667 ; N Edieresis ; B 16 0 641 877 ; C -1 ; WX 722 ; N Dcroat ; B 6 0 690 676 ; C -1 ; WX 250 ; N commaaccent ; B 47 -218 203 -50 ; C -1 ; WX 747 ; N copyright ; B 26 -19 721 691 ; C -1 ; WX 667 ; N Emacron ; B 16 0 641 847 ; C -1 ; WX 444 ; N ccaron ; B 25 -14 430 704 ; C -1 ; WX 500 ; N aring ; B 25 -14 488 740 ; C -1 ; WX 722 ; N Ncommaaccent ; B 16 -188 701 676 ; C -1 ; WX 278 ; N lacute ; B 16 0 297 923 ; C -1 ; WX 500 ; N agrave ; B 25 -14 488 713 ; C -1 ; WX 667 ; N Tcommaaccent ; B 31 -218 636 676 ; C -1 ; WX 722 ; N Cacute ; B 49 -19 687 923 ; C -1 ; WX 500 ; N atilde ; B 25 -14 488 674 ; C -1 ; WX 667 ; N Edotaccent ; B 16 0 641 901 ; C -1 ; WX 389 ; N scaron ; B 25 -14 363 704 ; C -1 ; WX 389 ; N scedilla ; B 25 -218 361 473 ; C -1 ; WX 278 ; N iacute ; B 16 0 289 713 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 722 ; N Rcaron ; B 26 0 715 914 ; C -1 ; WX 778 ; N Gcommaaccent ; B 37 -218 755 691 ; C -1 ; WX 556 ; N ucircumflex ; B 16 -14 537 704 ; C -1 ; WX 500 ; N acircumflex ; B 25 -14 488 704 ; C -1 ; WX 722 ; N Amacron ; B 9 0 689 847 ; C -1 ; WX 444 ; N rcaron ; B 29 0 434 704 ; C -1 ; WX 444 ; N ccedilla ; B 25 -218 430 473 ; C -1 ; WX 667 ; N Zdotaccent ; B 28 0 634 901 ; C -1 ; WX 611 ; N Thorn ; B 16 0 600 676 ; C -1 ; WX 778 ; N Omacron ; B 35 -19 743 847 ; C -1 ; WX 722 ; N Racute ; B 26 0 715 923 ; C -1 ; WX 556 ; N Sacute ; B 35 -19 513 923 ; C -1 ; WX 672 ; N dcaron ; B 25 -14 681 682 ; C -1 ; WX 722 ; N Umacron ; B 16 -19 701 847 ; C -1 ; WX 556 ; N uring ; B 16 -14 537 740 ; C -1 ; WX 300 ; N threesuperior ; B 3 268 297 688 ; C -1 ; WX 778 ; N Ograve ; B 35 -19 743 923 ; C -1 ; WX 722 ; N Agrave ; B 9 0 689 923 ; C -1 ; WX 722 ; N Abreve ; B 9 0 689 901 ; C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ; C -1 ; WX 556 ; N uacute ; B 16 -14 537 713 ; C -1 ; WX 667 ; N Tcaron ; B 31 0 636 914 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 500 ; N ydieresis ; B 16 -205 480 667 ; C -1 ; WX 722 ; N Nacute ; B 16 -18 701 923 ; C -1 ; WX 278 ; N icircumflex ; B -37 0 300 704 ; C -1 ; WX 667 ; N Ecircumflex ; B 16 0 641 914 ; C -1 ; WX 500 ; N adieresis ; B 25 -14 488 667 ; C -1 ; WX 444 ; N edieresis ; B 25 -14 426 667 ; C -1 ; WX 444 ; N cacute ; B 25 -14 430 713 ; C -1 ; WX 556 ; N nacute ; B 21 0 539 713 ; C -1 ; WX 556 ; N umacron ; B 16 -14 537 637 ; C -1 ; WX 722 ; N Ncaron ; B 16 -18 701 914 ; C -1 ; WX 389 ; N Iacute ; B 20 0 370 923 ; C -1 ; WX 570 ; N plusminus ; B 33 0 537 506 ; C -1 ; WX 220 ; N brokenbar ; B 66 -143 154 707 ; C -1 ; WX 747 ; N registered ; B 26 -19 721 691 ; C -1 ; WX 778 ; N Gbreve ; B 37 -19 755 901 ; C -1 ; WX 389 ; N Idotaccent ; B 20 0 370 901 ; C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 667 ; N Egrave ; B 16 0 641 923 ; C -1 ; WX 444 ; N racute ; B 29 0 434 713 ; C -1 ; WX 500 ; N omacron ; B 25 -14 476 637 ; C -1 ; WX 667 ; N Zacute ; B 28 0 634 923 ; C -1 ; WX 667 ; N Zcaron ; B 28 0 634 914 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 722 ; N Eth ; B 6 0 690 676 ; C -1 ; WX 722 ; N Ccedilla ; B 49 -218 687 691 ; C -1 ; WX 278 ; N lcommaaccent ; B 16 -218 255 676 ; C -1 ; WX 416 ; N tcaron ; B 20 -12 425 815 ; C -1 ; WX 444 ; N eogonek ; B 25 -193 426 473 ; C -1 ; WX 722 ; N Uogonek ; B 16 -193 701 676 ; C -1 ; WX 722 ; N Aacute ; B 9 0 689 923 ; C -1 ; WX 722 ; N Adieresis ; B 9 0 689 877 ; C -1 ; WX 444 ; N egrave ; B 25 -14 426 713 ; C -1 ; WX 444 ; N zacute ; B 21 0 420 713 ; C -1 ; WX 278 ; N iogonek ; B 16 -193 274 691 ; C -1 ; WX 778 ; N Oacute ; B 35 -19 743 923 ; C -1 ; WX 500 ; N oacute ; B 25 -14 476 713 ; C -1 ; WX 500 ; N amacron ; B 25 -14 488 637 ; C -1 ; WX 389 ; N sacute ; B 25 -14 361 713 ; C -1 ; WX 278 ; N idieresis ; B -37 0 300 667 ; C -1 ; WX 778 ; N Ocircumflex ; B 35 -19 743 914 ; C -1 ; WX 722 ; N Ugrave ; B 16 -19 701 923 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 556 ; N thorn ; B 19 -205 524 676 ; C -1 ; WX 300 ; N twosuperior ; B 0 275 300 688 ; C -1 ; WX 778 ; N Odieresis ; B 35 -19 743 877 ; C -1 ; WX 556 ; N mu ; B 33 -206 536 461 ; C -1 ; WX 278 ; N igrave ; B -27 0 255 713 ; C -1 ; WX 500 ; N ohungarumlaut ; B 25 -14 529 713 ; C -1 ; WX 667 ; N Eogonek ; B 16 -193 644 676 ; C -1 ; WX 556 ; N dcroat ; B 25 -14 534 676 ; C -1 ; WX 750 ; N threequarters ; B 23 -12 733 688 ; C -1 ; WX 556 ; N Scedilla ; B 35 -218 513 692 ; C -1 ; WX 394 ; N lcaron ; B 16 0 412 682 ; C -1 ; WX 778 ; N Kcommaaccent ; B 30 -218 769 676 ; C -1 ; WX 667 ; N Lacute ; B 19 0 638 923 ; C -1 ; WX 1000 ; N trademark ; B 24 271 977 676 ; C -1 ; WX 444 ; N edotaccent ; B 25 -14 426 691 ; C -1 ; WX 389 ; N Igrave ; B 20 0 370 923 ; C -1 ; WX 389 ; N Imacron ; B 20 0 370 847 ; C -1 ; WX 667 ; N Lcaron ; B 19 0 652 682 ; C -1 ; WX 750 ; N onehalf ; B -7 -12 775 688 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 500 ; N ocircumflex ; B 25 -14 476 704 ; C -1 ; WX 556 ; N ntilde ; B 21 0 539 674 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 16 -19 701 923 ; C -1 ; WX 667 ; N Eacute ; B 16 0 641 923 ; C -1 ; WX 444 ; N emacron ; B 25 -14 426 637 ; C -1 ; WX 500 ; N gbreve ; B 28 -206 483 691 ; C -1 ; WX 750 ; N onequarter ; B 28 -12 743 688 ; C -1 ; WX 556 ; N Scaron ; B 35 -19 513 914 ; C -1 ; WX 556 ; N Scommaaccent ; B 35 -218 513 692 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 35 -19 743 923 ; C -1 ; WX 400 ; N degree ; B 57 402 343 688 ; C -1 ; WX 500 ; N ograve ; B 25 -14 476 713 ; C -1 ; WX 722 ; N Ccaron ; B 49 -19 687 914 ; C -1 ; WX 556 ; N ugrave ; B 16 -14 537 713 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 722 ; N Dcaron ; B 14 0 690 914 ; C -1 ; WX 444 ; N rcommaaccent ; B 29 -218 434 473 ; C -1 ; WX 722 ; N Ntilde ; B 16 -18 701 884 ; C -1 ; WX 500 ; N otilde ; B 25 -14 476 674 ; C -1 ; WX 722 ; N Rcommaaccent ; B 26 -218 715 676 ; C -1 ; WX 667 ; N Lcommaaccent ; B 19 -218 638 676 ; C -1 ; WX 722 ; N Atilde ; B 9 0 689 884 ; C -1 ; WX 722 ; N Aogonek ; B 9 -193 699 690 ; C -1 ; WX 722 ; N Aring ; B 9 0 689 935 ; C -1 ; WX 778 ; N Otilde ; B 35 -19 743 884 ; C -1 ; WX 444 ; N zdotaccent ; B 21 0 420 691 ; C -1 ; WX 667 ; N Ecaron ; B 16 0 641 914 ; C -1 ; WX 389 ; N Iogonek ; B 20 -193 370 676 ; C -1 ; WX 556 ; N kcommaaccent ; B 22 -218 543 676 ; C -1 ; WX 570 ; N minus ; B 33 209 537 297 ; C -1 ; WX 389 ; N Icircumflex ; B 20 0 370 914 ; C -1 ; WX 556 ; N ncaron ; B 21 0 539 704 ; C -1 ; WX 333 ; N tcommaaccent ; B 20 -218 332 630 ; C -1 ; WX 570 ; N logicalnot ; B 33 108 537 399 ; C -1 ; WX 500 ; N odieresis ; B 25 -14 476 667 ; C -1 ; WX 556 ; N udieresis ; B 16 -14 537 667 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 500 ; N gcommaaccent ; B 28 -206 483 829 ; C -1 ; WX 500 ; N eth ; B 25 -14 476 691 ; C -1 ; WX 444 ; N zcaron ; B 21 0 420 704 ; C -1 ; WX 556 ; N ncommaaccent ; B 21 -218 539 473 ; C -1 ; WX 300 ; N onesuperior ; B 28 275 273 688 ; C -1 ; WX 278 ; N imacron ; B -8 0 272 637 ; C -1 ; WX 500 ; N Euro ; B 0 0 0 0 ; C -1 ; WX 722 ; N Ccircumflex ; B 49 -19 687 902 ; C -1 ; WX 444 ; N ccircumflex ; B 25 -14 430 687 ; C -1 ; WX 722 ; N Cdotaccent ; B 49 -19 687 855 ; C -1 ; WX 444 ; N cdotaccent ; B 25 -14 430 640 ; C -1 ; WX 667 ; N Ebreve ; B 16 0 641 889 ; C -1 ; WX 444 ; N ebreve ; B 25 -14 426 674 ; C -1 ; WX 778 ; N Gcircumflex ; B 37 -19 755 902 ; C -1 ; WX 500 ; N gcircumflex ; B 28 -206 483 687 ; C -1 ; WX 778 ; N Gdotaccent ; B 37 -19 755 855 ; C -1 ; WX 500 ; N gdotaccent ; B 28 -206 483 640 ; C -1 ; WX 778 ; N Hcircumflex ; B 16 0 754 902 ; C -1 ; WX 556 ; N hcircumflex ; B 2 0 534 902 ; C -1 ; WX 778 ; N Hbar ; B 21 0 759 676 ; C -1 ; WX 556 ; N hbar ; B 13 0 534 676 ; C -1 ; WX 389 ; N Itilde ; B 8 0 373 853 ; C -1 ; WX 278 ; N itilde ; B -47 0 318 638 ; C -1 ; WX 389 ; N Ibreve ; B 16 0 366 889 ; C -1 ; WX 278 ; N ibreve ; B -16 0 287 674 ; C -1 ; WX 882 ; N IJ ; B 16 -96 869 676 ; C -1 ; WX 486 ; N ij ; B 16 -203 463 691 ; C -1 ; WX 500 ; N Jcircumflex ; B 3 -96 479 902 ; C -1 ; WX 333 ; N jcircumflex ; B -56 -203 335 768 ; C -1 ; WX 534 ; N kgreenlandic ; B 22 0 514 470 ; C -1 ; WX 667 ; N Ldot ; B 16 0 635 676 ; C -1 ; WX 528 ; N ldot ; B 16 0 488 676 ; C -1 ; WX 704 ; N napostrophe ; B 21 0 687 582 ; C -1 ; WX 722 ; N Eng ; B 16 -228 701 676 ; C -1 ; WX 556 ; N eng ; B 21 -203 490 473 ; C -1 ; WX 778 ; N Obreve ; B 35 -19 743 889 ; C -1 ; WX 500 ; N obreve ; B 25 -14 476 674 ; C -1 ; WX 556 ; N Scircumflex ; B 35 -19 513 902 ; C -1 ; WX 389 ; N scircumflex ; B 24 -14 361 687 ; C -1 ; WX 667 ; N Tbar ; B 32 0 637 676 ; C -1 ; WX 333 ; N tbar ; B 13 -12 332 630 ; C -1 ; WX 667 ; N Tcedilla ; B 31 -218 636 676 ; C -1 ; WX 333 ; N tcedilla ; B 20 -218 332 630 ; C -1 ; WX 722 ; N Utilde ; B 16 -19 701 853 ; C -1 ; WX 556 ; N utilde ; B 16 -14 537 638 ; C -1 ; WX 722 ; N Ubreve ; B 16 -19 701 889 ; C -1 ; WX 556 ; N ubreve ; B 16 -14 537 674 ; C -1 ; WX 1000 ; N Wcircumflex ; B 19 -15 981 902 ; C -1 ; WX 722 ; N wcircumflex ; B 23 -14 707 687 ; C -1 ; WX 722 ; N Ycircumflex ; B 15 0 699 902 ; C -1 ; WX 500 ; N ycircumflex ; B 16 -205 480 687 ; C -1 ; WX 333 ; N longs ; B 14 0 389 691 ; C -1 ; WX 752 ; N infinity ; B 22 42 723 456 ; EndCharMetrics StartKernData StartKernPairs 2242 KPX A C -55 KPX A Cacute -55 KPX A Ccaron -55 KPX A Ccedilla -55 KPX A G -55 KPX A Gbreve -55 KPX A Gcommaaccent -55 KPX A O -45 KPX A Oacute -45 KPX A Ocircumflex -45 KPX A Odieresis -45 KPX A Ograve -45 KPX A Ohungarumlaut -45 KPX A Omacron -45 KPX A Oslash -45 KPX A Otilde -45 KPX A Q -45 KPX A T -95 KPX A Tcaron -95 KPX A Tcommaaccent -95 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -145 KPX A W -130 KPX A Y -100 KPX A Yacute -100 KPX A Ydieresis -100 KPX A p -25 KPX A quoteright -74 KPX A u -50 KPX A uacute -50 KPX A ucircumflex -50 KPX A udieresis -50 KPX A ugrave -50 KPX A uhungarumlaut -50 KPX A umacron -50 KPX A uogonek -50 KPX A uring -50 KPX A v -100 KPX A w -90 KPX A y -74 KPX A yacute -74 KPX A ydieresis -74 KPX Aacute C -55 KPX Aacute Cacute -55 KPX Aacute Ccaron -55 KPX Aacute Ccedilla -55 KPX Aacute G -55 KPX Aacute Gbreve -55 KPX Aacute Gcommaaccent -55 KPX Aacute O -45 KPX Aacute Oacute -45 KPX Aacute Ocircumflex -45 KPX Aacute Odieresis -45 KPX Aacute Ograve -45 KPX Aacute Ohungarumlaut -45 KPX Aacute Omacron -45 KPX Aacute Oslash -45 KPX Aacute Otilde -45 KPX Aacute Q -45 KPX Aacute T -95 KPX Aacute Tcaron -95 KPX Aacute Tcommaaccent -95 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -145 KPX Aacute W -130 KPX Aacute Y -100 KPX Aacute Yacute -100 KPX Aacute Ydieresis -100 KPX Aacute p -25 KPX Aacute quoteright -74 KPX Aacute u -50 KPX Aacute uacute -50 KPX Aacute ucircumflex -50 KPX Aacute udieresis -50 KPX Aacute ugrave -50 KPX Aacute uhungarumlaut -50 KPX Aacute umacron -50 KPX Aacute uogonek -50 KPX Aacute uring -50 KPX Aacute v -100 KPX Aacute w -90 KPX Aacute y -74 KPX Aacute yacute -74 KPX Aacute ydieresis -74 KPX Abreve C -55 KPX Abreve Cacute -55 KPX Abreve Ccaron -55 KPX Abreve Ccedilla -55 KPX Abreve G -55 KPX Abreve Gbreve -55 KPX Abreve Gcommaaccent -55 KPX Abreve O -45 KPX Abreve Oacute -45 KPX Abreve Ocircumflex -45 KPX Abreve Odieresis -45 KPX Abreve Ograve -45 KPX Abreve Ohungarumlaut -45 KPX Abreve Omacron -45 KPX Abreve Oslash -45 KPX Abreve Otilde -45 KPX Abreve Q -45 KPX Abreve T -95 KPX Abreve Tcaron -95 KPX Abreve Tcommaaccent -95 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -145 KPX Abreve W -130 KPX Abreve Y -100 KPX Abreve Yacute -100 KPX Abreve Ydieresis -100 KPX Abreve p -25 KPX Abreve quoteright -74 KPX Abreve u -50 KPX Abreve uacute -50 KPX Abreve ucircumflex -50 KPX Abreve udieresis -50 KPX Abreve ugrave -50 KPX Abreve uhungarumlaut -50 KPX Abreve umacron -50 KPX Abreve uogonek -50 KPX Abreve uring -50 KPX Abreve v -100 KPX Abreve w -90 KPX Abreve y -74 KPX Abreve yacute -74 KPX Abreve ydieresis -74 KPX Acircumflex C -55 KPX Acircumflex Cacute -55 KPX Acircumflex Ccaron -55 KPX Acircumflex Ccedilla -55 KPX Acircumflex G -55 KPX Acircumflex Gbreve -55 KPX Acircumflex Gcommaaccent -55 KPX Acircumflex O -45 KPX Acircumflex Oacute -45 KPX Acircumflex Ocircumflex -45 KPX Acircumflex Odieresis -45 KPX Acircumflex Ograve -45 KPX Acircumflex Ohungarumlaut -45 KPX Acircumflex Omacron -45 KPX Acircumflex Oslash -45 KPX Acircumflex Otilde -45 KPX Acircumflex Q -45 KPX Acircumflex T -95 KPX Acircumflex Tcaron -95 KPX Acircumflex Tcommaaccent -95 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -145 KPX Acircumflex W -130 KPX Acircumflex Y -100 KPX Acircumflex Yacute -100 KPX Acircumflex Ydieresis -100 KPX Acircumflex p -25 KPX Acircumflex quoteright -74 KPX Acircumflex u -50 KPX Acircumflex uacute -50 KPX Acircumflex ucircumflex -50 KPX Acircumflex udieresis -50 KPX Acircumflex ugrave -50 KPX Acircumflex uhungarumlaut -50 KPX Acircumflex umacron -50 KPX Acircumflex uogonek -50 KPX Acircumflex uring -50 KPX Acircumflex v -100 KPX Acircumflex w -90 KPX Acircumflex y -74 KPX Acircumflex yacute -74 KPX Acircumflex ydieresis -74 KPX Adieresis C -55 KPX Adieresis Cacute -55 KPX Adieresis Ccaron -55 KPX Adieresis Ccedilla -55 KPX Adieresis G -55 KPX Adieresis Gbreve -55 KPX Adieresis Gcommaaccent -55 KPX Adieresis O -45 KPX Adieresis Oacute -45 KPX Adieresis Ocircumflex -45 KPX Adieresis Odieresis -45 KPX Adieresis Ograve -45 KPX Adieresis Ohungarumlaut -45 KPX Adieresis Omacron -45 KPX Adieresis Oslash -45 KPX Adieresis Otilde -45 KPX Adieresis Q -45 KPX Adieresis T -95 KPX Adieresis Tcaron -95 KPX Adieresis Tcommaaccent -95 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -145 KPX Adieresis W -130 KPX Adieresis Y -100 KPX Adieresis Yacute -100 KPX Adieresis Ydieresis -100 KPX Adieresis p -25 KPX Adieresis quoteright -74 KPX Adieresis u -50 KPX Adieresis uacute -50 KPX Adieresis ucircumflex -50 KPX Adieresis udieresis -50 KPX Adieresis ugrave -50 KPX Adieresis uhungarumlaut -50 KPX Adieresis umacron -50 KPX Adieresis uogonek -50 KPX Adieresis uring -50 KPX Adieresis v -100 KPX Adieresis w -90 KPX Adieresis y -74 KPX Adieresis yacute -74 KPX Adieresis ydieresis -74 KPX Agrave C -55 KPX Agrave Cacute -55 KPX Agrave Ccaron -55 KPX Agrave Ccedilla -55 KPX Agrave G -55 KPX Agrave Gbreve -55 KPX Agrave Gcommaaccent -55 KPX Agrave O -45 KPX Agrave Oacute -45 KPX Agrave Ocircumflex -45 KPX Agrave Odieresis -45 KPX Agrave Ograve -45 KPX Agrave Ohungarumlaut -45 KPX Agrave Omacron -45 KPX Agrave Oslash -45 KPX Agrave Otilde -45 KPX Agrave Q -45 KPX Agrave T -95 KPX Agrave Tcaron -95 KPX Agrave Tcommaaccent -95 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -145 KPX Agrave W -130 KPX Agrave Y -100 KPX Agrave Yacute -100 KPX Agrave Ydieresis -100 KPX Agrave p -25 KPX Agrave quoteright -74 KPX Agrave u -50 KPX Agrave uacute -50 KPX Agrave ucircumflex -50 KPX Agrave udieresis -50 KPX Agrave ugrave -50 KPX Agrave uhungarumlaut -50 KPX Agrave umacron -50 KPX Agrave uogonek -50 KPX Agrave uring -50 KPX Agrave v -100 KPX Agrave w -90 KPX Agrave y -74 KPX Agrave yacute -74 KPX Agrave ydieresis -74 KPX Amacron C -55 KPX Amacron Cacute -55 KPX Amacron Ccaron -55 KPX Amacron Ccedilla -55 KPX Amacron G -55 KPX Amacron Gbreve -55 KPX Amacron Gcommaaccent -55 KPX Amacron O -45 KPX Amacron Oacute -45 KPX Amacron Ocircumflex -45 KPX Amacron Odieresis -45 KPX Amacron Ograve -45 KPX Amacron Ohungarumlaut -45 KPX Amacron Omacron -45 KPX Amacron Oslash -45 KPX Amacron Otilde -45 KPX Amacron Q -45 KPX Amacron T -95 KPX Amacron Tcaron -95 KPX Amacron Tcommaaccent -95 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -145 KPX Amacron W -130 KPX Amacron Y -100 KPX Amacron Yacute -100 KPX Amacron Ydieresis -100 KPX Amacron p -25 KPX Amacron quoteright -74 KPX Amacron u -50 KPX Amacron uacute -50 KPX Amacron ucircumflex -50 KPX Amacron udieresis -50 KPX Amacron ugrave -50 KPX Amacron uhungarumlaut -50 KPX Amacron umacron -50 KPX Amacron uogonek -50 KPX Amacron uring -50 KPX Amacron v -100 KPX Amacron w -90 KPX Amacron y -74 KPX Amacron yacute -74 KPX Amacron ydieresis -74 KPX Aogonek C -55 KPX Aogonek Cacute -55 KPX Aogonek Ccaron -55 KPX Aogonek Ccedilla -55 KPX Aogonek G -55 KPX Aogonek Gbreve -55 KPX Aogonek Gcommaaccent -55 KPX Aogonek O -45 KPX Aogonek Oacute -45 KPX Aogonek Ocircumflex -45 KPX Aogonek Odieresis -45 KPX Aogonek Ograve -45 KPX Aogonek Ohungarumlaut -45 KPX Aogonek Omacron -45 KPX Aogonek Oslash -45 KPX Aogonek Otilde -45 KPX Aogonek Q -45 KPX Aogonek T -95 KPX Aogonek Tcaron -95 KPX Aogonek Tcommaaccent -95 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -145 KPX Aogonek W -130 KPX Aogonek Y -100 KPX Aogonek Yacute -100 KPX Aogonek Ydieresis -100 KPX Aogonek p -25 KPX Aogonek quoteright -74 KPX Aogonek u -50 KPX Aogonek uacute -50 KPX Aogonek ucircumflex -50 KPX Aogonek udieresis -50 KPX Aogonek ugrave -50 KPX Aogonek uhungarumlaut -50 KPX Aogonek umacron -50 KPX Aogonek uogonek -50 KPX Aogonek uring -50 KPX Aogonek v -100 KPX Aogonek w -90 KPX Aogonek y -34 KPX Aogonek yacute -34 KPX Aogonek ydieresis -34 KPX Aring C -55 KPX Aring Cacute -55 KPX Aring Ccaron -55 KPX Aring Ccedilla -55 KPX Aring G -55 KPX Aring Gbreve -55 KPX Aring Gcommaaccent -55 KPX Aring O -45 KPX Aring Oacute -45 KPX Aring Ocircumflex -45 KPX Aring Odieresis -45 KPX Aring Ograve -45 KPX Aring Ohungarumlaut -45 KPX Aring Omacron -45 KPX Aring Oslash -45 KPX Aring Otilde -45 KPX Aring Q -45 KPX Aring T -95 KPX Aring Tcaron -95 KPX Aring Tcommaaccent -95 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -145 KPX Aring W -130 KPX Aring Y -100 KPX Aring Yacute -100 KPX Aring Ydieresis -100 KPX Aring p -25 KPX Aring quoteright -74 KPX Aring u -50 KPX Aring uacute -50 KPX Aring ucircumflex -50 KPX Aring udieresis -50 KPX Aring ugrave -50 KPX Aring uhungarumlaut -50 KPX Aring umacron -50 KPX Aring uogonek -50 KPX Aring uring -50 KPX Aring v -100 KPX Aring w -90 KPX Aring y -74 KPX Aring yacute -74 KPX Aring ydieresis -74 KPX Atilde C -55 KPX Atilde Cacute -55 KPX Atilde Ccaron -55 KPX Atilde Ccedilla -55 KPX Atilde G -55 KPX Atilde Gbreve -55 KPX Atilde Gcommaaccent -55 KPX Atilde O -45 KPX Atilde Oacute -45 KPX Atilde Ocircumflex -45 KPX Atilde Odieresis -45 KPX Atilde Ograve -45 KPX Atilde Ohungarumlaut -45 KPX Atilde Omacron -45 KPX Atilde Oslash -45 KPX Atilde Otilde -45 KPX Atilde Q -45 KPX Atilde T -95 KPX Atilde Tcaron -95 KPX Atilde Tcommaaccent -95 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -145 KPX Atilde W -130 KPX Atilde Y -100 KPX Atilde Yacute -100 KPX Atilde Ydieresis -100 KPX Atilde p -25 KPX Atilde quoteright -74 KPX Atilde u -50 KPX Atilde uacute -50 KPX Atilde ucircumflex -50 KPX Atilde udieresis -50 KPX Atilde ugrave -50 KPX Atilde uhungarumlaut -50 KPX Atilde umacron -50 KPX Atilde uogonek -50 KPX Atilde uring -50 KPX Atilde v -100 KPX Atilde w -90 KPX Atilde y -74 KPX Atilde yacute -74 KPX Atilde ydieresis -74 KPX B A -30 KPX B Aacute -30 KPX B Abreve -30 KPX B Acircumflex -30 KPX B Adieresis -30 KPX B Agrave -30 KPX B Amacron -30 KPX B Aogonek -30 KPX B Aring -30 KPX B Atilde -30 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -35 KPX D Aacute -35 KPX D Abreve -35 KPX D Acircumflex -35 KPX D Adieresis -35 KPX D Agrave -35 KPX D Amacron -35 KPX D Aogonek -35 KPX D Aring -35 KPX D Atilde -35 KPX D V -40 KPX D W -40 KPX D Y -40 KPX D Yacute -40 KPX D Ydieresis -40 KPX D period -20 KPX Dcaron A -35 KPX Dcaron Aacute -35 KPX Dcaron Abreve -35 KPX Dcaron Acircumflex -35 KPX Dcaron Adieresis -35 KPX Dcaron Agrave -35 KPX Dcaron Amacron -35 KPX Dcaron Aogonek -35 KPX Dcaron Aring -35 KPX Dcaron Atilde -35 KPX Dcaron V -40 KPX Dcaron W -40 KPX Dcaron Y -40 KPX Dcaron Yacute -40 KPX Dcaron Ydieresis -40 KPX Dcaron period -20 KPX Dcroat A -35 KPX Dcroat Aacute -35 KPX Dcroat Abreve -35 KPX Dcroat Acircumflex -35 KPX Dcroat Adieresis -35 KPX Dcroat Agrave -35 KPX Dcroat Amacron -35 KPX Dcroat Aogonek -35 KPX Dcroat Aring -35 KPX Dcroat Atilde -35 KPX Dcroat V -40 KPX Dcroat W -40 KPX Dcroat Y -40 KPX Dcroat Yacute -40 KPX Dcroat Ydieresis -40 KPX Dcroat period -20 KPX F A -90 KPX F Aacute -90 KPX F Abreve -90 KPX F Acircumflex -90 KPX F Adieresis -90 KPX F Agrave -90 KPX F Amacron -90 KPX F Aogonek -90 KPX F Aring -90 KPX F Atilde -90 KPX F a -25 KPX F aacute -25 KPX F abreve -25 KPX F acircumflex -25 KPX F adieresis -25 KPX F agrave -25 KPX F amacron -25 KPX F aogonek -25 KPX F aring -25 KPX F atilde -25 KPX F comma -92 KPX F e -25 KPX F eacute -25 KPX F ecaron -25 KPX F ecircumflex -25 KPX F edieresis -25 KPX F edotaccent -25 KPX F egrave -25 KPX F emacron -25 KPX F eogonek -25 KPX F o -25 KPX F oacute -25 KPX F ocircumflex -25 KPX F odieresis -25 KPX F ograve -25 KPX F ohungarumlaut -25 KPX F omacron -25 KPX F oslash -25 KPX F otilde -25 KPX F period -110 KPX J A -30 KPX J Aacute -30 KPX J Abreve -30 KPX J Acircumflex -30 KPX J Adieresis -30 KPX J Agrave -30 KPX J Amacron -30 KPX J Aogonek -30 KPX J Aring -30 KPX J Atilde -30 KPX J a -15 KPX J aacute -15 KPX J abreve -15 KPX J acircumflex -15 KPX J adieresis -15 KPX J agrave -15 KPX J amacron -15 KPX J aogonek -15 KPX J aring -15 KPX J atilde -15 KPX J e -15 KPX J eacute -15 KPX J ecaron -15 KPX J ecircumflex -15 KPX J edieresis -15 KPX J edotaccent -15 KPX J egrave -15 KPX J emacron -15 KPX J eogonek -15 KPX J o -15 KPX J oacute -15 KPX J ocircumflex -15 KPX J odieresis -15 KPX J ograve -15 KPX J ohungarumlaut -15 KPX J omacron -15 KPX J oslash -15 KPX J otilde -15 KPX J period -20 KPX J u -15 KPX J uacute -15 KPX J ucircumflex -15 KPX J udieresis -15 KPX J ugrave -15 KPX J uhungarumlaut -15 KPX J umacron -15 KPX J uogonek -15 KPX J uring -15 KPX K O -30 KPX K Oacute -30 KPX K Ocircumflex -30 KPX K Odieresis -30 KPX K Ograve -30 KPX K Ohungarumlaut -30 KPX K Omacron -30 KPX K Oslash -30 KPX K Otilde -30 KPX K e -25 KPX K eacute -25 KPX K ecaron -25 KPX K ecircumflex -25 KPX K edieresis -25 KPX K edotaccent -25 KPX K egrave -25 KPX K emacron -25 KPX K eogonek -25 KPX K o -25 KPX K oacute -25 KPX K ocircumflex -25 KPX K odieresis -25 KPX K ograve -25 KPX K ohungarumlaut -25 KPX K omacron -25 KPX K oslash -25 KPX K otilde -25 KPX K u -15 KPX K uacute -15 KPX K ucircumflex -15 KPX K udieresis -15 KPX K ugrave -15 KPX K uhungarumlaut -15 KPX K umacron -15 KPX K uogonek -15 KPX K uring -15 KPX K y -45 KPX K yacute -45 KPX K ydieresis -45 KPX Kcommaaccent O -30 KPX Kcommaaccent Oacute -30 KPX Kcommaaccent Ocircumflex -30 KPX Kcommaaccent Odieresis -30 KPX Kcommaaccent Ograve -30 KPX Kcommaaccent Ohungarumlaut -30 KPX Kcommaaccent Omacron -30 KPX Kcommaaccent Oslash -30 KPX Kcommaaccent Otilde -30 KPX Kcommaaccent e -25 KPX Kcommaaccent eacute -25 KPX Kcommaaccent ecaron -25 KPX Kcommaaccent ecircumflex -25 KPX Kcommaaccent edieresis -25 KPX Kcommaaccent edotaccent -25 KPX Kcommaaccent egrave -25 KPX Kcommaaccent emacron -25 KPX Kcommaaccent eogonek -25 KPX Kcommaaccent o -25 KPX Kcommaaccent oacute -25 KPX Kcommaaccent ocircumflex -25 KPX Kcommaaccent odieresis -25 KPX Kcommaaccent ograve -25 KPX Kcommaaccent ohungarumlaut -25 KPX Kcommaaccent omacron -25 KPX Kcommaaccent oslash -25 KPX Kcommaaccent otilde -25 KPX Kcommaaccent u -15 KPX Kcommaaccent uacute -15 KPX Kcommaaccent ucircumflex -15 KPX Kcommaaccent udieresis -15 KPX Kcommaaccent ugrave -15 KPX Kcommaaccent uhungarumlaut -15 KPX Kcommaaccent umacron -15 KPX Kcommaaccent uogonek -15 KPX Kcommaaccent uring -15 KPX Kcommaaccent y -45 KPX Kcommaaccent yacute -45 KPX Kcommaaccent ydieresis -45 KPX L T -92 KPX L Tcaron -92 KPX L Tcommaaccent -92 KPX L V -92 KPX L W -92 KPX L Y -92 KPX L Yacute -92 KPX L Ydieresis -92 KPX L quotedblright -20 KPX L quoteright -110 KPX L y -55 KPX L yacute -55 KPX L ydieresis -55 KPX Lacute T -92 KPX Lacute Tcaron -92 KPX Lacute Tcommaaccent -92 KPX Lacute V -92 KPX Lacute W -92 KPX Lacute Y -92 KPX Lacute Yacute -92 KPX Lacute Ydieresis -92 KPX Lacute quotedblright -20 KPX Lacute quoteright -110 KPX Lacute y -55 KPX Lacute yacute -55 KPX Lacute ydieresis -55 KPX Lcommaaccent T -92 KPX Lcommaaccent Tcaron -92 KPX Lcommaaccent Tcommaaccent -92 KPX Lcommaaccent V -92 KPX Lcommaaccent W -92 KPX Lcommaaccent Y -92 KPX Lcommaaccent Yacute -92 KPX Lcommaaccent Ydieresis -92 KPX Lcommaaccent quotedblright -20 KPX Lcommaaccent quoteright -110 KPX Lcommaaccent y -55 KPX Lcommaaccent yacute -55 KPX Lcommaaccent ydieresis -55 KPX Lslash T -92 KPX Lslash Tcaron -92 KPX Lslash Tcommaaccent -92 KPX Lslash V -92 KPX Lslash W -92 KPX Lslash Y -92 KPX Lslash Yacute -92 KPX Lslash Ydieresis -92 KPX Lslash quotedblright -20 KPX Lslash quoteright -110 KPX Lslash y -55 KPX Lslash yacute -55 KPX Lslash ydieresis -55 KPX N A -20 KPX N Aacute -20 KPX N Abreve -20 KPX N Acircumflex -20 KPX N Adieresis -20 KPX N Agrave -20 KPX N Amacron -20 KPX N Aogonek -20 KPX N Aring -20 KPX N Atilde -20 KPX Nacute A -20 KPX Nacute Aacute -20 KPX Nacute Abreve -20 KPX Nacute Acircumflex -20 KPX Nacute Adieresis -20 KPX Nacute Agrave -20 KPX Nacute Amacron -20 KPX Nacute Aogonek -20 KPX Nacute Aring -20 KPX Nacute Atilde -20 KPX Ncaron A -20 KPX Ncaron Aacute -20 KPX Ncaron Abreve -20 KPX Ncaron Acircumflex -20 KPX Ncaron Adieresis -20 KPX Ncaron Agrave -20 KPX Ncaron Amacron -20 KPX Ncaron Aogonek -20 KPX Ncaron Aring -20 KPX Ncaron Atilde -20 KPX Ncommaaccent A -20 KPX Ncommaaccent Aacute -20 KPX Ncommaaccent Abreve -20 KPX Ncommaaccent Acircumflex -20 KPX Ncommaaccent Adieresis -20 KPX Ncommaaccent Agrave -20 KPX Ncommaaccent Amacron -20 KPX Ncommaaccent Aogonek -20 KPX Ncommaaccent Aring -20 KPX Ncommaaccent Atilde -20 KPX Ntilde A -20 KPX Ntilde Aacute -20 KPX Ntilde Abreve -20 KPX Ntilde Acircumflex -20 KPX Ntilde Adieresis -20 KPX Ntilde Agrave -20 KPX Ntilde Amacron -20 KPX Ntilde Aogonek -20 KPX Ntilde Aring -20 KPX Ntilde Atilde -20 KPX O A -40 KPX O Aacute -40 KPX O Abreve -40 KPX O Acircumflex -40 KPX O Adieresis -40 KPX O Agrave -40 KPX O Amacron -40 KPX O Aogonek -40 KPX O Aring -40 KPX O Atilde -40 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -50 KPX O X -40 KPX O Y -50 KPX O Yacute -50 KPX O Ydieresis -50 KPX Oacute A -40 KPX Oacute Aacute -40 KPX Oacute Abreve -40 KPX Oacute Acircumflex -40 KPX Oacute Adieresis -40 KPX Oacute Agrave -40 KPX Oacute Amacron -40 KPX Oacute Aogonek -40 KPX Oacute Aring -40 KPX Oacute Atilde -40 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -50 KPX Oacute X -40 KPX Oacute Y -50 KPX Oacute Yacute -50 KPX Oacute Ydieresis -50 KPX Ocircumflex A -40 KPX Ocircumflex Aacute -40 KPX Ocircumflex Abreve -40 KPX Ocircumflex Acircumflex -40 KPX Ocircumflex Adieresis -40 KPX Ocircumflex Agrave -40 KPX Ocircumflex Amacron -40 KPX Ocircumflex Aogonek -40 KPX Ocircumflex Aring -40 KPX Ocircumflex Atilde -40 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -50 KPX Ocircumflex X -40 KPX Ocircumflex Y -50 KPX Ocircumflex Yacute -50 KPX Ocircumflex Ydieresis -50 KPX Odieresis A -40 KPX Odieresis Aacute -40 KPX Odieresis Abreve -40 KPX Odieresis Acircumflex -40 KPX Odieresis Adieresis -40 KPX Odieresis Agrave -40 KPX Odieresis Amacron -40 KPX Odieresis Aogonek -40 KPX Odieresis Aring -40 KPX Odieresis Atilde -40 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -50 KPX Odieresis X -40 KPX Odieresis Y -50 KPX Odieresis Yacute -50 KPX Odieresis Ydieresis -50 KPX Ograve A -40 KPX Ograve Aacute -40 KPX Ograve Abreve -40 KPX Ograve Acircumflex -40 KPX Ograve Adieresis -40 KPX Ograve Agrave -40 KPX Ograve Amacron -40 KPX Ograve Aogonek -40 KPX Ograve Aring -40 KPX Ograve Atilde -40 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -50 KPX Ograve X -40 KPX Ograve Y -50 KPX Ograve Yacute -50 KPX Ograve Ydieresis -50 KPX Ohungarumlaut A -40 KPX Ohungarumlaut Aacute -40 KPX Ohungarumlaut Abreve -40 KPX Ohungarumlaut Acircumflex -40 KPX Ohungarumlaut Adieresis -40 KPX Ohungarumlaut Agrave -40 KPX Ohungarumlaut Amacron -40 KPX Ohungarumlaut Aogonek -40 KPX Ohungarumlaut Aring -40 KPX Ohungarumlaut Atilde -40 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -50 KPX Ohungarumlaut X -40 KPX Ohungarumlaut Y -50 KPX Ohungarumlaut Yacute -50 KPX Ohungarumlaut Ydieresis -50 KPX Omacron A -40 KPX Omacron Aacute -40 KPX Omacron Abreve -40 KPX Omacron Acircumflex -40 KPX Omacron Adieresis -40 KPX Omacron Agrave -40 KPX Omacron Amacron -40 KPX Omacron Aogonek -40 KPX Omacron Aring -40 KPX Omacron Atilde -40 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -50 KPX Omacron X -40 KPX Omacron Y -50 KPX Omacron Yacute -50 KPX Omacron Ydieresis -50 KPX Oslash A -40 KPX Oslash Aacute -40 KPX Oslash Abreve -40 KPX Oslash Acircumflex -40 KPX Oslash Adieresis -40 KPX Oslash Agrave -40 KPX Oslash Amacron -40 KPX Oslash Aogonek -40 KPX Oslash Aring -40 KPX Oslash Atilde -40 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -50 KPX Oslash X -40 KPX Oslash Y -50 KPX Oslash Yacute -50 KPX Oslash Ydieresis -50 KPX Otilde A -40 KPX Otilde Aacute -40 KPX Otilde Abreve -40 KPX Otilde Acircumflex -40 KPX Otilde Adieresis -40 KPX Otilde Agrave -40 KPX Otilde Amacron -40 KPX Otilde Aogonek -40 KPX Otilde Aring -40 KPX Otilde Atilde -40 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -50 KPX Otilde X -40 KPX Otilde Y -50 KPX Otilde Yacute -50 KPX Otilde Ydieresis -50 KPX P A -74 KPX P Aacute -74 KPX P Abreve -74 KPX P Acircumflex -74 KPX P Adieresis -74 KPX P Agrave -74 KPX P Amacron -74 KPX P Aogonek -74 KPX P Aring -74 KPX P Atilde -74 KPX P a -10 KPX P aacute -10 KPX P abreve -10 KPX P acircumflex -10 KPX P adieresis -10 KPX P agrave -10 KPX P amacron -10 KPX P aogonek -10 KPX P aring -10 KPX P atilde -10 KPX P comma -92 KPX P e -20 KPX P eacute -20 KPX P ecaron -20 KPX P ecircumflex -20 KPX P edieresis -20 KPX P edotaccent -20 KPX P egrave -20 KPX P emacron -20 KPX P eogonek -20 KPX P o -20 KPX P oacute -20 KPX P ocircumflex -20 KPX P odieresis -20 KPX P ograve -20 KPX P ohungarumlaut -20 KPX P omacron -20 KPX P oslash -20 KPX P otilde -20 KPX P period -110 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX Q period -20 KPX R O -30 KPX R Oacute -30 KPX R Ocircumflex -30 KPX R Odieresis -30 KPX R Ograve -30 KPX R Ohungarumlaut -30 KPX R Omacron -30 KPX R Oslash -30 KPX R Otilde -30 KPX R T -40 KPX R Tcaron -40 KPX R Tcommaaccent -40 KPX R U -30 KPX R Uacute -30 KPX R Ucircumflex -30 KPX R Udieresis -30 KPX R Ugrave -30 KPX R Uhungarumlaut -30 KPX R Umacron -30 KPX R Uogonek -30 KPX R Uring -30 KPX R V -55 KPX R W -35 KPX R Y -35 KPX R Yacute -35 KPX R Ydieresis -35 KPX Racute O -30 KPX Racute Oacute -30 KPX Racute Ocircumflex -30 KPX Racute Odieresis -30 KPX Racute Ograve -30 KPX Racute Ohungarumlaut -30 KPX Racute Omacron -30 KPX Racute Oslash -30 KPX Racute Otilde -30 KPX Racute T -40 KPX Racute Tcaron -40 KPX Racute Tcommaaccent -40 KPX Racute U -30 KPX Racute Uacute -30 KPX Racute Ucircumflex -30 KPX Racute Udieresis -30 KPX Racute Ugrave -30 KPX Racute Uhungarumlaut -30 KPX Racute Umacron -30 KPX Racute Uogonek -30 KPX Racute Uring -30 KPX Racute V -55 KPX Racute W -35 KPX Racute Y -35 KPX Racute Yacute -35 KPX Racute Ydieresis -35 KPX Rcaron O -30 KPX Rcaron Oacute -30 KPX Rcaron Ocircumflex -30 KPX Rcaron Odieresis -30 KPX Rcaron Ograve -30 KPX Rcaron Ohungarumlaut -30 KPX Rcaron Omacron -30 KPX Rcaron Oslash -30 KPX Rcaron Otilde -30 KPX Rcaron T -40 KPX Rcaron Tcaron -40 KPX Rcaron Tcommaaccent -40 KPX Rcaron U -30 KPX Rcaron Uacute -30 KPX Rcaron Ucircumflex -30 KPX Rcaron Udieresis -30 KPX Rcaron Ugrave -30 KPX Rcaron Uhungarumlaut -30 KPX Rcaron Umacron -30 KPX Rcaron Uogonek -30 KPX Rcaron Uring -30 KPX Rcaron V -55 KPX Rcaron W -35 KPX Rcaron Y -35 KPX Rcaron Yacute -35 KPX Rcaron Ydieresis -35 KPX Rcommaaccent O -30 KPX Rcommaaccent Oacute -30 KPX Rcommaaccent Ocircumflex -30 KPX Rcommaaccent Odieresis -30 KPX Rcommaaccent Ograve -30 KPX Rcommaaccent Ohungarumlaut -30 KPX Rcommaaccent Omacron -30 KPX Rcommaaccent Oslash -30 KPX Rcommaaccent Otilde -30 KPX Rcommaaccent T -40 KPX Rcommaaccent Tcaron -40 KPX Rcommaaccent Tcommaaccent -40 KPX Rcommaaccent U -30 KPX Rcommaaccent Uacute -30 KPX Rcommaaccent Ucircumflex -30 KPX Rcommaaccent Udieresis -30 KPX Rcommaaccent Ugrave -30 KPX Rcommaaccent Uhungarumlaut -30 KPX Rcommaaccent Umacron -30 KPX Rcommaaccent Uogonek -30 KPX Rcommaaccent Uring -30 KPX Rcommaaccent V -55 KPX Rcommaaccent W -35 KPX Rcommaaccent Y -35 KPX Rcommaaccent Yacute -35 KPX Rcommaaccent Ydieresis -35 KPX T A -90 KPX T Aacute -90 KPX T Abreve -90 KPX T Acircumflex -90 KPX T Adieresis -90 KPX T Agrave -90 KPX T Amacron -90 KPX T Aogonek -90 KPX T Aring -90 KPX T Atilde -90 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -92 KPX T aacute -92 KPX T abreve -52 KPX T acircumflex -52 KPX T adieresis -52 KPX T agrave -52 KPX T amacron -52 KPX T aogonek -92 KPX T aring -92 KPX T atilde -52 KPX T colon -74 KPX T comma -74 KPX T e -92 KPX T eacute -92 KPX T ecaron -92 KPX T ecircumflex -92 KPX T edieresis -52 KPX T edotaccent -92 KPX T egrave -52 KPX T emacron -52 KPX T eogonek -92 KPX T hyphen -92 KPX T i -18 KPX T iacute -18 KPX T iogonek -18 KPX T o -92 KPX T oacute -92 KPX T ocircumflex -92 KPX T odieresis -92 KPX T ograve -92 KPX T ohungarumlaut -92 KPX T omacron -92 KPX T oslash -92 KPX T otilde -92 KPX T period -90 KPX T r -74 KPX T racute -74 KPX T rcaron -74 KPX T rcommaaccent -74 KPX T semicolon -74 KPX T u -92 KPX T uacute -92 KPX T ucircumflex -92 KPX T udieresis -92 KPX T ugrave -92 KPX T uhungarumlaut -92 KPX T umacron -92 KPX T uogonek -92 KPX T uring -92 KPX T w -74 KPX T y -34 KPX T yacute -34 KPX T ydieresis -34 KPX Tcaron A -90 KPX Tcaron Aacute -90 KPX Tcaron Abreve -90 KPX Tcaron Acircumflex -90 KPX Tcaron Adieresis -90 KPX Tcaron Agrave -90 KPX Tcaron Amacron -90 KPX Tcaron Aogonek -90 KPX Tcaron Aring -90 KPX Tcaron Atilde -90 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -92 KPX Tcaron aacute -92 KPX Tcaron abreve -52 KPX Tcaron acircumflex -52 KPX Tcaron adieresis -52 KPX Tcaron agrave -52 KPX Tcaron amacron -52 KPX Tcaron aogonek -92 KPX Tcaron aring -92 KPX Tcaron atilde -52 KPX Tcaron colon -74 KPX Tcaron comma -74 KPX Tcaron e -92 KPX Tcaron eacute -92 KPX Tcaron ecaron -92 KPX Tcaron ecircumflex -92 KPX Tcaron edieresis -52 KPX Tcaron edotaccent -92 KPX Tcaron egrave -52 KPX Tcaron emacron -52 KPX Tcaron eogonek -92 KPX Tcaron hyphen -92 KPX Tcaron i -18 KPX Tcaron iacute -18 KPX Tcaron iogonek -18 KPX Tcaron o -92 KPX Tcaron oacute -92 KPX Tcaron ocircumflex -92 KPX Tcaron odieresis -92 KPX Tcaron ograve -92 KPX Tcaron ohungarumlaut -92 KPX Tcaron omacron -92 KPX Tcaron oslash -92 KPX Tcaron otilde -92 KPX Tcaron period -90 KPX Tcaron r -74 KPX Tcaron racute -74 KPX Tcaron rcaron -74 KPX Tcaron rcommaaccent -74 KPX Tcaron semicolon -74 KPX Tcaron u -92 KPX Tcaron uacute -92 KPX Tcaron ucircumflex -92 KPX Tcaron udieresis -92 KPX Tcaron ugrave -92 KPX Tcaron uhungarumlaut -92 KPX Tcaron umacron -92 KPX Tcaron uogonek -92 KPX Tcaron uring -92 KPX Tcaron w -74 KPX Tcaron y -34 KPX Tcaron yacute -34 KPX Tcaron ydieresis -34 KPX Tcommaaccent A -90 KPX Tcommaaccent Aacute -90 KPX Tcommaaccent Abreve -90 KPX Tcommaaccent Acircumflex -90 KPX Tcommaaccent Adieresis -90 KPX Tcommaaccent Agrave -90 KPX Tcommaaccent Amacron -90 KPX Tcommaaccent Aogonek -90 KPX Tcommaaccent Aring -90 KPX Tcommaaccent Atilde -90 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -92 KPX Tcommaaccent aacute -92 KPX Tcommaaccent abreve -52 KPX Tcommaaccent acircumflex -52 KPX Tcommaaccent adieresis -52 KPX Tcommaaccent agrave -52 KPX Tcommaaccent amacron -52 KPX Tcommaaccent aogonek -92 KPX Tcommaaccent aring -92 KPX Tcommaaccent atilde -52 KPX Tcommaaccent colon -74 KPX Tcommaaccent comma -74 KPX Tcommaaccent e -92 KPX Tcommaaccent eacute -92 KPX Tcommaaccent ecaron -92 KPX Tcommaaccent ecircumflex -92 KPX Tcommaaccent edieresis -52 KPX Tcommaaccent edotaccent -92 KPX Tcommaaccent egrave -52 KPX Tcommaaccent emacron -52 KPX Tcommaaccent eogonek -92 KPX Tcommaaccent hyphen -92 KPX Tcommaaccent i -18 KPX Tcommaaccent iacute -18 KPX Tcommaaccent iogonek -18 KPX Tcommaaccent o -92 KPX Tcommaaccent oacute -92 KPX Tcommaaccent ocircumflex -92 KPX Tcommaaccent odieresis -92 KPX Tcommaaccent ograve -92 KPX Tcommaaccent ohungarumlaut -92 KPX Tcommaaccent omacron -92 KPX Tcommaaccent oslash -92 KPX Tcommaaccent otilde -92 KPX Tcommaaccent period -90 KPX Tcommaaccent r -74 KPX Tcommaaccent racute -74 KPX Tcommaaccent rcaron -74 KPX Tcommaaccent rcommaaccent -74 KPX Tcommaaccent semicolon -74 KPX Tcommaaccent u -92 KPX Tcommaaccent uacute -92 KPX Tcommaaccent ucircumflex -92 KPX Tcommaaccent udieresis -92 KPX Tcommaaccent ugrave -92 KPX Tcommaaccent uhungarumlaut -92 KPX Tcommaaccent umacron -92 KPX Tcommaaccent uogonek -92 KPX Tcommaaccent uring -92 KPX Tcommaaccent w -74 KPX Tcommaaccent y -34 KPX Tcommaaccent yacute -34 KPX Tcommaaccent ydieresis -34 KPX U A -60 KPX U Aacute -60 KPX U Abreve -60 KPX U Acircumflex -60 KPX U Adieresis -60 KPX U Agrave -60 KPX U Amacron -60 KPX U Aogonek -60 KPX U Aring -60 KPX U Atilde -60 KPX U comma -50 KPX U period -50 KPX Uacute A -60 KPX Uacute Aacute -60 KPX Uacute Abreve -60 KPX Uacute Acircumflex -60 KPX Uacute Adieresis -60 KPX Uacute Agrave -60 KPX Uacute Amacron -60 KPX Uacute Aogonek -60 KPX Uacute Aring -60 KPX Uacute Atilde -60 KPX Uacute comma -50 KPX Uacute period -50 KPX Ucircumflex A -60 KPX Ucircumflex Aacute -60 KPX Ucircumflex Abreve -60 KPX Ucircumflex Acircumflex -60 KPX Ucircumflex Adieresis -60 KPX Ucircumflex Agrave -60 KPX Ucircumflex Amacron -60 KPX Ucircumflex Aogonek -60 KPX Ucircumflex Aring -60 KPX Ucircumflex Atilde -60 KPX Ucircumflex comma -50 KPX Ucircumflex period -50 KPX Udieresis A -60 KPX Udieresis Aacute -60 KPX Udieresis Abreve -60 KPX Udieresis Acircumflex -60 KPX Udieresis Adieresis -60 KPX Udieresis Agrave -60 KPX Udieresis Amacron -60 KPX Udieresis Aogonek -60 KPX Udieresis Aring -60 KPX Udieresis Atilde -60 KPX Udieresis comma -50 KPX Udieresis period -50 KPX Ugrave A -60 KPX Ugrave Aacute -60 KPX Ugrave Abreve -60 KPX Ugrave Acircumflex -60 KPX Ugrave Adieresis -60 KPX Ugrave Agrave -60 KPX Ugrave Amacron -60 KPX Ugrave Aogonek -60 KPX Ugrave Aring -60 KPX Ugrave Atilde -60 KPX Ugrave comma -50 KPX Ugrave period -50 KPX Uhungarumlaut A -60 KPX Uhungarumlaut Aacute -60 KPX Uhungarumlaut Abreve -60 KPX Uhungarumlaut Acircumflex -60 KPX Uhungarumlaut Adieresis -60 KPX Uhungarumlaut Agrave -60 KPX Uhungarumlaut Amacron -60 KPX Uhungarumlaut Aogonek -60 KPX Uhungarumlaut Aring -60 KPX Uhungarumlaut Atilde -60 KPX Uhungarumlaut comma -50 KPX Uhungarumlaut period -50 KPX Umacron A -60 KPX Umacron Aacute -60 KPX Umacron Abreve -60 KPX Umacron Acircumflex -60 KPX Umacron Adieresis -60 KPX Umacron Agrave -60 KPX Umacron Amacron -60 KPX Umacron Aogonek -60 KPX Umacron Aring -60 KPX Umacron Atilde -60 KPX Umacron comma -50 KPX Umacron period -50 KPX Uogonek A -60 KPX Uogonek Aacute -60 KPX Uogonek Abreve -60 KPX Uogonek Acircumflex -60 KPX Uogonek Adieresis -60 KPX Uogonek Agrave -60 KPX Uogonek Amacron -60 KPX Uogonek Aogonek -60 KPX Uogonek Aring -60 KPX Uogonek Atilde -60 KPX Uogonek comma -50 KPX Uogonek period -50 KPX Uring A -60 KPX Uring Aacute -60 KPX Uring Abreve -60 KPX Uring Acircumflex -60 KPX Uring Adieresis -60 KPX Uring Agrave -60 KPX Uring Amacron -60 KPX Uring Aogonek -60 KPX Uring Aring -60 KPX Uring Atilde -60 KPX Uring comma -50 KPX Uring period -50 KPX V A -135 KPX V Aacute -135 KPX V Abreve -135 KPX V Acircumflex -135 KPX V Adieresis -135 KPX V Agrave -135 KPX V Amacron -135 KPX V Aogonek -135 KPX V Aring -135 KPX V Atilde -135 KPX V G -30 KPX V Gbreve -30 KPX V Gcommaaccent -30 KPX V O -45 KPX V Oacute -45 KPX V Ocircumflex -45 KPX V Odieresis -45 KPX V Ograve -45 KPX V Ohungarumlaut -45 KPX V Omacron -45 KPX V Oslash -45 KPX V Otilde -45 KPX V a -92 KPX V aacute -92 KPX V abreve -92 KPX V acircumflex -92 KPX V adieresis -92 KPX V agrave -92 KPX V amacron -92 KPX V aogonek -92 KPX V aring -92 KPX V atilde -92 KPX V colon -92 KPX V comma -129 KPX V e -100 KPX V eacute -100 KPX V ecaron -100 KPX V ecircumflex -100 KPX V edieresis -100 KPX V edotaccent -100 KPX V egrave -100 KPX V emacron -100 KPX V eogonek -100 KPX V hyphen -74 KPX V i -37 KPX V iacute -37 KPX V icircumflex -37 KPX V idieresis -37 KPX V igrave -37 KPX V imacron -37 KPX V iogonek -37 KPX V o -100 KPX V oacute -100 KPX V ocircumflex -100 KPX V odieresis -100 KPX V ograve -100 KPX V ohungarumlaut -100 KPX V omacron -100 KPX V oslash -100 KPX V otilde -100 KPX V period -145 KPX V semicolon -92 KPX V u -92 KPX V uacute -92 KPX V ucircumflex -92 KPX V udieresis -92 KPX V ugrave -92 KPX V uhungarumlaut -92 KPX V umacron -92 KPX V uogonek -92 KPX V uring -92 KPX W A -120 KPX W Aacute -120 KPX W Abreve -120 KPX W Acircumflex -120 KPX W Adieresis -120 KPX W Agrave -120 KPX W Amacron -120 KPX W Aogonek -120 KPX W Aring -120 KPX W Atilde -120 KPX W O -10 KPX W Oacute -10 KPX W Ocircumflex -10 KPX W Odieresis -10 KPX W Ograve -10 KPX W Ohungarumlaut -10 KPX W Omacron -10 KPX W Oslash -10 KPX W Otilde -10 KPX W a -65 KPX W aacute -65 KPX W abreve -65 KPX W acircumflex -65 KPX W adieresis -65 KPX W agrave -65 KPX W amacron -65 KPX W aogonek -65 KPX W aring -65 KPX W atilde -65 KPX W colon -55 KPX W comma -92 KPX W e -65 KPX W eacute -65 KPX W ecaron -65 KPX W ecircumflex -65 KPX W edieresis -65 KPX W edotaccent -65 KPX W egrave -65 KPX W emacron -65 KPX W eogonek -65 KPX W hyphen -37 KPX W i -18 KPX W iacute -18 KPX W iogonek -18 KPX W o -75 KPX W oacute -75 KPX W ocircumflex -75 KPX W odieresis -75 KPX W ograve -75 KPX W ohungarumlaut -75 KPX W omacron -75 KPX W oslash -75 KPX W otilde -75 KPX W period -92 KPX W semicolon -55 KPX W u -50 KPX W uacute -50 KPX W ucircumflex -50 KPX W udieresis -50 KPX W ugrave -50 KPX W uhungarumlaut -50 KPX W umacron -50 KPX W uogonek -50 KPX W uring -50 KPX W y -60 KPX W yacute -60 KPX W ydieresis -60 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -35 KPX Y Oacute -35 KPX Y Ocircumflex -35 KPX Y Odieresis -35 KPX Y Ograve -35 KPX Y Ohungarumlaut -35 KPX Y Omacron -35 KPX Y Oslash -35 KPX Y Otilde -35 KPX Y a -85 KPX Y aacute -85 KPX Y abreve -85 KPX Y acircumflex -85 KPX Y adieresis -85 KPX Y agrave -85 KPX Y amacron -85 KPX Y aogonek -85 KPX Y aring -85 KPX Y atilde -85 KPX Y colon -92 KPX Y comma -92 KPX Y e -111 KPX Y eacute -111 KPX Y ecaron -111 KPX Y ecircumflex -111 KPX Y edieresis -71 KPX Y edotaccent -111 KPX Y egrave -71 KPX Y emacron -71 KPX Y eogonek -111 KPX Y hyphen -92 KPX Y i -37 KPX Y iacute -37 KPX Y iogonek -37 KPX Y o -111 KPX Y oacute -111 KPX Y ocircumflex -111 KPX Y odieresis -111 KPX Y ograve -111 KPX Y ohungarumlaut -111 KPX Y omacron -111 KPX Y oslash -111 KPX Y otilde -111 KPX Y period -92 KPX Y semicolon -92 KPX Y u -92 KPX Y uacute -92 KPX Y ucircumflex -92 KPX Y udieresis -92 KPX Y ugrave -92 KPX Y uhungarumlaut -92 KPX Y umacron -92 KPX Y uogonek -92 KPX Y uring -92 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -35 KPX Yacute Oacute -35 KPX Yacute Ocircumflex -35 KPX Yacute Odieresis -35 KPX Yacute Ograve -35 KPX Yacute Ohungarumlaut -35 KPX Yacute Omacron -35 KPX Yacute Oslash -35 KPX Yacute Otilde -35 KPX Yacute a -85 KPX Yacute aacute -85 KPX Yacute abreve -85 KPX Yacute acircumflex -85 KPX Yacute adieresis -85 KPX Yacute agrave -85 KPX Yacute amacron -85 KPX Yacute aogonek -85 KPX Yacute aring -85 KPX Yacute atilde -85 KPX Yacute colon -92 KPX Yacute comma -92 KPX Yacute e -111 KPX Yacute eacute -111 KPX Yacute ecaron -111 KPX Yacute ecircumflex -111 KPX Yacute edieresis -71 KPX Yacute edotaccent -111 KPX Yacute egrave -71 KPX Yacute emacron -71 KPX Yacute eogonek -111 KPX Yacute hyphen -92 KPX Yacute i -37 KPX Yacute iacute -37 KPX Yacute iogonek -37 KPX Yacute o -111 KPX Yacute oacute -111 KPX Yacute ocircumflex -111 KPX Yacute odieresis -111 KPX Yacute ograve -111 KPX Yacute ohungarumlaut -111 KPX Yacute omacron -111 KPX Yacute oslash -111 KPX Yacute otilde -111 KPX Yacute period -92 KPX Yacute semicolon -92 KPX Yacute u -92 KPX Yacute uacute -92 KPX Yacute ucircumflex -92 KPX Yacute udieresis -92 KPX Yacute ugrave -92 KPX Yacute uhungarumlaut -92 KPX Yacute umacron -92 KPX Yacute uogonek -92 KPX Yacute uring -92 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -35 KPX Ydieresis Oacute -35 KPX Ydieresis Ocircumflex -35 KPX Ydieresis Odieresis -35 KPX Ydieresis Ograve -35 KPX Ydieresis Ohungarumlaut -35 KPX Ydieresis Omacron -35 KPX Ydieresis Oslash -35 KPX Ydieresis Otilde -35 KPX Ydieresis a -85 KPX Ydieresis aacute -85 KPX Ydieresis abreve -85 KPX Ydieresis acircumflex -85 KPX Ydieresis adieresis -85 KPX Ydieresis agrave -85 KPX Ydieresis amacron -85 KPX Ydieresis aogonek -85 KPX Ydieresis aring -85 KPX Ydieresis atilde -85 KPX Ydieresis colon -92 KPX Ydieresis comma -92 KPX Ydieresis e -111 KPX Ydieresis eacute -111 KPX Ydieresis ecaron -111 KPX Ydieresis ecircumflex -111 KPX Ydieresis edieresis -71 KPX Ydieresis edotaccent -111 KPX Ydieresis egrave -71 KPX Ydieresis emacron -71 KPX Ydieresis eogonek -111 KPX Ydieresis hyphen -92 KPX Ydieresis i -37 KPX Ydieresis iacute -37 KPX Ydieresis iogonek -37 KPX Ydieresis o -111 KPX Ydieresis oacute -111 KPX Ydieresis ocircumflex -111 KPX Ydieresis odieresis -111 KPX Ydieresis ograve -111 KPX Ydieresis ohungarumlaut -111 KPX Ydieresis omacron -111 KPX Ydieresis oslash -111 KPX Ydieresis otilde -111 KPX Ydieresis period -92 KPX Ydieresis semicolon -92 KPX Ydieresis u -92 KPX Ydieresis uacute -92 KPX Ydieresis ucircumflex -92 KPX Ydieresis udieresis -92 KPX Ydieresis ugrave -92 KPX Ydieresis uhungarumlaut -92 KPX Ydieresis umacron -92 KPX Ydieresis uogonek -92 KPX Ydieresis uring -92 KPX a v -25 KPX aacute v -25 KPX abreve v -25 KPX acircumflex v -25 KPX adieresis v -25 KPX agrave v -25 KPX amacron v -25 KPX aogonek v -25 KPX aring v -25 KPX atilde v -25 KPX b b -10 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -15 KPX comma quotedblright -45 KPX comma quoteright -55 KPX d w -15 KPX dcroat w -15 KPX e v -15 KPX eacute v -15 KPX ecaron v -15 KPX ecircumflex v -15 KPX edieresis v -15 KPX edotaccent v -15 KPX egrave v -15 KPX emacron v -15 KPX eogonek v -15 KPX f comma -15 KPX f dotlessi -35 KPX f i -25 KPX f o -25 KPX f oacute -25 KPX f ocircumflex -25 KPX f odieresis -25 KPX f ograve -25 KPX f ohungarumlaut -25 KPX f omacron -25 KPX f oslash -25 KPX f otilde -25 KPX f period -15 KPX f quotedblright 50 KPX f quoteright 55 KPX g period -15 KPX gbreve period -15 KPX gcommaaccent period -15 KPX h y -15 KPX h yacute -15 KPX h ydieresis -15 KPX i v -10 KPX iacute v -10 KPX icircumflex v -10 KPX idieresis v -10 KPX igrave v -10 KPX imacron v -10 KPX iogonek v -10 KPX k e -10 KPX k eacute -10 KPX k ecaron -10 KPX k ecircumflex -10 KPX k edieresis -10 KPX k edotaccent -10 KPX k egrave -10 KPX k emacron -10 KPX k eogonek -10 KPX k o -15 KPX k oacute -15 KPX k ocircumflex -15 KPX k odieresis -15 KPX k ograve -15 KPX k ohungarumlaut -15 KPX k omacron -15 KPX k oslash -15 KPX k otilde -15 KPX k y -15 KPX k yacute -15 KPX k ydieresis -15 KPX kcommaaccent e -10 KPX kcommaaccent eacute -10 KPX kcommaaccent ecaron -10 KPX kcommaaccent ecircumflex -10 KPX kcommaaccent edieresis -10 KPX kcommaaccent edotaccent -10 KPX kcommaaccent egrave -10 KPX kcommaaccent emacron -10 KPX kcommaaccent eogonek -10 KPX kcommaaccent o -15 KPX kcommaaccent oacute -15 KPX kcommaaccent ocircumflex -15 KPX kcommaaccent odieresis -15 KPX kcommaaccent ograve -15 KPX kcommaaccent ohungarumlaut -15 KPX kcommaaccent omacron -15 KPX kcommaaccent oslash -15 KPX kcommaaccent otilde -15 KPX kcommaaccent y -15 KPX kcommaaccent yacute -15 KPX kcommaaccent ydieresis -15 KPX n v -40 KPX nacute v -40 KPX ncaron v -40 KPX ncommaaccent v -40 KPX ntilde v -40 KPX o v -10 KPX o w -10 KPX oacute v -10 KPX oacute w -10 KPX ocircumflex v -10 KPX ocircumflex w -10 KPX odieresis v -10 KPX odieresis w -10 KPX ograve v -10 KPX ograve w -10 KPX ohungarumlaut v -10 KPX ohungarumlaut w -10 KPX omacron v -10 KPX omacron w -10 KPX oslash v -10 KPX oslash w -10 KPX otilde v -10 KPX otilde w -10 KPX period quotedblright -55 KPX period quoteright -55 KPX quotedblleft A -10 KPX quotedblleft Aacute -10 KPX quotedblleft Abreve -10 KPX quotedblleft Acircumflex -10 KPX quotedblleft Adieresis -10 KPX quotedblleft Agrave -10 KPX quotedblleft Amacron -10 KPX quotedblleft Aogonek -10 KPX quotedblleft Aring -10 KPX quotedblleft Atilde -10 KPX quoteleft A -10 KPX quoteleft Aacute -10 KPX quoteleft Abreve -10 KPX quoteleft Acircumflex -10 KPX quoteleft Adieresis -10 KPX quoteleft Agrave -10 KPX quoteleft Amacron -10 KPX quoteleft Aogonek -10 KPX quoteleft Aring -10 KPX quoteleft Atilde -10 KPX quoteleft quoteleft -63 KPX quoteright d -20 KPX quoteright dcroat -20 KPX quoteright quoteright -63 KPX quoteright r -20 KPX quoteright racute -20 KPX quoteright rcaron -20 KPX quoteright rcommaaccent -20 KPX quoteright s -37 KPX quoteright sacute -37 KPX quoteright scaron -37 KPX quoteright scedilla -37 KPX quoteright scommaaccent -37 KPX quoteright space -74 KPX quoteright v -20 KPX r c -18 KPX r cacute -18 KPX r ccaron -18 KPX r ccedilla -18 KPX r comma -92 KPX r e -18 KPX r eacute -18 KPX r ecaron -18 KPX r ecircumflex -18 KPX r edieresis -18 KPX r edotaccent -18 KPX r egrave -18 KPX r emacron -18 KPX r eogonek -18 KPX r g -10 KPX r gbreve -10 KPX r gcommaaccent -10 KPX r hyphen -37 KPX r n -15 KPX r nacute -15 KPX r ncaron -15 KPX r ncommaaccent -15 KPX r ntilde -15 KPX r o -18 KPX r oacute -18 KPX r ocircumflex -18 KPX r odieresis -18 KPX r ograve -18 KPX r ohungarumlaut -18 KPX r omacron -18 KPX r oslash -18 KPX r otilde -18 KPX r p -10 KPX r period -100 KPX r q -18 KPX r v -10 KPX racute c -18 KPX racute cacute -18 KPX racute ccaron -18 KPX racute ccedilla -18 KPX racute comma -92 KPX racute e -18 KPX racute eacute -18 KPX racute ecaron -18 KPX racute ecircumflex -18 KPX racute edieresis -18 KPX racute edotaccent -18 KPX racute egrave -18 KPX racute emacron -18 KPX racute eogonek -18 KPX racute g -10 KPX racute gbreve -10 KPX racute gcommaaccent -10 KPX racute hyphen -37 KPX racute n -15 KPX racute nacute -15 KPX racute ncaron -15 KPX racute ncommaaccent -15 KPX racute ntilde -15 KPX racute o -18 KPX racute oacute -18 KPX racute ocircumflex -18 KPX racute odieresis -18 KPX racute ograve -18 KPX racute ohungarumlaut -18 KPX racute omacron -18 KPX racute oslash -18 KPX racute otilde -18 KPX racute p -10 KPX racute period -100 KPX racute q -18 KPX racute v -10 KPX rcaron c -18 KPX rcaron cacute -18 KPX rcaron ccaron -18 KPX rcaron ccedilla -18 KPX rcaron comma -92 KPX rcaron e -18 KPX rcaron eacute -18 KPX rcaron ecaron -18 KPX rcaron ecircumflex -18 KPX rcaron edieresis -18 KPX rcaron edotaccent -18 KPX rcaron egrave -18 KPX rcaron emacron -18 KPX rcaron eogonek -18 KPX rcaron g -10 KPX rcaron gbreve -10 KPX rcaron gcommaaccent -10 KPX rcaron hyphen -37 KPX rcaron n -15 KPX rcaron nacute -15 KPX rcaron ncaron -15 KPX rcaron ncommaaccent -15 KPX rcaron ntilde -15 KPX rcaron o -18 KPX rcaron oacute -18 KPX rcaron ocircumflex -18 KPX rcaron odieresis -18 KPX rcaron ograve -18 KPX rcaron ohungarumlaut -18 KPX rcaron omacron -18 KPX rcaron oslash -18 KPX rcaron otilde -18 KPX rcaron p -10 KPX rcaron period -100 KPX rcaron q -18 KPX rcaron v -10 KPX rcommaaccent c -18 KPX rcommaaccent cacute -18 KPX rcommaaccent ccaron -18 KPX rcommaaccent ccedilla -18 KPX rcommaaccent comma -92 KPX rcommaaccent e -18 KPX rcommaaccent eacute -18 KPX rcommaaccent ecaron -18 KPX rcommaaccent ecircumflex -18 KPX rcommaaccent edieresis -18 KPX rcommaaccent edotaccent -18 KPX rcommaaccent egrave -18 KPX rcommaaccent emacron -18 KPX rcommaaccent eogonek -18 KPX rcommaaccent g -10 KPX rcommaaccent gbreve -10 KPX rcommaaccent gcommaaccent -10 KPX rcommaaccent hyphen -37 KPX rcommaaccent n -15 KPX rcommaaccent nacute -15 KPX rcommaaccent ncaron -15 KPX rcommaaccent ncommaaccent -15 KPX rcommaaccent ntilde -15 KPX rcommaaccent o -18 KPX rcommaaccent oacute -18 KPX rcommaaccent ocircumflex -18 KPX rcommaaccent odieresis -18 KPX rcommaaccent ograve -18 KPX rcommaaccent ohungarumlaut -18 KPX rcommaaccent omacron -18 KPX rcommaaccent oslash -18 KPX rcommaaccent otilde -18 KPX rcommaaccent p -10 KPX rcommaaccent period -100 KPX rcommaaccent q -18 KPX rcommaaccent v -10 KPX space A -55 KPX space Aacute -55 KPX space Abreve -55 KPX space Acircumflex -55 KPX space Adieresis -55 KPX space Agrave -55 KPX space Amacron -55 KPX space Aogonek -55 KPX space Aring -55 KPX space Atilde -55 KPX space T -30 KPX space Tcaron -30 KPX space Tcommaaccent -30 KPX space V -45 KPX space W -30 KPX space Y -55 KPX space Yacute -55 KPX space Ydieresis -55 KPX v a -10 KPX v aacute -10 KPX v abreve -10 KPX v acircumflex -10 KPX v adieresis -10 KPX v agrave -10 KPX v amacron -10 KPX v aogonek -10 KPX v aring -10 KPX v atilde -10 KPX v comma -55 KPX v e -10 KPX v eacute -10 KPX v ecaron -10 KPX v ecircumflex -10 KPX v edieresis -10 KPX v edotaccent -10 KPX v egrave -10 KPX v emacron -10 KPX v eogonek -10 KPX v o -10 KPX v oacute -10 KPX v ocircumflex -10 KPX v odieresis -10 KPX v ograve -10 KPX v ohungarumlaut -10 KPX v omacron -10 KPX v oslash -10 KPX v otilde -10 KPX v period -70 KPX w comma -55 KPX w o -10 KPX w oacute -10 KPX w ocircumflex -10 KPX w odieresis -10 KPX w ograve -10 KPX w ohungarumlaut -10 KPX w omacron -10 KPX w oslash -10 KPX w otilde -10 KPX w period -70 KPX y comma -55 KPX y e -10 KPX y eacute -10 KPX y ecaron -10 KPX y ecircumflex -10 KPX y edieresis -10 KPX y edotaccent -10 KPX y egrave -10 KPX y emacron -10 KPX y eogonek -10 KPX y o -25 KPX y oacute -25 KPX y ocircumflex -25 KPX y odieresis -25 KPX y ograve -25 KPX y ohungarumlaut -25 KPX y omacron -25 KPX y oslash -25 KPX y otilde -25 KPX y period -70 KPX yacute comma -55 KPX yacute e -10 KPX yacute eacute -10 KPX yacute ecaron -10 KPX yacute ecircumflex -10 KPX yacute edieresis -10 KPX yacute edotaccent -10 KPX yacute egrave -10 KPX yacute emacron -10 KPX yacute eogonek -10 KPX yacute o -25 KPX yacute oacute -25 KPX yacute ocircumflex -25 KPX yacute odieresis -25 KPX yacute ograve -25 KPX yacute ohungarumlaut -25 KPX yacute omacron -25 KPX yacute oslash -25 KPX yacute otilde -25 KPX yacute period -70 KPX ydieresis comma -55 KPX ydieresis e -10 KPX ydieresis eacute -10 KPX ydieresis ecaron -10 KPX ydieresis ecircumflex -10 KPX ydieresis edieresis -10 KPX ydieresis edotaccent -10 KPX ydieresis egrave -10 KPX ydieresis emacron -10 KPX ydieresis eogonek -10 KPX ydieresis o -25 KPX ydieresis oacute -25 KPX ydieresis ocircumflex -25 KPX ydieresis odieresis -25 KPX ydieresis ograve -25 KPX ydieresis ohungarumlaut -25 KPX ydieresis omacron -25 KPX ydieresis oslash -25 KPX ydieresis otilde -25 KPX ydieresis period -70 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/AvantGarde-DemiOblique.afm0000644000222100022210000011140514541067540017576 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:39:52 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43086 Comment VMusage 12316 64111 FontName AvantGarde-DemiOblique FullName ITC Avant Garde Gothic Demi Oblique FamilyName ITC Avant Garde Gothic Weight Demi ItalicAngle -10.5 IsFixedPitch false FontBBox -123 -251 1256 1021 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 740 XHeight 555 Ascender 740 Descender -192 StdHW 122 StdVW 133 StartCharMetrics 361 C 32 ; WX 280 ; N space ; B 0 0 0 0 ; C 33 ; WX 280 ; N exclam ; B 73 0 344 740 ; C 34 ; WX 360 ; N quotedbl ; B 127 444 479 740 ; C 35 ; WX 560 ; N numbersign ; B 65 0 619 700 ; C 36 ; WX 560 ; N dollar ; B 99 -86 582 857 ; C 37 ; WX 860 ; N percent ; B 139 -15 856 755 ; C 38 ; WX 680 ; N ampersand ; B 70 -15 742 755 ; C 39 ; WX 280 ; N quoteright ; B 159 466 343 740 ; C 40 ; WX 380 ; N parenleft ; B 119 -157 490 754 ; C 41 ; WX 380 ; N parenright ; B 7 -157 378 754 ; C 42 ; WX 440 ; N asterisk ; B 173 457 493 755 ; C 43 ; WX 600 ; N plus ; B 83 0 611 506 ; C 44 ; WX 280 ; N comma ; B 47 -141 231 133 ; C 45 ; WX 420 ; N hyphen ; B 113 230 414 348 ; C 46 ; WX 280 ; N period ; B 73 0 231 133 ; C 47 ; WX 460 ; N slash ; B -13 -100 592 740 ; C 48 ; WX 560 ; N zero ; B 69 -15 628 755 ; C 49 ; WX 560 ; N one ; B 230 0 501 740 ; C 50 ; WX 560 ; N two ; B 44 0 622 755 ; C 51 ; WX 560 ; N three ; B 67 -15 586 755 ; C 52 ; WX 560 ; N four ; B 35 0 605 740 ; C 53 ; WX 560 ; N five ; B 63 -15 601 740 ; C 54 ; WX 560 ; N six ; B 64 -15 588 739 ; C 55 ; WX 560 ; N seven ; B 83 0 636 740 ; C 56 ; WX 560 ; N eight ; B 70 -15 590 755 ; C 57 ; WX 560 ; N nine ; B 109 0 633 754 ; C 58 ; WX 280 ; N colon ; B 73 0 309 555 ; C 59 ; WX 280 ; N semicolon ; B 47 -141 309 555 ; C 60 ; WX 600 ; N less ; B 84 -8 650 514 ; C 61 ; WX 600 ; N equal ; B 63 81 631 425 ; C 62 ; WX 600 ; N greater ; B 44 -8 610 514 ; C 63 ; WX 560 ; N question ; B 135 0 594 755 ; C 64 ; WX 740 ; N at ; B 108 -12 832 712 ; C 65 ; WX 740 ; N A ; B 7 0 732 740 ; C 66 ; WX 580 ; N B ; B 70 0 611 740 ; C 67 ; WX 780 ; N C ; B 96 -15 865 755 ; C 68 ; WX 700 ; N D ; B 63 0 732 740 ; C 69 ; WX 520 ; N E ; B 61 0 597 740 ; C 70 ; WX 480 ; N F ; B 61 0 576 740 ; C 71 ; WX 840 ; N G ; B 89 -15 887 755 ; C 72 ; WX 680 ; N H ; B 71 0 748 740 ; C 73 ; WX 280 ; N I ; B 72 0 347 740 ; C 74 ; WX 480 ; N J ; B 34 -15 547 740 ; C 75 ; WX 620 ; N K ; B 89 0 758 740 ; C 76 ; WX 440 ; N L ; B 72 0 459 740 ; C 77 ; WX 900 ; N M ; B 63 0 975 740 ; C 78 ; WX 740 ; N N ; B 70 0 809 740 ; C 79 ; WX 840 ; N O ; B 94 -15 882 755 ; C 80 ; WX 560 ; N P ; B 72 0 645 740 ; C 81 ; WX 840 ; N Q ; B 93 -15 882 755 ; C 82 ; WX 580 ; N R ; B 64 0 657 740 ; C 83 ; WX 520 ; N S ; B 48 -15 579 755 ; C 84 ; WX 420 ; N T ; B 119 0 556 740 ; C 85 ; WX 640 ; N U ; B 96 -15 723 740 ; C 86 ; WX 700 ; N V ; B 145 0 833 740 ; C 87 ; WX 900 ; N W ; B 144 0 1037 740 ; C 88 ; WX 680 ; N X ; B 4 0 814 740 ; C 89 ; WX 620 ; N Y ; B 135 0 760 740 ; C 90 ; WX 500 ; N Z ; B 19 0 600 740 ; C 91 ; WX 320 ; N bracketleft ; B 88 -157 424 754 ; C 92 ; WX 640 ; N backslash ; B 233 -100 526 740 ; C 93 ; WX 320 ; N bracketright ; B 6 -157 342 754 ; C 94 ; WX 600 ; N asciicircum ; B 142 375 597 740 ; C 95 ; WX 500 ; N underscore ; B -24 -125 487 -75 ; C 96 ; WX 280 ; N quoteleft ; B 158 466 342 740 ; C 97 ; WX 660 ; N a ; B 72 -18 716 574 ; C 98 ; WX 660 ; N b ; B 47 -18 689 740 ; C 99 ; WX 640 ; N c ; B 83 -18 679 574 ; C 100 ; WX 660 ; N d ; B 79 -18 756 740 ; C 101 ; WX 640 ; N e ; B 76 -18 668 574 ; C 102 ; WX 280 ; N f ; B 62 0 420 755 ; L i fi ; L l fl ; C 103 ; WX 660 ; N g ; B 33 -226 726 574 ; C 104 ; WX 600 ; N h ; B 54 0 614 740 ; C 105 ; WX 240 ; N i ; B 53 0 324 740 ; C 106 ; WX 260 ; N j ; B -19 -185 343 740 ; C 107 ; WX 580 ; N k ; B 80 0 648 740 ; C 108 ; WX 240 ; N l ; B 54 0 325 740 ; C 109 ; WX 940 ; N m ; B 54 0 955 574 ; C 110 ; WX 600 ; N n ; B 54 0 614 574 ; C 111 ; WX 640 ; N o ; B 71 -18 672 574 ; C 112 ; WX 660 ; N p ; B 12 -185 687 574 ; C 113 ; WX 660 ; N q ; B 78 -185 716 574 ; C 114 ; WX 320 ; N r ; B 63 0 424 574 ; C 115 ; WX 440 ; N s ; B 49 -18 483 574 ; C 116 ; WX 300 ; N t ; B 86 0 402 740 ; C 117 ; WX 600 ; N u ; B 86 -18 647 555 ; C 118 ; WX 560 ; N v ; B 105 0 659 555 ; C 119 ; WX 800 ; N w ; B 113 0 892 555 ; C 120 ; WX 560 ; N x ; B 3 0 632 555 ; C 121 ; WX 580 ; N y ; B 74 -185 674 555 ; C 122 ; WX 460 ; N z ; B 20 0 528 555 ; C 123 ; WX 340 ; N braceleft ; B 40 -191 456 747 ; C 124 ; WX 600 ; N bar ; B 186 -250 505 750 ; C 125 ; WX 340 ; N braceright ; B -13 -191 405 747 ; C 126 ; WX 600 ; N asciitilde ; B 114 160 580 347 ; C 160 ; WX 280 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 280 ; N exclamdown ; B 39 -185 310 555 ; C 162 ; WX 560 ; N cent ; B 110 39 600 715 ; C 163 ; WX 560 ; N sterling ; B 38 0 616 755 ; C 164 ; WX 160 ; N fraction ; B -123 0 420 740 ; C 165 ; WX 560 ; N yen ; B 83 0 708 740 ; C 166 ; WX 560 ; N florin ; B -27 -151 665 824 ; C 167 ; WX 560 ; N section ; B 65 -158 602 755 ; C 168 ; WX 560 ; N currency ; B 52 69 628 577 ; C 169 ; WX 220 ; N quotesingle ; B 152 444 315 740 ; C 170 ; WX 480 ; N quotedblleft ; B 156 466 547 740 ; C 171 ; WX 460 ; N guillemotleft ; B 105 108 487 469 ; C 172 ; WX 240 ; N guilsinglleft ; B 94 108 277 469 ; C 173 ; WX 240 ; N guilsinglright ; B 70 108 254 469 ; C 174 ; WX 520 ; N fi ; B 72 0 599 755 ; C 175 ; WX 520 ; N fl ; B 72 0 599 755 ; C 177 ; WX 500 ; N endash ; B 77 230 530 348 ; C 178 ; WX 560 ; N dagger ; B 132 -142 612 740 ; C 179 ; WX 560 ; N daggerdbl ; B 63 -142 618 740 ; C 180 ; WX 280 ; N periodcentered ; B 107 187 266 320 ; C 182 ; WX 600 ; N paragraph ; B 89 -103 745 740 ; C 183 ; WX 600 ; N bullet ; B 215 222 526 532 ; C 184 ; WX 280 ; N quotesinglbase ; B 46 -141 230 133 ; C 185 ; WX 480 ; N quotedblbase ; B 44 -141 435 133 ; C 186 ; WX 480 ; N quotedblright ; B 157 466 548 740 ; C 187 ; WX 460 ; N guillemotright ; B 81 108 464 469 ; C 188 ; WX 1000 ; N ellipsis ; B 100 0 924 133 ; C 189 ; WX 1280 ; N perthousand ; B 139 -15 1256 755 ; C 191 ; WX 560 ; N questiondown ; B 68 -200 527 555 ; C 193 ; WX 420 ; N grave ; B 188 624 462 851 ; C 194 ; WX 420 ; N acute ; B 221 624 507 851 ; C 195 ; WX 540 ; N circumflex ; B 188 636 588 774 ; C 196 ; WX 480 ; N tilde ; B 178 636 564 767 ; C 197 ; WX 420 ; N macron ; B 192 648 490 759 ; C 198 ; WX 480 ; N breve ; B 184 633 582 770 ; C 199 ; WX 280 ; N dotaccent ; B 191 636 350 769 ; C 200 ; WX 500 ; N dieresis ; B 195 636 565 769 ; C 202 ; WX 360 ; N ring ; B 205 619 425 834 ; C 203 ; WX 340 ; N cedilla ; B 66 -251 272 6 ; C 205 ; WX 700 ; N hungarumlaut ; B 247 610 767 849 ; C 206 ; WX 340 ; N ogonek ; B 59 -195 243 9 ; C 207 ; WX 540 ; N caron ; B 214 636 614 774 ; C 208 ; WX 1000 ; N emdash ; B 77 230 1030 348 ; C 225 ; WX 900 ; N AE ; B -5 0 962 740 ; C 227 ; WX 360 ; N ordfeminine ; B 126 438 473 755 ; C 232 ; WX 480 ; N Lslash ; B 67 0 484 740 ; C 233 ; WX 840 ; N Oslash ; B 93 -71 891 814 ; C 234 ; WX 1060 ; N OE ; B 98 -15 1145 755 ; C 235 ; WX 360 ; N ordmasculine ; B 130 438 452 755 ; C 241 ; WX 1080 ; N ae ; B 75 -18 1106 574 ; C 245 ; WX 240 ; N dotlessi ; B 53 0 289 555 ; C 248 ; WX 320 ; N lslash ; B 74 0 405 740 ; C 249 ; WX 660 ; N oslash ; B 81 -50 685 608 ; C 250 ; WX 1080 ; N oe ; B 76 -18 1109 574 ; C 251 ; WX 600 ; N germandbls ; B 51 -18 629 755 ; C -1 ; WX 280 ; N Idieresis ; B 72 0 487 939 ; C -1 ; WX 640 ; N eacute ; B 76 -18 668 851 ; C -1 ; WX 660 ; N abreve ; B 72 -18 716 770 ; C -1 ; WX 600 ; N uhungarumlaut ; B 86 -18 717 849 ; C -1 ; WX 640 ; N ecaron ; B 76 -18 674 774 ; C -1 ; WX 620 ; N Ydieresis ; B 135 0 760 939 ; C -1 ; WX 600 ; N divide ; B 83 -20 611 526 ; C -1 ; WX 620 ; N Yacute ; B 135 0 760 1021 ; C -1 ; WX 740 ; N Acircumflex ; B 7 0 732 944 ; C -1 ; WX 660 ; N aacute ; B 72 -18 716 851 ; C -1 ; WX 640 ; N Ucircumflex ; B 96 -15 723 944 ; C -1 ; WX 580 ; N yacute ; B 74 -185 674 851 ; C -1 ; WX 440 ; N scommaaccent ; B 49 -229 483 574 ; C -1 ; WX 640 ; N ecircumflex ; B 76 -18 668 774 ; C -1 ; WX 640 ; N Uring ; B 96 -15 723 969 ; C -1 ; WX 640 ; N Udieresis ; B 96 -15 723 939 ; C -1 ; WX 660 ; N aogonek ; B 72 -195 716 574 ; C -1 ; WX 640 ; N Uacute ; B 96 -15 723 1021 ; C -1 ; WX 600 ; N uogonek ; B 86 -195 647 555 ; C -1 ; WX 520 ; N Edieresis ; B 61 0 607 939 ; C -1 ; WX 742 ; N Dcroat ; B 82 0 766 740 ; C -1 ; WX 351 ; N commaaccent ; B 5 -229 213 -54 ; C -1 ; WX 740 ; N copyright ; B 50 -12 828 752 ; C -1 ; WX 520 ; N Emacron ; B 61 0 597 944 ; C -1 ; WX 640 ; N ccaron ; B 83 -18 679 774 ; C -1 ; WX 660 ; N aring ; B 72 -18 716 834 ; C -1 ; WX 740 ; N Ncommaaccent ; B 70 -209 809 740 ; C -1 ; WX 240 ; N lacute ; B 54 0 447 1011 ; C -1 ; WX 660 ; N agrave ; B 72 -18 716 851 ; C -1 ; WX 420 ; N Tcommaaccent ; B 40 -229 556 740 ; C -1 ; WX 780 ; N Cacute ; B 96 -15 865 1021 ; C -1 ; WX 660 ; N atilde ; B 72 -18 716 767 ; C -1 ; WX 520 ; N Edotaccent ; B 61 0 597 954 ; C -1 ; WX 440 ; N scaron ; B 49 -18 564 774 ; C -1 ; WX 440 ; N scedilla ; B 49 -251 483 574 ; C -1 ; WX 240 ; N iacute ; B 53 0 442 851 ; C -1 ; WX 494 ; N lozenge ; B 79 0 554 745 ; C -1 ; WX 580 ; N Rcaron ; B 64 0 668 959 ; C -1 ; WX 840 ; N Gcommaaccent ; B 89 -229 887 755 ; C -1 ; WX 600 ; N ucircumflex ; B 86 -18 647 774 ; C -1 ; WX 660 ; N acircumflex ; B 72 -18 716 774 ; C -1 ; WX 740 ; N Amacron ; B 7 0 732 944 ; C -1 ; WX 320 ; N rcaron ; B 63 0 504 774 ; C -1 ; WX 640 ; N ccedilla ; B 83 -251 679 574 ; C -1 ; WX 500 ; N Zdotaccent ; B 19 0 600 954 ; C -1 ; WX 560 ; N Thorn ; B 72 0 619 740 ; C -1 ; WX 840 ; N Omacron ; B 94 -15 882 944 ; C -1 ; WX 580 ; N Racute ; B 64 0 657 1021 ; C -1 ; WX 520 ; N Sacute ; B 48 -15 589 1021 ; C -1 ; WX 800 ; N dcaron ; B 79 -18 966 740 ; C -1 ; WX 640 ; N Umacron ; B 96 -15 723 944 ; C -1 ; WX 600 ; N uring ; B 86 -18 647 834 ; C -1 ; WX 336 ; N threesuperior ; B 87 287 414 749 ; C -1 ; WX 840 ; N Ograve ; B 94 -15 882 1021 ; C -1 ; WX 740 ; N Agrave ; B 7 0 732 1021 ; C -1 ; WX 740 ; N Abreve ; B 7 0 746 955 ; C -1 ; WX 600 ; N multiply ; B 76 12 618 494 ; C -1 ; WX 600 ; N uacute ; B 86 -18 647 851 ; C -1 ; WX 420 ; N Tcaron ; B 119 0 588 959 ; C -1 ; WX 494 ; N partialdiff ; B 39 -21 573 750 ; C -1 ; WX 580 ; N ydieresis ; B 74 -185 674 769 ; C -1 ; WX 740 ; N Nacute ; B 70 0 809 1021 ; C -1 ; WX 240 ; N icircumflex ; B 38 0 438 774 ; C -1 ; WX 520 ; N Ecircumflex ; B 61 0 610 944 ; C -1 ; WX 660 ; N adieresis ; B 72 -18 716 769 ; C -1 ; WX 640 ; N edieresis ; B 76 -18 668 769 ; C -1 ; WX 640 ; N cacute ; B 83 -18 679 851 ; C -1 ; WX 600 ; N nacute ; B 54 0 614 851 ; C -1 ; WX 600 ; N umacron ; B 86 -18 647 759 ; C -1 ; WX 740 ; N Ncaron ; B 70 0 809 959 ; C -1 ; WX 280 ; N Iacute ; B 72 0 494 1021 ; C -1 ; WX 600 ; N plusminus ; B 36 -62 627 556 ; C -1 ; WX 600 ; N brokenbar ; B 200 -175 492 675 ; C -1 ; WX 740 ; N registered ; B 50 -12 828 752 ; C -1 ; WX 840 ; N Gbreve ; B 89 -15 887 955 ; C -1 ; WX 280 ; N Idotaccent ; B 72 0 384 954 ; C -1 ; WX 713 ; N summation ; B -5 -108 756 752 ; C -1 ; WX 520 ; N Egrave ; B 61 0 597 1021 ; C -1 ; WX 320 ; N racute ; B 63 0 487 851 ; C -1 ; WX 640 ; N omacron ; B 71 -18 672 759 ; C -1 ; WX 500 ; N Zacute ; B 19 0 600 1021 ; C -1 ; WX 500 ; N Zcaron ; B 19 0 650 944 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 616 704 ; C -1 ; WX 742 ; N Eth ; B 82 0 766 740 ; C -1 ; WX 780 ; N Ccedilla ; B 96 -251 865 755 ; C -1 ; WX 240 ; N lcommaaccent ; B -50 -229 325 740 ; C -1 ; WX 400 ; N tcaron ; B 86 0 584 786 ; C -1 ; WX 640 ; N eogonek ; B 76 -195 668 574 ; C -1 ; WX 640 ; N Uogonek ; B 96 -195 723 740 ; C -1 ; WX 740 ; N Aacute ; B 7 0 732 1021 ; C -1 ; WX 740 ; N Adieresis ; B 7 0 732 939 ; C -1 ; WX 640 ; N egrave ; B 76 -18 668 851 ; C -1 ; WX 460 ; N zacute ; B 20 0 528 851 ; C -1 ; WX 240 ; N iogonek ; B -34 -195 324 740 ; C -1 ; WX 840 ; N Oacute ; B 94 -15 882 1021 ; C -1 ; WX 640 ; N oacute ; B 71 -18 672 851 ; C -1 ; WX 660 ; N amacron ; B 72 -18 716 759 ; C -1 ; WX 440 ; N sacute ; B 49 -18 517 851 ; C -1 ; WX 240 ; N idieresis ; B 53 0 435 769 ; C -1 ; WX 840 ; N Ocircumflex ; B 94 -15 882 944 ; C -1 ; WX 640 ; N Ugrave ; B 96 -15 723 1021 ; C -1 ; WX 612 ; N Delta ; B 2 0 612 692 ; C -1 ; WX 660 ; N thorn ; B 12 -185 687 740 ; C -1 ; WX 336 ; N twosuperior ; B 72 296 436 749 ; C -1 ; WX 840 ; N Odieresis ; B 94 -15 882 939 ; C -1 ; WX 576 ; N mu ; B 3 -187 642 555 ; C -1 ; WX 240 ; N igrave ; B 53 0 347 851 ; C -1 ; WX 640 ; N ohungarumlaut ; B 71 -18 737 849 ; C -1 ; WX 520 ; N Eogonek ; B 61 -195 597 740 ; C -1 ; WX 660 ; N dcroat ; B 79 -18 829 740 ; C -1 ; WX 840 ; N threequarters ; B 97 0 837 749 ; C -1 ; WX 520 ; N Scedilla ; B 49 -251 579 755 ; C -1 ; WX 380 ; N lcaron ; B 54 0 536 740 ; C -1 ; WX 620 ; N Kcommaaccent ; B 89 -209 758 740 ; C -1 ; WX 440 ; N Lacute ; B 72 0 549 1021 ; C -1 ; WX 1000 ; N trademark ; B 130 296 959 740 ; C -1 ; WX 640 ; N edotaccent ; B 76 -18 668 769 ; C -1 ; WX 280 ; N Igrave ; B 72 0 399 1021 ; C -1 ; WX 280 ; N Imacron ; B 72 0 454 944 ; C -1 ; WX 440 ; N Lcaron ; B 72 0 626 740 ; C -1 ; WX 840 ; N onehalf ; B 157 0 831 740 ; C -1 ; WX 549 ; N lessequal ; B 29 0 657 704 ; C -1 ; WX 640 ; N ocircumflex ; B 71 -18 672 774 ; C -1 ; WX 600 ; N ntilde ; B 54 0 624 767 ; C -1 ; WX 640 ; N Uhungarumlaut ; B 96 -15 769 1019 ; C -1 ; WX 520 ; N Eacute ; B 61 0 597 1021 ; C -1 ; WX 640 ; N emacron ; B 76 -18 668 759 ; C -1 ; WX 660 ; N gbreve ; B 33 -226 726 770 ; C -1 ; WX 840 ; N onequarter ; B 187 0 780 740 ; C -1 ; WX 520 ; N Scaron ; B 48 -15 635 944 ; C -1 ; WX 520 ; N Scommaaccent ; B 48 -229 579 755 ; C -1 ; WX 840 ; N Ohungarumlaut ; B 94 -15 882 1019 ; C -1 ; WX 400 ; N degree ; B 159 426 451 712 ; C -1 ; WX 640 ; N ograve ; B 71 -18 672 851 ; C -1 ; WX 780 ; N Ccaron ; B 96 -15 865 959 ; C -1 ; WX 600 ; N ugrave ; B 86 -18 647 851 ; C -1 ; WX 549 ; N radical ; B 99 -46 667 850 ; C -1 ; WX 700 ; N Dcaron ; B 63 0 732 959 ; C -1 ; WX 320 ; N rcommaaccent ; B -51 -229 424 574 ; C -1 ; WX 740 ; N Ntilde ; B 70 0 809 937 ; C -1 ; WX 640 ; N otilde ; B 71 -18 672 767 ; C -1 ; WX 580 ; N Rcommaaccent ; B 64 -209 657 740 ; C -1 ; WX 440 ; N Lcommaaccent ; B 72 -229 459 740 ; C -1 ; WX 740 ; N Atilde ; B 7 0 732 937 ; C -1 ; WX 740 ; N Aogonek ; B 7 -195 732 740 ; C -1 ; WX 740 ; N Aring ; B 7 0 732 969 ; C -1 ; WX 840 ; N Otilde ; B 94 -15 882 937 ; C -1 ; WX 460 ; N zdotaccent ; B 20 0 528 769 ; C -1 ; WX 520 ; N Ecaron ; B 61 0 638 959 ; C -1 ; WX 280 ; N Iogonek ; B -9 -195 347 740 ; C -1 ; WX 580 ; N kcommaaccent ; B 80 -209 648 740 ; C -1 ; WX 600 ; N minus ; B 83 193 611 313 ; C -1 ; WX 280 ; N Icircumflex ; B 72 0 490 944 ; C -1 ; WX 600 ; N ncaron ; B 54 0 644 774 ; C -1 ; WX 300 ; N tcommaaccent ; B -1 -229 402 740 ; C -1 ; WX 600 ; N logicalnot ; B 104 108 631 425 ; C -1 ; WX 640 ; N odieresis ; B 71 -18 672 769 ; C -1 ; WX 600 ; N udieresis ; B 86 -18 647 769 ; C -1 ; WX 549 ; N notequal ; B 30 -49 619 570 ; C -1 ; WX 660 ; N gcommaaccent ; B 33 -226 726 800 ; C -1 ; WX 640 ; N eth ; B 73 -18 699 754 ; C -1 ; WX 460 ; N zcaron ; B 20 0 599 774 ; C -1 ; WX 600 ; N ncommaaccent ; B 54 -209 614 574 ; C -1 ; WX 336 ; N onesuperior ; B 181 296 361 740 ; C -1 ; WX 240 ; N imacron ; B 53 0 400 759 ; C -1 ; WX 560 ; N Euro ; B -33 -11 673 751 ; C -1 ; WX 780 ; N Ccircumflex ; B 92 -13 858 950 ; C -1 ; WX 640 ; N ccircumflex ; B 77 -13 670 765 ; C -1 ; WX 780 ; N Cdotaccent ; B 92 -13 858 944 ; C -1 ; WX 640 ; N cdotaccent ; B 77 -13 670 759 ; C -1 ; WX 520 ; N Ebreve ; B 68 0 607 948 ; C -1 ; WX 640 ; N ebreve ; B 76 -13 665 763 ; C -1 ; WX 840 ; N Gcircumflex ; B 91 -13 888 950 ; C -1 ; WX 660 ; N gcircumflex ; B 30 -221 714 765 ; C -1 ; WX 840 ; N Gdotaccent ; B 91 -13 888 944 ; C -1 ; WX 660 ; N gdotaccent ; B 30 -221 714 759 ; C -1 ; WX 680 ; N Hcircumflex ; B 68 0 743 950 ; C -1 ; WX 600 ; N hcircumflex ; B 54 0 647 937 ; C -1 ; WX 720 ; N Hbar ; B 88 0 810 739 ; C -1 ; WX 630 ; N hbar ; B 84 0 643 739 ; C -1 ; WX 280 ; N Itilde ; B 68 0 461 950 ; C -1 ; WX 240 ; N itilde ; B 54 0 411 765 ; C -1 ; WX 280 ; N Ibreve ; B 68 0 477 948 ; C -1 ; WX 240 ; N ibreve ; B 54 0 427 763 ; C -1 ; WX 786 ; N IJ ; B 68 -13 851 739 ; C -1 ; WX 452 ; N ij ; B 54 -185 538 739 ; C -1 ; WX 480 ; N Jcircumflex ; B 38 -13 686 977 ; C -1 ; WX 260 ; N jcircumflex ; B -17 -185 448 768 ; C -1 ; WX 580 ; N kgreenlandic ; B 54 0 625 554 ; C -1 ; WX 440 ; N Ldot ; B 68 0 456 739 ; C -1 ; WX 476 ; N ldot ; B 54 0 446 739 ; C -1 ; WX 600 ; N napostrophe ; B 54 0 613 858 ; C -1 ; WX 740 ; N Eng ; B 68 -160 804 739 ; C -1 ; WX 600 ; N eng ; B 54 -160 613 567 ; C -1 ; WX 840 ; N Obreve ; B 91 -13 875 975 ; C -1 ; WX 640 ; N obreve ; B 76 -13 675 790 ; C -1 ; WX 520 ; N Scircumflex ; B 49 -13 606 977 ; C -1 ; WX 440 ; N scircumflex ; B 49 -13 538 792 ; C -1 ; WX 420 ; N Tbar ; B 119 0 555 739 ; C -1 ; WX 300 ; N tbar ; B 52 0 390 739 ; C -1 ; WX 420 ; N Tcedilla ; B 40 -229 556 740 ; C -1 ; WX 300 ; N tcedilla ; B -1 -229 402 740 ; C -1 ; WX 640 ; N Utilde ; B 109 -13 704 977 ; C -1 ; WX 600 ; N utilde ; B 88 -13 650 792 ; C -1 ; WX 640 ; N Ubreve ; B 109 -13 704 975 ; C -1 ; WX 600 ; N ubreve ; B 88 -13 650 790 ; C -1 ; WX 900 ; N Wcircumflex ; B 144 0 1035 977 ; C -1 ; WX 800 ; N wcircumflex ; B 113 0 888 792 ; C -1 ; WX 620 ; N Ycircumflex ; B 140 0 763 977 ; C -1 ; WX 580 ; N ycircumflex ; B 73 -185 671 792 ; C -1 ; WX 280 ; N longs ; B 57 0 413 739 ; C -1 ; WX 746 ; N infinity ; B 27 108 717 513 ; EndCharMetrics StartKernData StartKernPairs 933 KPX A T -73 KPX A Tcaron -73 KPX A Tcommaaccent -73 KPX A V -127 KPX A W -96 KPX A Y -139 KPX A Yacute -139 KPX A Ydieresis -139 KPX A v -50 KPX A w -50 KPX A y -50 KPX A yacute -50 KPX A ydieresis -50 KPX Aacute T -73 KPX Aacute Tcaron -73 KPX Aacute Tcommaaccent -73 KPX Aacute V -127 KPX Aacute W -96 KPX Aacute Y -139 KPX Aacute Yacute -139 KPX Aacute Ydieresis -139 KPX Aacute v -50 KPX Aacute w -50 KPX Aacute y -50 KPX Aacute yacute -50 KPX Aacute ydieresis -50 KPX Abreve T -73 KPX Abreve Tcaron -73 KPX Abreve Tcommaaccent -73 KPX Abreve V -127 KPX Abreve W -96 KPX Abreve Y -139 KPX Abreve Yacute -139 KPX Abreve Ydieresis -139 KPX Abreve v -50 KPX Abreve w -50 KPX Abreve y -50 KPX Abreve yacute -50 KPX Abreve ydieresis -50 KPX Acircumflex T -73 KPX Acircumflex Tcaron -73 KPX Acircumflex Tcommaaccent -73 KPX Acircumflex V -127 KPX Acircumflex W -96 KPX Acircumflex Y -139 KPX Acircumflex Yacute -139 KPX Acircumflex Ydieresis -139 KPX Acircumflex v -50 KPX Acircumflex w -50 KPX Acircumflex y -50 KPX Acircumflex yacute -50 KPX Acircumflex ydieresis -50 KPX Adieresis T -73 KPX Adieresis Tcaron -73 KPX Adieresis Tcommaaccent -73 KPX Adieresis V -127 KPX Adieresis W -96 KPX Adieresis Y -139 KPX Adieresis Yacute -139 KPX Adieresis Ydieresis -139 KPX Adieresis v -50 KPX Adieresis w -50 KPX Adieresis y -50 KPX Adieresis yacute -50 KPX Adieresis ydieresis -50 KPX Agrave T -73 KPX Agrave Tcaron -73 KPX Agrave Tcommaaccent -73 KPX Agrave V -127 KPX Agrave W -96 KPX Agrave Y -139 KPX Agrave Yacute -139 KPX Agrave Ydieresis -139 KPX Agrave v -50 KPX Agrave w -50 KPX Agrave y -50 KPX Agrave yacute -50 KPX Agrave ydieresis -50 KPX Amacron T -73 KPX Amacron Tcaron -73 KPX Amacron Tcommaaccent -73 KPX Amacron V -127 KPX Amacron W -96 KPX Amacron Y -139 KPX Amacron Yacute -139 KPX Amacron Ydieresis -139 KPX Amacron v -50 KPX Amacron w -50 KPX Amacron y -50 KPX Amacron yacute -50 KPX Amacron ydieresis -50 KPX Aogonek T -73 KPX Aogonek Tcaron -73 KPX Aogonek Tcommaaccent -73 KPX Aogonek V -127 KPX Aogonek W -96 KPX Aogonek Y -139 KPX Aogonek Yacute -139 KPX Aogonek Ydieresis -139 KPX Aogonek v -50 KPX Aogonek w -50 KPX Aogonek y -50 KPX Aogonek yacute -50 KPX Aogonek ydieresis -50 KPX Aring T -73 KPX Aring Tcaron -73 KPX Aring Tcommaaccent -73 KPX Aring V -127 KPX Aring W -96 KPX Aring Y -139 KPX Aring Yacute -139 KPX Aring Ydieresis -139 KPX Aring v -50 KPX Aring w -50 KPX Aring y -50 KPX Aring yacute -50 KPX Aring ydieresis -50 KPX Atilde T -73 KPX Atilde Tcaron -73 KPX Atilde Tcommaaccent -73 KPX Atilde V -127 KPX Atilde W -96 KPX Atilde Y -139 KPX Atilde Yacute -139 KPX Atilde Ydieresis -139 KPX Atilde v -50 KPX Atilde w -50 KPX Atilde y -50 KPX Atilde yacute -50 KPX Atilde ydieresis -50 KPX F A -95 KPX F Aacute -95 KPX F Abreve -95 KPX F Acircumflex -95 KPX F Adieresis -95 KPX F Agrave -95 KPX F Amacron -95 KPX F Aogonek -95 KPX F Aring -95 KPX F Atilde -95 KPX F comma -42 KPX F period -42 KPX L T -50 KPX L Tcaron -50 KPX L Tcommaaccent -50 KPX L V -90 KPX L W -90 KPX L Y -90 KPX L Yacute -90 KPX L Ydieresis -90 KPX L y -75 KPX L yacute -75 KPX L ydieresis -75 KPX Lacute T -50 KPX Lacute Tcaron -50 KPX Lacute Tcommaaccent -50 KPX Lacute V -90 KPX Lacute W -90 KPX Lacute Y -90 KPX Lacute Yacute -90 KPX Lacute Ydieresis -90 KPX Lacute y -75 KPX Lacute yacute -75 KPX Lacute ydieresis -75 KPX Lcommaaccent T -50 KPX Lcommaaccent Tcaron -50 KPX Lcommaaccent Tcommaaccent -50 KPX Lcommaaccent V -90 KPX Lcommaaccent W -90 KPX Lcommaaccent Y -90 KPX Lcommaaccent Yacute -90 KPX Lcommaaccent Ydieresis -90 KPX Lcommaaccent y -75 KPX Lcommaaccent yacute -75 KPX Lcommaaccent ydieresis -75 KPX Lslash T -50 KPX Lslash Tcaron -50 KPX Lslash Tcommaaccent -50 KPX Lslash V -90 KPX Lslash W -90 KPX Lslash Y -90 KPX Lslash Yacute -90 KPX Lslash Ydieresis -90 KPX Lslash y -75 KPX Lslash yacute -75 KPX Lslash ydieresis -75 KPX P A -100 KPX P Aacute -100 KPX P Abreve -100 KPX P Acircumflex -100 KPX P Adieresis -100 KPX P Agrave -100 KPX P Amacron -100 KPX P Aogonek -100 KPX P Aring -100 KPX P Atilde -100 KPX P comma -16 KPX P period -16 KPX R T 16 KPX R Tcaron 16 KPX R Tcommaaccent 16 KPX R V -26 KPX R W -20 KPX R Y -20 KPX R Yacute -20 KPX R Ydieresis -20 KPX R y 31 KPX R yacute 31 KPX R ydieresis 31 KPX Racute T 16 KPX Racute Tcaron 16 KPX Racute Tcommaaccent 16 KPX Racute V -26 KPX Racute W -20 KPX Racute Y -20 KPX Racute Yacute -20 KPX Racute Ydieresis -20 KPX Racute y 31 KPX Racute yacute 31 KPX Racute ydieresis 31 KPX Rcaron T 16 KPX Rcaron Tcaron 16 KPX Rcaron Tcommaaccent 16 KPX Rcaron V -26 KPX Rcaron W -20 KPX Rcaron Y -20 KPX Rcaron Yacute -20 KPX Rcaron Ydieresis -20 KPX Rcaron y 31 KPX Rcaron yacute 31 KPX Rcaron ydieresis 31 KPX Rcommaaccent T 16 KPX Rcommaaccent Tcaron 16 KPX Rcommaaccent Tcommaaccent 16 KPX Rcommaaccent V -26 KPX Rcommaaccent W -20 KPX Rcommaaccent Y -20 KPX Rcommaaccent Yacute -20 KPX Rcommaaccent Ydieresis -20 KPX Rcommaaccent y 31 KPX Rcommaaccent yacute 31 KPX Rcommaaccent ydieresis 31 KPX T A -70 KPX T Aacute -70 KPX T Abreve -70 KPX T Acircumflex -70 KPX T Adieresis -70 KPX T Agrave -70 KPX T Amacron -70 KPX T Aogonek -70 KPX T Aring -70 KPX T Atilde -70 KPX T a -40 KPX T aacute -40 KPX T abreve -40 KPX T acircumflex -40 KPX T adieresis -40 KPX T agrave -40 KPX T amacron -40 KPX T aogonek -40 KPX T aring -40 KPX T atilde -40 KPX T c -50 KPX T cacute -50 KPX T ccaron -50 KPX T ccedilla -50 KPX T colon -12 KPX T comma 4 KPX T e -50 KPX T eacute -50 KPX T ecaron -50 KPX T ecircumflex -50 KPX T edieresis -50 KPX T edotaccent -50 KPX T egrave -50 KPX T emacron -50 KPX T eogonek -50 KPX T hyphen -10 KPX T i -5 KPX T iacute 10 KPX T icircumflex 10 KPX T idieresis 10 KPX T igrave 10 KPX T imacron 10 KPX T iogonek -5 KPX T o -50 KPX T oacute -50 KPX T ocircumflex -50 KPX T odieresis -50 KPX T ograve -50 KPX T ohungarumlaut -50 KPX T omacron -50 KPX T oslash -50 KPX T otilde -50 KPX T period 4 KPX T r -42 KPX T rcommaaccent -42 KPX T s -43 KPX T sacute -43 KPX T scedilla -43 KPX T scommaaccent -43 KPX T semicolon -12 KPX T u -56 KPX T uacute -56 KPX T ucircumflex -56 KPX T udieresis -56 KPX T ugrave -56 KPX T uhungarumlaut -56 KPX T umacron -56 KPX T uogonek -56 KPX T uring -56 KPX T w -15 KPX T y -12 KPX T yacute -12 KPX T ydieresis -12 KPX Tcaron A -70 KPX Tcaron Aacute -70 KPX Tcaron Abreve -70 KPX Tcaron Acircumflex -70 KPX Tcaron Adieresis -70 KPX Tcaron Agrave -70 KPX Tcaron Amacron -70 KPX Tcaron Aogonek -70 KPX Tcaron Aring -70 KPX Tcaron Atilde -70 KPX Tcaron a -40 KPX Tcaron aacute -40 KPX Tcaron abreve -40 KPX Tcaron acircumflex -40 KPX Tcaron adieresis -40 KPX Tcaron agrave -40 KPX Tcaron amacron -40 KPX Tcaron aogonek -40 KPX Tcaron aring -40 KPX Tcaron atilde -40 KPX Tcaron c -50 KPX Tcaron cacute -50 KPX Tcaron ccaron -50 KPX Tcaron ccedilla -50 KPX Tcaron colon -12 KPX Tcaron comma 4 KPX Tcaron e -50 KPX Tcaron eacute -50 KPX Tcaron ecaron -50 KPX Tcaron ecircumflex -50 KPX Tcaron edieresis -50 KPX Tcaron edotaccent -50 KPX Tcaron egrave -50 KPX Tcaron emacron -50 KPX Tcaron eogonek -50 KPX Tcaron hyphen -10 KPX Tcaron i -5 KPX Tcaron iacute 10 KPX Tcaron icircumflex 10 KPX Tcaron idieresis 10 KPX Tcaron igrave 10 KPX Tcaron imacron 10 KPX Tcaron iogonek -5 KPX Tcaron o -50 KPX Tcaron oacute -50 KPX Tcaron ocircumflex -50 KPX Tcaron odieresis -50 KPX Tcaron ograve -50 KPX Tcaron ohungarumlaut -50 KPX Tcaron omacron -50 KPX Tcaron oslash -50 KPX Tcaron otilde -50 KPX Tcaron period 4 KPX Tcaron r -42 KPX Tcaron racute -42 KPX Tcaron rcaron -42 KPX Tcaron rcommaaccent -42 KPX Tcaron s -43 KPX Tcaron sacute -43 KPX Tcaron scaron -43 KPX Tcaron scedilla -43 KPX Tcaron scommaaccent -43 KPX Tcaron semicolon -12 KPX Tcaron u -56 KPX Tcaron uacute -56 KPX Tcaron ucircumflex -56 KPX Tcaron udieresis -56 KPX Tcaron ugrave -56 KPX Tcaron uhungarumlaut -56 KPX Tcaron umacron -56 KPX Tcaron uogonek -56 KPX Tcaron uring -56 KPX Tcaron w -15 KPX Tcaron y -12 KPX Tcaron yacute -12 KPX Tcaron ydieresis -12 KPX Tcommaaccent A -70 KPX Tcommaaccent Aacute -70 KPX Tcommaaccent Abreve -70 KPX Tcommaaccent Acircumflex -70 KPX Tcommaaccent Adieresis -70 KPX Tcommaaccent Agrave -70 KPX Tcommaaccent Amacron -70 KPX Tcommaaccent Aogonek -70 KPX Tcommaaccent Aring -70 KPX Tcommaaccent Atilde -70 KPX Tcommaaccent a -40 KPX Tcommaaccent aacute -40 KPX Tcommaaccent abreve -40 KPX Tcommaaccent acircumflex -40 KPX Tcommaaccent adieresis -40 KPX Tcommaaccent agrave -40 KPX Tcommaaccent amacron -40 KPX Tcommaaccent aogonek -40 KPX Tcommaaccent aring -40 KPX Tcommaaccent atilde -40 KPX Tcommaaccent c -50 KPX Tcommaaccent cacute -50 KPX Tcommaaccent ccaron -50 KPX Tcommaaccent ccedilla -50 KPX Tcommaaccent colon -12 KPX Tcommaaccent comma 4 KPX Tcommaaccent e -50 KPX Tcommaaccent eacute -50 KPX Tcommaaccent ecaron -50 KPX Tcommaaccent ecircumflex -50 KPX Tcommaaccent edieresis -50 KPX Tcommaaccent edotaccent -50 KPX Tcommaaccent egrave -50 KPX Tcommaaccent emacron -50 KPX Tcommaaccent eogonek -50 KPX Tcommaaccent hyphen -10 KPX Tcommaaccent i -5 KPX Tcommaaccent iacute 10 KPX Tcommaaccent icircumflex 10 KPX Tcommaaccent idieresis 10 KPX Tcommaaccent igrave 10 KPX Tcommaaccent imacron 10 KPX Tcommaaccent iogonek -5 KPX Tcommaaccent o -50 KPX Tcommaaccent oacute -50 KPX Tcommaaccent ocircumflex -50 KPX Tcommaaccent odieresis -50 KPX Tcommaaccent ograve -50 KPX Tcommaaccent ohungarumlaut -50 KPX Tcommaaccent omacron -50 KPX Tcommaaccent oslash -50 KPX Tcommaaccent otilde -50 KPX Tcommaaccent period 4 KPX Tcommaaccent r -42 KPX Tcommaaccent racute -42 KPX Tcommaaccent rcaron -42 KPX Tcommaaccent rcommaaccent -42 KPX Tcommaaccent s -43 KPX Tcommaaccent sacute -43 KPX Tcommaaccent scaron -43 KPX Tcommaaccent scedilla -43 KPX Tcommaaccent scommaaccent -43 KPX Tcommaaccent semicolon -12 KPX Tcommaaccent u -56 KPX Tcommaaccent uacute -56 KPX Tcommaaccent ucircumflex -56 KPX Tcommaaccent udieresis -56 KPX Tcommaaccent ugrave -56 KPX Tcommaaccent uhungarumlaut -56 KPX Tcommaaccent umacron -56 KPX Tcommaaccent uogonek -56 KPX Tcommaaccent uring -56 KPX Tcommaaccent w -15 KPX Tcommaaccent y -12 KPX Tcommaaccent yacute -12 KPX Tcommaaccent ydieresis -12 KPX V A -125 KPX V Aacute -125 KPX V Abreve -125 KPX V Acircumflex -125 KPX V Adieresis -125 KPX V Agrave -125 KPX V Amacron -125 KPX V Aogonek -125 KPX V Aring -125 KPX V Atilde -125 KPX V a -80 KPX V aacute -80 KPX V abreve -80 KPX V acircumflex -80 KPX V adieresis -80 KPX V agrave -80 KPX V amacron -80 KPX V aogonek -80 KPX V aring -80 KPX V atilde -80 KPX V colon -13 KPX V comma -13 KPX V e -80 KPX V eacute -80 KPX V ecaron -80 KPX V ecircumflex -80 KPX V edieresis -80 KPX V edotaccent -80 KPX V egrave -80 KPX V emacron -80 KPX V eogonek -80 KPX V hyphen -20 KPX V i -9 KPX V iacute -9 KPX V iogonek -9 KPX V o -80 KPX V oacute -80 KPX V ocircumflex -80 KPX V odieresis -80 KPX V ograve -80 KPX V ohungarumlaut -80 KPX V omacron -80 KPX V oslash -80 KPX V otilde -80 KPX V period -13 KPX V r -40 KPX V racute -40 KPX V rcaron -40 KPX V rcommaaccent -40 KPX V semicolon -13 KPX V u -68 KPX V uacute -68 KPX V ucircumflex -68 KPX V udieresis -68 KPX V ugrave -68 KPX V uhungarumlaut -68 KPX V umacron -68 KPX V uogonek -68 KPX V uring -68 KPX V y -15 KPX V yacute -15 KPX V ydieresis -15 KPX W A -94 KPX W Aacute -94 KPX W Abreve -94 KPX W Acircumflex -94 KPX W Adieresis -94 KPX W Agrave -94 KPX W Amacron -94 KPX W Aogonek -94 KPX W Aring -94 KPX W Atilde -94 KPX W a -50 KPX W aacute -50 KPX W abreve -50 KPX W acircumflex -50 KPX W adieresis -50 KPX W agrave -50 KPX W amacron -50 KPX W aogonek -50 KPX W aring -50 KPX W atilde -50 KPX W colon -12 KPX W comma -12 KPX W e -50 KPX W eacute -50 KPX W ecaron -50 KPX W ecircumflex -50 KPX W edieresis -50 KPX W edotaccent -50 KPX W egrave -50 KPX W emacron -50 KPX W eogonek -50 KPX W hyphen -10 KPX W i -7 KPX W iacute 10 KPX W icircumflex 10 KPX W idieresis 10 KPX W igrave 10 KPX W imacron 10 KPX W iogonek -7 KPX W o -50 KPX W oacute -50 KPX W ocircumflex -50 KPX W odieresis -50 KPX W ograve -50 KPX W ohungarumlaut -50 KPX W omacron -50 KPX W oslash -50 KPX W otilde -50 KPX W period -12 KPX W r -39 KPX W racute -39 KPX W rcommaaccent -39 KPX W semicolon -12 KPX W u -40 KPX W uacute -40 KPX W ucircumflex -40 KPX W udieresis -40 KPX W ugrave -40 KPX W uhungarumlaut -40 KPX W umacron -40 KPX W uogonek -40 KPX W uring -40 KPX W y 1 KPX W yacute 1 KPX W ydieresis 1 KPX Y A -138 KPX Y Aacute -138 KPX Y Abreve -138 KPX Y Acircumflex -138 KPX Y Adieresis -138 KPX Y Agrave -138 KPX Y Amacron -138 KPX Y Aogonek -138 KPX Y Aring -138 KPX Y Atilde -138 KPX Y a -100 KPX Y aacute -100 KPX Y abreve -100 KPX Y acircumflex -100 KPX Y adieresis -100 KPX Y agrave -100 KPX Y amacron -100 KPX Y aogonek -100 KPX Y aring -100 KPX Y atilde -100 KPX Y colon -8 KPX Y comma -8 KPX Y e -100 KPX Y eacute -100 KPX Y ecaron -100 KPX Y ecircumflex -100 KPX Y edieresis -100 KPX Y edotaccent -100 KPX Y egrave -100 KPX Y emacron -100 KPX Y eogonek -100 KPX Y hyphen -60 KPX Y i -5 KPX Y iacute -5 KPX Y icircumflex 10 KPX Y idieresis 10 KPX Y igrave 10 KPX Y imacron 10 KPX Y iogonek -5 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -100 KPX Y ograve -100 KPX Y ohungarumlaut -100 KPX Y omacron -100 KPX Y oslash -100 KPX Y otilde -100 KPX Y p -60 KPX Y period -8 KPX Y q -100 KPX Y semicolon -8 KPX Y u -82 KPX Y uacute -82 KPX Y ucircumflex -82 KPX Y udieresis -82 KPX Y ugrave -82 KPX Y uhungarumlaut -82 KPX Y umacron -82 KPX Y uogonek -82 KPX Y uring -82 KPX Y v -25 KPX Yacute A -138 KPX Yacute Aacute -138 KPX Yacute Abreve -138 KPX Yacute Acircumflex -138 KPX Yacute Adieresis -138 KPX Yacute Agrave -138 KPX Yacute Amacron -138 KPX Yacute Aogonek -138 KPX Yacute Aring -138 KPX Yacute Atilde -138 KPX Yacute a -100 KPX Yacute aacute -100 KPX Yacute abreve -100 KPX Yacute acircumflex -100 KPX Yacute adieresis -100 KPX Yacute agrave -100 KPX Yacute amacron -100 KPX Yacute aogonek -100 KPX Yacute aring -100 KPX Yacute atilde -100 KPX Yacute colon -8 KPX Yacute comma -8 KPX Yacute e -100 KPX Yacute eacute -100 KPX Yacute ecaron -100 KPX Yacute ecircumflex -100 KPX Yacute edieresis -100 KPX Yacute edotaccent -100 KPX Yacute egrave -100 KPX Yacute emacron -100 KPX Yacute eogonek -100 KPX Yacute hyphen -60 KPX Yacute i -5 KPX Yacute iacute -5 KPX Yacute icircumflex 10 KPX Yacute idieresis 10 KPX Yacute igrave 10 KPX Yacute imacron 10 KPX Yacute iogonek -5 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -100 KPX Yacute ograve -100 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -100 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute p -60 KPX Yacute period -8 KPX Yacute q -100 KPX Yacute semicolon -8 KPX Yacute u -82 KPX Yacute uacute -82 KPX Yacute ucircumflex -82 KPX Yacute udieresis -82 KPX Yacute ugrave -82 KPX Yacute uhungarumlaut -82 KPX Yacute umacron -82 KPX Yacute uogonek -82 KPX Yacute uring -82 KPX Yacute v -25 KPX Ydieresis A -138 KPX Ydieresis Aacute -138 KPX Ydieresis Abreve -138 KPX Ydieresis Acircumflex -138 KPX Ydieresis Adieresis -138 KPX Ydieresis Agrave -138 KPX Ydieresis Amacron -138 KPX Ydieresis Aogonek -138 KPX Ydieresis Aring -138 KPX Ydieresis Atilde -138 KPX Ydieresis a -100 KPX Ydieresis aacute -100 KPX Ydieresis abreve -100 KPX Ydieresis acircumflex -100 KPX Ydieresis adieresis -100 KPX Ydieresis agrave -100 KPX Ydieresis amacron -100 KPX Ydieresis aogonek -100 KPX Ydieresis aring -100 KPX Ydieresis atilde -100 KPX Ydieresis colon -8 KPX Ydieresis comma -8 KPX Ydieresis e -100 KPX Ydieresis eacute -100 KPX Ydieresis ecaron -100 KPX Ydieresis ecircumflex -100 KPX Ydieresis edieresis -100 KPX Ydieresis edotaccent -100 KPX Ydieresis egrave -100 KPX Ydieresis emacron -100 KPX Ydieresis eogonek -100 KPX Ydieresis hyphen -60 KPX Ydieresis i -5 KPX Ydieresis iacute -5 KPX Ydieresis icircumflex 10 KPX Ydieresis idieresis 10 KPX Ydieresis igrave 10 KPX Ydieresis imacron 10 KPX Ydieresis iogonek -5 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -100 KPX Ydieresis ograve -100 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -100 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis p -60 KPX Ydieresis period -8 KPX Ydieresis q -100 KPX Ydieresis semicolon -8 KPX Ydieresis u -82 KPX Ydieresis uacute -82 KPX Ydieresis ucircumflex -82 KPX Ydieresis udieresis -82 KPX Ydieresis ugrave -82 KPX Ydieresis uhungarumlaut -82 KPX Ydieresis umacron -82 KPX Ydieresis uogonek -82 KPX Ydieresis uring -82 KPX Ydieresis v -25 KPX f f 38 KPX r c -27 KPX r cacute -27 KPX r ccaron -27 KPX r ccedilla -27 KPX r comma 9 KPX r d -8 KPX r dcroat -8 KPX r e -8 KPX r eacute -8 KPX r ecaron -8 KPX r ecircumflex -8 KPX r edieresis -8 KPX r edotaccent -8 KPX r egrave -8 KPX r emacron -8 KPX r eogonek -8 KPX r f 38 KPX r g -8 KPX r gbreve -8 KPX r gcommaaccent -8 KPX r hyphen -10 KPX r m 5 KPX r n 5 KPX r nacute 5 KPX r ncaron 5 KPX r ncommaaccent 5 KPX r ntilde 5 KPX r o -18 KPX r oacute -18 KPX r ocircumflex -18 KPX r odieresis -18 KPX r ograve -18 KPX r ohungarumlaut -18 KPX r omacron -18 KPX r oslash -18 KPX r otilde -18 KPX r period 9 KPX r q -18 KPX racute c -27 KPX racute cacute -27 KPX racute ccaron -27 KPX racute ccedilla -27 KPX racute comma 9 KPX racute d -8 KPX racute dcroat -8 KPX racute e -8 KPX racute eacute -8 KPX racute ecaron -8 KPX racute ecircumflex -8 KPX racute edieresis -8 KPX racute edotaccent -8 KPX racute egrave -8 KPX racute emacron -8 KPX racute eogonek -8 KPX racute f 38 KPX racute g -8 KPX racute gbreve -8 KPX racute gcommaaccent -8 KPX racute hyphen -10 KPX racute m 5 KPX racute n 5 KPX racute nacute 5 KPX racute ncaron 5 KPX racute ncommaaccent 5 KPX racute ntilde 5 KPX racute o -18 KPX racute oacute -18 KPX racute ocircumflex -18 KPX racute odieresis -18 KPX racute ograve -18 KPX racute ohungarumlaut -18 KPX racute omacron -18 KPX racute oslash -18 KPX racute otilde -18 KPX racute period 9 KPX racute q -18 KPX rcaron c -27 KPX rcaron cacute -27 KPX rcaron ccaron -27 KPX rcaron ccedilla -27 KPX rcaron comma 9 KPX rcaron d -8 KPX rcaron dcroat -8 KPX rcaron e -8 KPX rcaron eacute -8 KPX rcaron ecaron -8 KPX rcaron ecircumflex -8 KPX rcaron edieresis -8 KPX rcaron edotaccent -8 KPX rcaron egrave -8 KPX rcaron emacron -8 KPX rcaron eogonek -8 KPX rcaron f 38 KPX rcaron g -8 KPX rcaron gbreve -8 KPX rcaron gcommaaccent -8 KPX rcaron hyphen -10 KPX rcaron m 5 KPX rcaron n 5 KPX rcaron nacute 5 KPX rcaron ncaron 5 KPX rcaron ncommaaccent 5 KPX rcaron ntilde 5 KPX rcaron o -18 KPX rcaron oacute -18 KPX rcaron ocircumflex -18 KPX rcaron odieresis -18 KPX rcaron ograve -18 KPX rcaron ohungarumlaut -18 KPX rcaron omacron -18 KPX rcaron oslash -18 KPX rcaron otilde -18 KPX rcaron period 9 KPX rcaron q -18 KPX rcommaaccent c -27 KPX rcommaaccent cacute -27 KPX rcommaaccent ccaron -27 KPX rcommaaccent ccedilla -27 KPX rcommaaccent comma 9 KPX rcommaaccent d -8 KPX rcommaaccent dcroat -8 KPX rcommaaccent e -8 KPX rcommaaccent eacute -8 KPX rcommaaccent ecaron -8 KPX rcommaaccent ecircumflex -8 KPX rcommaaccent edieresis -8 KPX rcommaaccent edotaccent -8 KPX rcommaaccent egrave -8 KPX rcommaaccent emacron -8 KPX rcommaaccent eogonek -8 KPX rcommaaccent f 38 KPX rcommaaccent g -8 KPX rcommaaccent gbreve -8 KPX rcommaaccent gcommaaccent -8 KPX rcommaaccent hyphen -10 KPX rcommaaccent m 5 KPX rcommaaccent n 5 KPX rcommaaccent nacute 5 KPX rcommaaccent ncaron 5 KPX rcommaaccent ncommaaccent 5 KPX rcommaaccent ntilde 5 KPX rcommaaccent o -18 KPX rcommaaccent oacute -18 KPX rcommaaccent ocircumflex -18 KPX rcommaaccent odieresis -18 KPX rcommaaccent ograve -18 KPX rcommaaccent ohungarumlaut -18 KPX rcommaaccent omacron -18 KPX rcommaaccent oslash -18 KPX rcommaaccent otilde -18 KPX rcommaaccent period 9 KPX rcommaaccent q -18 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Bookman-DemiItalic.afm0000644000222100022210000011024214541067540016753 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:56:49 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43080 Comment VMusage 43194 54219 FontName Bookman-DemiItalic FullName ITC Bookman Demi Italic FamilyName ITC Bookman Weight Demi ItalicAngle -10 IsFixedPitch false FontBBox -231 -250 1333 941 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 681 XHeight 515 Ascender 717 Descender -228 StdHW 82 StdVW 172 StartCharMetrics 359 C 32 ; WX 340 ; N space ; B 0 0 0 0 ; C 33 ; WX 320 ; N exclam ; B 86 -8 366 698 ; C 34 ; WX 380 ; N quotedbl ; B 140 371 507 697 ; C 35 ; WX 680 ; N numbersign ; B 157 0 649 681 ; C 36 ; WX 680 ; N dollar ; B 45 -164 697 790 ; C 37 ; WX 880 ; N percent ; B 106 -17 899 698 ; C 38 ; WX 980 ; N ampersand ; B 48 -17 1016 698 ; C 39 ; WX 320 ; N quoteright ; B 171 420 349 698 ; C 40 ; WX 260 ; N parenleft ; B 31 -134 388 741 ; C 41 ; WX 260 ; N parenright ; B -35 -134 322 741 ; C 42 ; WX 460 ; N asterisk ; B 126 346 508 698 ; C 43 ; WX 600 ; N plus ; B 91 9 595 514 ; C 44 ; WX 340 ; N comma ; B 100 -124 298 185 ; C 45 ; WX 280 ; N hyphen ; B 59 218 319 313 ; C 46 ; WX 340 ; N period ; B 106 -8 296 177 ; C 47 ; WX 360 ; N slash ; B 9 -106 502 742 ; C 48 ; WX 680 ; N zero ; B 87 -17 703 698 ; C 49 ; WX 680 ; N one ; B 123 0 565 681 ; C 50 ; WX 680 ; N two ; B 67 0 674 698 ; C 51 ; WX 680 ; N three ; B 72 -17 683 698 ; C 52 ; WX 680 ; N four ; B 63 0 708 681 ; C 53 ; WX 680 ; N five ; B 78 -17 669 681 ; C 54 ; WX 680 ; N six ; B 88 -17 704 698 ; C 55 ; WX 680 ; N seven ; B 123 0 739 681 ; C 56 ; WX 680 ; N eight ; B 68 -17 686 698 ; C 57 ; WX 680 ; N nine ; B 71 -17 712 698 ; C 58 ; WX 340 ; N colon ; B 106 -8 356 515 ; C 59 ; WX 340 ; N semicolon ; B 100 -124 352 515 ; C 60 ; WX 620 ; N less ; B 79 -9 588 540 ; C 61 ; WX 600 ; N equal ; B 91 109 595 421 ; C 62 ; WX 620 ; N greater ; B 89 -9 598 540 ; C 63 ; WX 620 ; N question ; B 145 -8 668 698 ; C 64 ; WX 780 ; N at ; B 80 -17 790 698 ; C 65 ; WX 720 ; N A ; B -27 0 769 681 ; C 66 ; WX 720 ; N B ; B 14 0 762 681 ; C 67 ; WX 700 ; N C ; B 78 -17 754 698 ; C 68 ; WX 760 ; N D ; B 14 0 805 681 ; C 69 ; WX 720 ; N E ; B 14 0 777 681 ; C 70 ; WX 660 ; N F ; B 14 0 763 681 ; C 71 ; WX 760 ; N G ; B 77 -17 828 698 ; C 72 ; WX 800 ; N H ; B 14 0 910 681 ; C 73 ; WX 380 ; N I ; B 14 0 485 681 ; C 74 ; WX 620 ; N J ; B 8 -17 721 681 ; C 75 ; WX 780 ; N K ; B 14 0 879 681 ; C 76 ; WX 640 ; N L ; B 14 0 725 681 ; C 77 ; WX 860 ; N M ; B 14 0 970 681 ; C 78 ; WX 740 ; N N ; B 14 0 845 681 ; C 79 ; WX 760 ; N O ; B 78 -17 806 698 ; C 80 ; WX 640 ; N P ; B -6 0 724 681 ; C 81 ; WX 760 ; N Q ; B 37 -213 805 698 ; C 82 ; WX 740 ; N R ; B 14 0 765 681 ; C 83 ; WX 700 ; N S ; B 59 -17 731 698 ; C 84 ; WX 700 ; N T ; B 70 0 802 681 ; C 85 ; WX 740 ; N U ; B 112 -17 855 681 ; C 86 ; WX 660 ; N V ; B 72 0 819 681 ; C 87 ; WX 1000 ; N W ; B 72 0 1090 681 ; C 88 ; WX 740 ; N X ; B -7 0 835 681 ; C 89 ; WX 660 ; N Y ; B 72 0 817 681 ; C 90 ; WX 680 ; N Z ; B 23 0 740 681 ; C 91 ; WX 260 ; N bracketleft ; B 9 -118 374 741 ; C 92 ; WX 580 ; N backslash ; B 73 0 575 741 ; C 93 ; WX 260 ; N bracketright ; B -18 -118 347 741 ; C 94 ; WX 620 ; N asciicircum ; B 92 281 594 681 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 320 ; N quoteleft ; B 155 420 333 698 ; C 97 ; WX 680 ; N a ; B 84 -8 735 515 ; C 98 ; WX 600 ; N b ; B 57 -8 633 732 ; C 99 ; WX 560 ; N c ; B 58 -8 597 515 ; C 100 ; WX 680 ; N d ; B 60 -8 714 732 ; C 101 ; WX 560 ; N e ; B 59 -8 596 515 ; C 102 ; WX 420 ; N f ; B -192 -213 641 741 ; L i fi ; L l fl ; C 103 ; WX 620 ; N g ; B 21 -213 669 515 ; C 104 ; WX 700 ; N h ; B 93 -8 736 732 ; C 105 ; WX 380 ; N i ; B 83 -8 420 755 ; C 106 ; WX 320 ; N j ; B -160 -213 392 755 ; C 107 ; WX 700 ; N k ; B 97 -8 732 732 ; C 108 ; WX 380 ; N l ; B 109 -8 410 732 ; C 109 ; WX 960 ; N m ; B 83 -8 996 515 ; C 110 ; WX 680 ; N n ; B 83 -8 715 515 ; C 111 ; WX 600 ; N o ; B 59 -8 627 515 ; C 112 ; WX 660 ; N p ; B -24 -213 682 515 ; C 113 ; WX 620 ; N q ; B 60 -213 640 515 ; C 114 ; WX 500 ; N r ; B 84 0 582 515 ; C 115 ; WX 540 ; N s ; B 32 -8 573 515 ; C 116 ; WX 440 ; N t ; B 106 -8 488 658 ; C 117 ; WX 680 ; N u ; B 83 -8 720 507 ; C 118 ; WX 540 ; N v ; B 56 -8 572 515 ; C 119 ; WX 860 ; N w ; B 56 -8 891 515 ; C 120 ; WX 620 ; N x ; B 10 -8 654 515 ; C 121 ; WX 600 ; N y ; B 25 -213 642 507 ; C 122 ; WX 560 ; N z ; B 36 -8 586 515 ; C 123 ; WX 300 ; N braceleft ; B 49 -123 413 742 ; C 124 ; WX 620 ; N bar ; B 303 -250 422 750 ; C 125 ; WX 300 ; N braceright ; B -8 -114 356 751 ; C 126 ; WX 620 ; N asciitilde ; B 101 162 605 368 ; C 160 ; WX 340 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 320 ; N exclamdown ; B 64 -191 344 515 ; C 162 ; WX 680 ; N cent ; B 161 25 616 718 ; C 163 ; WX 680 ; N sterling ; B 0 -17 787 698 ; C 164 ; WX 120 ; N fraction ; B -144 0 382 681 ; C 165 ; WX 680 ; N yen ; B 92 0 782 681 ; C 166 ; WX 680 ; N florin ; B -28 -199 743 741 ; C 167 ; WX 620 ; N section ; B 46 -137 638 698 ; C 168 ; WX 680 ; N currency ; B 148 85 637 571 ; C 169 ; WX 180 ; N quotesingle ; B 126 370 295 696 ; C 170 ; WX 520 ; N quotedblleft ; B 156 420 545 698 ; C 171 ; WX 380 ; N guillemotleft ; B 62 84 406 503 ; C 172 ; WX 220 ; N guilsinglleft ; B 62 84 249 503 ; C 173 ; WX 220 ; N guilsinglright ; B 62 84 249 503 ; C 174 ; WX 820 ; N fi ; B -191 -213 850 741 ; C 175 ; WX 820 ; N fl ; B -191 -213 850 741 ; C 177 ; WX 500 ; N endash ; B 40 219 573 311 ; C 178 ; WX 420 ; N dagger ; B 89 -137 466 698 ; C 179 ; WX 420 ; N daggerdbl ; B 79 -137 486 698 ; C 180 ; WX 340 ; N periodcentered ; B 126 173 316 358 ; C 182 ; WX 680 ; N paragraph ; B 137 0 715 681 ; C 183 ; WX 360 ; N bullet ; B 60 170 404 511 ; C 184 ; WX 300 ; N quotesinglbase ; B 106 -112 284 166 ; C 185 ; WX 520 ; N quotedblbase ; B 106 -112 495 166 ; C 186 ; WX 520 ; N quotedblright ; B 171 420 560 698 ; C 187 ; WX 380 ; N guillemotright ; B 62 84 406 503 ; C 188 ; WX 1000 ; N ellipsis ; B 86 -8 942 177 ; C 189 ; WX 1360 ; N perthousand ; B 106 -17 1333 698 ; C 191 ; WX 620 ; N questiondown ; B 83 -189 606 515 ; C 193 ; WX 380 ; N grave ; B 193 566 424 771 ; C 194 ; WX 340 ; N acute ; B 176 566 407 771 ; C 195 ; WX 480 ; N circumflex ; B 183 582 523 749 ; C 196 ; WX 480 ; N tilde ; B 178 587 533 709 ; C 197 ; WX 480 ; N macron ; B 177 603 531 691 ; C 198 ; WX 460 ; N breve ; B 177 577 516 707 ; C 199 ; WX 380 ; N dotaccent ; B 167 563 365 755 ; C 200 ; WX 520 ; N dieresis ; B 180 563 569 727 ; C 202 ; WX 360 ; N ring ; B 185 558 406 775 ; C 203 ; WX 360 ; N cedilla ; B 68 -220 289 -8 ; C 205 ; WX 560 ; N hungarumlaut ; B 181 560 616 775 ; C 206 ; WX 320 ; N ogonek ; B 58 -199 293 0 ; C 207 ; WX 480 ; N caron ; B 183 582 523 749 ; C 208 ; WX 1000 ; N emdash ; B 40 219 1073 311 ; C 225 ; WX 1140 ; N AE ; B -27 0 1207 681 ; C 227 ; WX 440 ; N ordfeminine ; B 118 400 495 685 ; C 232 ; WX 640 ; N Lslash ; B 14 0 724 681 ; C 233 ; WX 760 ; N Oslash ; B 21 -29 847 725 ; C 234 ; WX 1180 ; N OE ; B 94 -17 1245 698 ; C 235 ; WX 440 ; N ordmasculine ; B 127 400 455 685 ; C 241 ; WX 880 ; N ae ; B 39 -8 913 515 ; C 245 ; WX 380 ; N dotlessi ; B 83 -8 420 507 ; C 248 ; WX 380 ; N lslash ; B 75 -8 424 732 ; C 249 ; WX 600 ; N oslash ; B 17 -54 661 571 ; C 250 ; WX 920 ; N oe ; B 48 -8 961 515 ; C 251 ; WX 660 ; N germandbls ; B -231 -213 702 741 ; C -1 ; WX 380 ; N Idieresis ; B 14 0 499 900 ; C -1 ; WX 560 ; N eacute ; B 59 -8 596 771 ; C -1 ; WX 680 ; N abreve ; B 84 -8 735 707 ; C -1 ; WX 680 ; N uhungarumlaut ; B 83 -8 720 775 ; C -1 ; WX 560 ; N ecaron ; B 59 -8 596 749 ; C -1 ; WX 660 ; N Ydieresis ; B 72 0 817 900 ; C -1 ; WX 600 ; N divide ; B 91 9 595 521 ; C -1 ; WX 660 ; N Yacute ; B 72 0 817 937 ; C -1 ; WX 720 ; N Acircumflex ; B -27 0 769 915 ; C -1 ; WX 680 ; N aacute ; B 84 -8 735 771 ; C -1 ; WX 740 ; N Ucircumflex ; B 112 -17 855 915 ; C -1 ; WX 600 ; N yacute ; B 25 -213 642 771 ; C -1 ; WX 540 ; N scommaaccent ; B 32 -250 573 515 ; C -1 ; WX 560 ; N ecircumflex ; B 59 -8 596 749 ; C -1 ; WX 740 ; N Uring ; B 112 -17 855 941 ; C -1 ; WX 740 ; N Udieresis ; B 112 -17 855 900 ; C -1 ; WX 680 ; N aogonek ; B 84 -199 735 515 ; C -1 ; WX 740 ; N Uacute ; B 112 -17 855 937 ; C -1 ; WX 680 ; N uogonek ; B 83 -199 720 507 ; C -1 ; WX 720 ; N Edieresis ; B 14 0 777 900 ; C -1 ; WX 760 ; N Dcroat ; B 14 0 805 681 ; C -1 ; WX 250 ; N commaaccent ; B 55 -250 199 -50 ; C -1 ; WX 780 ; N copyright ; B 83 -17 783 698 ; C -1 ; WX 720 ; N Emacron ; B 14 0 777 857 ; C -1 ; WX 560 ; N ccaron ; B 58 -8 597 749 ; C -1 ; WX 680 ; N aring ; B 84 -8 735 775 ; C -1 ; WX 740 ; N Ncommaaccent ; B 14 -250 845 681 ; C -1 ; WX 380 ; N lacute ; B 109 -8 466 940 ; C -1 ; WX 680 ; N agrave ; B 84 -8 735 771 ; C -1 ; WX 700 ; N Tcommaaccent ; B 70 -250 802 681 ; C -1 ; WX 700 ; N Cacute ; B 78 -17 754 937 ; C -1 ; WX 680 ; N atilde ; B 84 -8 735 709 ; C -1 ; WX 720 ; N Edotaccent ; B 14 0 777 928 ; C -1 ; WX 540 ; N scaron ; B 32 -8 573 749 ; C -1 ; WX 540 ; N scedilla ; B 32 -220 573 515 ; C -1 ; WX 380 ; N iacute ; B 83 -8 420 771 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 740 ; N Rcaron ; B 14 0 765 915 ; C -1 ; WX 760 ; N Gcommaaccent ; B 77 -250 828 698 ; C -1 ; WX 680 ; N ucircumflex ; B 83 -8 720 749 ; C -1 ; WX 680 ; N acircumflex ; B 84 -8 735 749 ; C -1 ; WX 720 ; N Amacron ; B -27 0 769 857 ; C -1 ; WX 500 ; N rcaron ; B 84 0 582 749 ; C -1 ; WX 560 ; N ccedilla ; B 58 -220 597 515 ; C -1 ; WX 680 ; N Zdotaccent ; B 23 0 740 928 ; C -1 ; WX 640 ; N Thorn ; B -6 0 701 681 ; C -1 ; WX 760 ; N Omacron ; B 78 -17 806 857 ; C -1 ; WX 740 ; N Racute ; B 14 0 765 937 ; C -1 ; WX 700 ; N Sacute ; B 59 -17 731 937 ; C -1 ; WX 755 ; N dcaron ; B 60 -8 874 738 ; C -1 ; WX 740 ; N Umacron ; B 112 -17 855 857 ; C -1 ; WX 680 ; N uring ; B 83 -8 720 775 ; C -1 ; WX 408 ; N threesuperior ; B 86 269 483 698 ; C -1 ; WX 760 ; N Ograve ; B 78 -17 806 937 ; C -1 ; WX 720 ; N Agrave ; B -27 0 769 937 ; C -1 ; WX 720 ; N Abreve ; B -27 0 769 873 ; C -1 ; WX 600 ; N multiply ; B 91 10 595 514 ; C -1 ; WX 680 ; N uacute ; B 83 -8 720 771 ; C -1 ; WX 700 ; N Tcaron ; B 70 0 802 915 ; C -1 ; WX 505 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 600 ; N ydieresis ; B 25 -213 642 734 ; C -1 ; WX 740 ; N Nacute ; B 14 0 845 937 ; C -1 ; WX 380 ; N icircumflex ; B 83 -8 433 749 ; C -1 ; WX 720 ; N Ecircumflex ; B 14 0 777 915 ; C -1 ; WX 680 ; N adieresis ; B 84 -8 735 734 ; C -1 ; WX 560 ; N edieresis ; B 59 -8 596 734 ; C -1 ; WX 560 ; N cacute ; B 58 -8 597 771 ; C -1 ; WX 680 ; N nacute ; B 83 -8 715 771 ; C -1 ; WX 680 ; N umacron ; B 83 -8 720 691 ; C -1 ; WX 740 ; N Ncaron ; B 14 0 845 915 ; C -1 ; WX 380 ; N Iacute ; B 14 0 487 937 ; C -1 ; WX 600 ; N plusminus ; B 91 0 595 514 ; C -1 ; WX 620 ; N brokenbar ; B 303 -175 422 675 ; C -1 ; WX 780 ; N registered ; B 83 -17 783 698 ; C -1 ; WX 760 ; N Gbreve ; B 77 -17 828 873 ; C -1 ; WX 380 ; N Idotaccent ; B 14 0 485 928 ; C -1 ; WX 599 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 720 ; N Egrave ; B 14 0 777 937 ; C -1 ; WX 500 ; N racute ; B 84 0 582 771 ; C -1 ; WX 600 ; N omacron ; B 59 -8 627 691 ; C -1 ; WX 680 ; N Zacute ; B 23 0 740 937 ; C -1 ; WX 680 ; N Zcaron ; B 23 0 740 915 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 760 ; N Eth ; B 14 0 805 681 ; C -1 ; WX 700 ; N Ccedilla ; B 78 -220 754 698 ; C -1 ; WX 380 ; N lcommaaccent ; B 109 -250 410 732 ; C -1 ; WX 450 ; N tcaron ; B 106 -8 571 798 ; C -1 ; WX 560 ; N eogonek ; B 59 -199 596 515 ; C -1 ; WX 740 ; N Uogonek ; B 112 -199 855 681 ; C -1 ; WX 720 ; N Aacute ; B -27 0 769 937 ; C -1 ; WX 720 ; N Adieresis ; B -27 0 769 900 ; C -1 ; WX 560 ; N egrave ; B 59 -8 596 771 ; C -1 ; WX 560 ; N zacute ; B 36 -8 586 771 ; C -1 ; WX 380 ; N iogonek ; B 83 -199 420 755 ; C -1 ; WX 760 ; N Oacute ; B 78 -17 806 937 ; C -1 ; WX 600 ; N oacute ; B 59 -8 627 771 ; C -1 ; WX 680 ; N amacron ; B 84 -8 735 691 ; C -1 ; WX 540 ; N sacute ; B 32 -8 573 771 ; C -1 ; WX 380 ; N idieresis ; B 83 -8 479 734 ; C -1 ; WX 760 ; N Ocircumflex ; B 78 -17 806 915 ; C -1 ; WX 740 ; N Ugrave ; B 112 -17 855 937 ; C -1 ; WX 614 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 660 ; N thorn ; B -24 -213 682 732 ; C -1 ; WX 408 ; N twosuperior ; B 91 279 485 698 ; C -1 ; WX 760 ; N Odieresis ; B 78 -17 806 900 ; C -1 ; WX 680 ; N mu ; B 54 -213 720 507 ; C -1 ; WX 380 ; N igrave ; B 83 -8 420 771 ; C -1 ; WX 600 ; N ohungarumlaut ; B 59 -8 636 775 ; C -1 ; WX 720 ; N Eogonek ; B 14 -199 777 681 ; C -1 ; WX 680 ; N dcroat ; B 60 -8 748 732 ; C -1 ; WX 1020 ; N threequarters ; B 86 0 1054 691 ; C -1 ; WX 700 ; N Scedilla ; B 59 -220 731 698 ; C -1 ; WX 463 ; N lcaron ; B 109 -8 573 738 ; C -1 ; WX 780 ; N Kcommaaccent ; B 14 -250 879 681 ; C -1 ; WX 640 ; N Lacute ; B 14 0 725 937 ; C -1 ; WX 940 ; N trademark ; B 42 277 982 681 ; C -1 ; WX 560 ; N edotaccent ; B 59 -8 596 762 ; C -1 ; WX 380 ; N Igrave ; B 14 0 485 937 ; C -1 ; WX 380 ; N Imacron ; B 14 0 485 857 ; C -1 ; WX 640 ; N Lcaron ; B 14 0 725 698 ; C -1 ; WX 1020 ; N onehalf ; B 118 0 1036 681 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 600 ; N ocircumflex ; B 59 -8 627 749 ; C -1 ; WX 680 ; N ntilde ; B 83 -8 715 709 ; C -1 ; WX 740 ; N Uhungarumlaut ; B 112 -17 855 941 ; C -1 ; WX 720 ; N Eacute ; B 14 0 777 937 ; C -1 ; WX 560 ; N emacron ; B 59 -8 596 691 ; C -1 ; WX 620 ; N gbreve ; B 21 -213 669 707 ; C -1 ; WX 1020 ; N onequarter ; B 118 0 1054 681 ; C -1 ; WX 700 ; N Scaron ; B 59 -17 731 915 ; C -1 ; WX 700 ; N Scommaaccent ; B 59 -250 731 698 ; C -1 ; WX 760 ; N Ohungarumlaut ; B 78 -17 806 941 ; C -1 ; WX 400 ; N degree ; B 130 398 430 698 ; C -1 ; WX 600 ; N ograve ; B 59 -8 627 771 ; C -1 ; WX 700 ; N Ccaron ; B 78 -17 754 915 ; C -1 ; WX 680 ; N ugrave ; B 83 -8 720 771 ; C -1 ; WX 522 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 760 ; N Dcaron ; B 14 0 805 915 ; C -1 ; WX 500 ; N rcommaaccent ; B 80 -250 582 515 ; C -1 ; WX 740 ; N Ntilde ; B 14 0 845 875 ; C -1 ; WX 600 ; N otilde ; B 59 -8 627 709 ; C -1 ; WX 740 ; N Rcommaaccent ; B 14 -250 765 681 ; C -1 ; WX 640 ; N Lcommaaccent ; B 14 -250 725 681 ; C -1 ; WX 720 ; N Atilde ; B -27 0 769 875 ; C -1 ; WX 720 ; N Aogonek ; B -27 -199 789 681 ; C -1 ; WX 720 ; N Aring ; B -27 0 769 941 ; C -1 ; WX 760 ; N Otilde ; B 78 -17 806 875 ; C -1 ; WX 560 ; N zdotaccent ; B 36 -8 586 762 ; C -1 ; WX 720 ; N Ecaron ; B 14 0 777 915 ; C -1 ; WX 380 ; N Iogonek ; B 14 -199 485 681 ; C -1 ; WX 700 ; N kcommaaccent ; B 97 -250 732 732 ; C -1 ; WX 600 ; N minus ; B 91 207 595 323 ; C -1 ; WX 380 ; N Icircumflex ; B 14 0 493 915 ; C -1 ; WX 680 ; N ncaron ; B 83 -8 715 749 ; C -1 ; WX 440 ; N tcommaaccent ; B 106 -250 488 658 ; C -1 ; WX 620 ; N logicalnot ; B 81 129 585 421 ; C -1 ; WX 600 ; N odieresis ; B 59 -8 627 734 ; C -1 ; WX 680 ; N udieresis ; B 83 -8 720 734 ; C -1 ; WX 555 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 620 ; N gcommaaccent ; B 21 -213 669 827 ; C -1 ; WX 600 ; N eth ; B 59 -8 662 741 ; C -1 ; WX 560 ; N zcaron ; B 36 -8 586 749 ; C -1 ; WX 680 ; N ncommaaccent ; B 83 -250 715 515 ; C -1 ; WX 408 ; N onesuperior ; B 118 279 406 688 ; C -1 ; WX 380 ; N imacron ; B 83 -8 461 691 ; C -1 ; WX 680 ; N Euro ; B 57 -13 736 694 ; C -1 ; WX 700 ; N Ccircumflex ; B 78 -13 754 951 ; C -1 ; WX 560 ; N ccircumflex ; B 58 -9 597 790 ; C -1 ; WX 700 ; N Cdotaccent ; B 78 -13 754 947 ; C -1 ; WX 560 ; N cdotaccent ; B 58 -9 597 786 ; C -1 ; WX 720 ; N Ebreve ; B 14 0 777 921 ; C -1 ; WX 560 ; N ebreve ; B 59 -9 596 760 ; C -1 ; WX 760 ; N Gcircumflex ; B 77 -13 828 951 ; C -1 ; WX 620 ; N gcircumflex ; B 21 -208 669 790 ; C -1 ; WX 760 ; N Gdotaccent ; B 77 -13 828 947 ; C -1 ; WX 620 ; N gdotaccent ; B 21 -208 669 786 ; C -1 ; WX 800 ; N Hcircumflex ; B 14 0 910 951 ; C -1 ; WX 700 ; N hcircumflex ; B 93 -9 736 993 ; C -1 ; WX 800 ; N Hbar ; B 14 0 910 681 ; C -1 ; WX 700 ; N hbar ; B 93 -9 736 732 ; C -1 ; WX 380 ; N Itilde ; B 14 0 518 904 ; C -1 ; WX 380 ; N itilde ; B 83 -9 439 745 ; C -1 ; WX 380 ; N Ibreve ; B 14 0 524 921 ; C -1 ; WX 380 ; N ibreve ; B 83 -9 464 760 ; C -1 ; WX 986 ; N IJ ; B 14 -13 1092 681 ; C -1 ; WX 714 ; N ij ; B 83 -208 741 762 ; C -1 ; WX 620 ; N Jcircumflex ; B 8 -13 721 951 ; C -1 ; WX 320 ; N jcircumflex ; B -160 -208 474 734 ; C -1 ; WX 659 ; N kgreenlandic ; B 83 -12 694 520 ; C -1 ; WX 640 ; N Ldot ; B 14 0 725 681 ; C -1 ; WX 586 ; N ldot ; B 109 -9 558 732 ; C -1 ; WX 680 ; N napostrophe ; B 83 -9 715 801 ; C -1 ; WX 760 ; N Obreve ; B 78 -13 806 921 ; C -1 ; WX 600 ; N obreve ; B 59 -9 627 760 ; C -1 ; WX 700 ; N Scircumflex ; B 59 -13 731 951 ; C -1 ; WX 540 ; N scircumflex ; B 32 -9 573 790 ; C -1 ; WX 700 ; N Tbar ; B 70 0 802 681 ; C -1 ; WX 440 ; N tbar ; B 72 -9 488 659 ; C -1 ; WX 700 ; N Tcedilla ; B 70 -250 802 681 ; C -1 ; WX 440 ; N tcedilla ; B 106 -250 488 658 ; C -1 ; WX 740 ; N Utilde ; B 112 -13 855 904 ; C -1 ; WX 680 ; N utilde ; B 83 -9 720 743 ; C -1 ; WX 740 ; N Ubreve ; B 112 -13 855 921 ; C -1 ; WX 680 ; N ubreve ; B 83 -9 720 760 ; C -1 ; WX 1000 ; N Wcircumflex ; B 72 0 1090 951 ; C -1 ; WX 860 ; N wcircumflex ; B 56 -9 891 790 ; C -1 ; WX 660 ; N Ycircumflex ; B 72 0 817 951 ; C -1 ; WX 600 ; N ycircumflex ; B 25 -204 642 790 ; C -1 ; WX 420 ; N longs ; B -192 -208 641 745 ; C -1 ; WX 698 ; N infinity ; B 6 41 684 571 ; EndCharMetrics StartKernData StartKernPairs 931 KPX A T -17 KPX A Tcaron -17 KPX A Tcommaaccent -17 KPX A V -40 KPX A W -35 KPX A Y -25 KPX A Yacute -25 KPX A Ydieresis -25 KPX A v 20 KPX A w 20 KPX A y 20 KPX A yacute 20 KPX A ydieresis 20 KPX Aacute T -17 KPX Aacute Tcaron -17 KPX Aacute Tcommaaccent -17 KPX Aacute V -40 KPX Aacute W -35 KPX Aacute Y -25 KPX Aacute Yacute -25 KPX Aacute Ydieresis -25 KPX Aacute v 20 KPX Aacute w 20 KPX Aacute y 20 KPX Aacute yacute 20 KPX Aacute ydieresis 20 KPX Abreve T -17 KPX Abreve Tcaron -17 KPX Abreve Tcommaaccent -17 KPX Abreve V -40 KPX Abreve W -35 KPX Abreve Y -25 KPX Abreve Yacute -25 KPX Abreve Ydieresis -25 KPX Abreve v 20 KPX Abreve w 20 KPX Abreve y 20 KPX Abreve yacute 20 KPX Abreve ydieresis 20 KPX Acircumflex T -17 KPX Acircumflex Tcaron -17 KPX Acircumflex Tcommaaccent -17 KPX Acircumflex V -40 KPX Acircumflex W -35 KPX Acircumflex Y -25 KPX Acircumflex Yacute -25 KPX Acircumflex Ydieresis -25 KPX Acircumflex v 20 KPX Acircumflex w 20 KPX Acircumflex y 20 KPX Acircumflex yacute 20 KPX Acircumflex ydieresis 20 KPX Adieresis T -17 KPX Adieresis Tcaron -17 KPX Adieresis Tcommaaccent -17 KPX Adieresis V -40 KPX Adieresis W -35 KPX Adieresis Y -25 KPX Adieresis Yacute -25 KPX Adieresis Ydieresis -25 KPX Adieresis v 20 KPX Adieresis w 20 KPX Adieresis y 20 KPX Adieresis yacute 20 KPX Adieresis ydieresis 20 KPX Agrave T -17 KPX Agrave Tcaron -17 KPX Agrave Tcommaaccent -17 KPX Agrave V -40 KPX Agrave W -35 KPX Agrave Y -25 KPX Agrave Yacute -25 KPX Agrave Ydieresis -25 KPX Agrave v 20 KPX Agrave w 20 KPX Agrave y 20 KPX Agrave yacute 20 KPX Agrave ydieresis 20 KPX Amacron T -17 KPX Amacron Tcaron -17 KPX Amacron Tcommaaccent -17 KPX Amacron V -40 KPX Amacron W -35 KPX Amacron Y -25 KPX Amacron Yacute -25 KPX Amacron Ydieresis -25 KPX Amacron v 20 KPX Amacron w 20 KPX Amacron y 20 KPX Amacron yacute 20 KPX Amacron ydieresis 20 KPX Aogonek T -17 KPX Aogonek Tcaron -17 KPX Aogonek Tcommaaccent -17 KPX Aogonek V -40 KPX Aogonek W -35 KPX Aogonek Y -25 KPX Aogonek Yacute -25 KPX Aogonek Ydieresis -25 KPX Aogonek v 20 KPX Aogonek w 20 KPX Aogonek y 20 KPX Aogonek yacute 20 KPX Aogonek ydieresis 20 KPX Aring T -17 KPX Aring Tcaron -17 KPX Aring Tcommaaccent -17 KPX Aring V -40 KPX Aring W -35 KPX Aring Y -25 KPX Aring Yacute -25 KPX Aring Ydieresis -25 KPX Aring v 20 KPX Aring w 20 KPX Aring y 20 KPX Aring yacute 20 KPX Aring ydieresis 20 KPX Atilde T -17 KPX Atilde Tcaron -17 KPX Atilde Tcommaaccent -17 KPX Atilde V -40 KPX Atilde W -35 KPX Atilde Y -25 KPX Atilde Yacute -25 KPX Atilde Ydieresis -25 KPX Atilde v 20 KPX Atilde w 20 KPX Atilde y 20 KPX Atilde yacute 20 KPX Atilde ydieresis 20 KPX F A -35 KPX F Aacute -35 KPX F Abreve -35 KPX F Acircumflex -35 KPX F Adieresis -35 KPX F Agrave -35 KPX F Amacron -35 KPX F Aogonek -35 KPX F Aring -35 KPX F Atilde -35 KPX F comma -98 KPX F period -105 KPX L T -26 KPX L Tcaron -26 KPX L Tcommaaccent -26 KPX L V -19 KPX L W -15 KPX L Y -5 KPX L Yacute -5 KPX L Ydieresis -5 KPX L y 62 KPX L yacute 62 KPX L ydieresis 62 KPX Lacute T -26 KPX Lacute Tcaron -26 KPX Lacute Tcommaaccent -26 KPX Lacute V -19 KPX Lacute W -15 KPX Lacute Y -5 KPX Lacute Yacute -5 KPX Lacute Ydieresis -5 KPX Lacute y 62 KPX Lacute yacute 62 KPX Lacute ydieresis 62 KPX Lcommaaccent T -26 KPX Lcommaaccent Tcaron -26 KPX Lcommaaccent Tcommaaccent -26 KPX Lcommaaccent V -19 KPX Lcommaaccent W -15 KPX Lcommaaccent Y -5 KPX Lcommaaccent Yacute -5 KPX Lcommaaccent Ydieresis -5 KPX Lcommaaccent y 62 KPX Lcommaaccent yacute 62 KPX Lcommaaccent ydieresis 62 KPX Lslash T -26 KPX Lslash Tcaron -26 KPX Lslash Tcommaaccent -26 KPX Lslash V -19 KPX Lslash W -15 KPX Lslash Y -5 KPX Lslash Yacute -5 KPX Lslash Ydieresis -5 KPX Lslash y 62 KPX Lslash yacute 62 KPX Lslash ydieresis 62 KPX P A -31 KPX P Aacute -31 KPX P Abreve -31 KPX P Acircumflex -31 KPX P Adieresis -31 KPX P Agrave -31 KPX P Amacron -31 KPX P Aogonek -31 KPX P Aring -31 KPX P Atilde -31 KPX P comma -98 KPX P period -105 KPX R T -3 KPX R Tcaron -3 KPX R Tcommaaccent -3 KPX R V -8 KPX R W -4 KPX R Y 4 KPX R Yacute 4 KPX R Ydieresis 4 KPX R y 27 KPX R yacute 27 KPX R ydieresis 27 KPX Racute T -3 KPX Racute Tcaron -3 KPX Racute Tcommaaccent -3 KPX Racute V -8 KPX Racute W -4 KPX Racute Y 4 KPX Racute Yacute 4 KPX Racute Ydieresis 4 KPX Racute y 27 KPX Racute yacute 27 KPX Racute ydieresis 27 KPX Rcaron T -3 KPX Rcaron Tcaron -3 KPX Rcaron Tcommaaccent -3 KPX Rcaron V -8 KPX Rcaron W -4 KPX Rcaron Y 4 KPX Rcaron Yacute 4 KPX Rcaron Ydieresis 4 KPX Rcaron y 27 KPX Rcaron yacute 27 KPX Rcaron ydieresis 27 KPX Rcommaaccent T -3 KPX Rcommaaccent Tcaron -3 KPX Rcommaaccent Tcommaaccent -3 KPX Rcommaaccent V -8 KPX Rcommaaccent W -4 KPX Rcommaaccent Y 4 KPX Rcommaaccent Yacute 4 KPX Rcommaaccent Ydieresis 4 KPX Rcommaaccent y 27 KPX Rcommaaccent yacute 27 KPX Rcommaaccent ydieresis 27 KPX T A -42 KPX T Aacute -42 KPX T Abreve -42 KPX T Acircumflex -42 KPX T Adieresis -42 KPX T Agrave -42 KPX T Amacron -42 KPX T Aogonek -42 KPX T Aring -42 KPX T Atilde -42 KPX T a -8 KPX T aacute -8 KPX T abreve -8 KPX T acircumflex -8 KPX T adieresis -8 KPX T agrave -8 KPX T amacron -8 KPX T aogonek -8 KPX T aring -8 KPX T atilde -8 KPX T c -8 KPX T cacute -8 KPX T ccaron -8 KPX T ccedilla -8 KPX T colon 26 KPX T comma -100 KPX T e -10 KPX T eacute -10 KPX T ecaron -10 KPX T ecircumflex -10 KPX T edieresis -10 KPX T edotaccent -10 KPX T egrave -10 KPX T emacron -10 KPX T eogonek -10 KPX T hyphen -20 KPX T i 42 KPX T iacute 42 KPX T icircumflex 42 KPX T idieresis 42 KPX T igrave 42 KPX T imacron 42 KPX T iogonek 42 KPX T o -5 KPX T oacute -5 KPX T ocircumflex -5 KPX T odieresis -5 KPX T ograve -5 KPX T ohungarumlaut -5 KPX T omacron -5 KPX T oslash -5 KPX T otilde -5 KPX T period -107 KPX T r 41 KPX T racute 41 KPX T rcaron 41 KPX T rcommaaccent 41 KPX T s -1 KPX T sacute -1 KPX T scaron -1 KPX T scedilla -1 KPX T scommaaccent -1 KPX T semicolon 31 KPX T u 42 KPX T uacute 42 KPX T ucircumflex 42 KPX T udieresis 42 KPX T ugrave 42 KPX T uhungarumlaut 42 KPX T umacron 42 KPX T uogonek 42 KPX T uring 42 KPX T w 69 KPX T y 56 KPX T yacute 56 KPX T ydieresis 56 KPX Tcaron A -42 KPX Tcaron Aacute -42 KPX Tcaron Abreve -42 KPX Tcaron Acircumflex -42 KPX Tcaron Adieresis -42 KPX Tcaron Agrave -42 KPX Tcaron Amacron -42 KPX Tcaron Aogonek -42 KPX Tcaron Aring -42 KPX Tcaron Atilde -42 KPX Tcaron a -8 KPX Tcaron aacute -8 KPX Tcaron abreve -8 KPX Tcaron acircumflex -8 KPX Tcaron adieresis -8 KPX Tcaron agrave -8 KPX Tcaron amacron -8 KPX Tcaron aogonek -8 KPX Tcaron aring -8 KPX Tcaron atilde -8 KPX Tcaron c -8 KPX Tcaron cacute -8 KPX Tcaron ccaron -8 KPX Tcaron ccedilla -8 KPX Tcaron colon 26 KPX Tcaron comma -100 KPX Tcaron e -10 KPX Tcaron eacute -10 KPX Tcaron ecaron -10 KPX Tcaron ecircumflex -10 KPX Tcaron edieresis -10 KPX Tcaron edotaccent -10 KPX Tcaron egrave -10 KPX Tcaron emacron -10 KPX Tcaron eogonek -10 KPX Tcaron hyphen -20 KPX Tcaron i 42 KPX Tcaron iacute 42 KPX Tcaron icircumflex 42 KPX Tcaron idieresis 42 KPX Tcaron igrave 42 KPX Tcaron imacron 42 KPX Tcaron iogonek 42 KPX Tcaron o -5 KPX Tcaron oacute -5 KPX Tcaron ocircumflex -5 KPX Tcaron odieresis -5 KPX Tcaron ograve -5 KPX Tcaron ohungarumlaut -5 KPX Tcaron omacron -5 KPX Tcaron oslash -5 KPX Tcaron otilde -5 KPX Tcaron period -107 KPX Tcaron r 41 KPX Tcaron racute 41 KPX Tcaron rcaron 41 KPX Tcaron rcommaaccent 41 KPX Tcaron s -1 KPX Tcaron sacute -1 KPX Tcaron scaron -1 KPX Tcaron scedilla -1 KPX Tcaron scommaaccent -1 KPX Tcaron semicolon 31 KPX Tcaron u 42 KPX Tcaron uacute 42 KPX Tcaron ucircumflex 42 KPX Tcaron udieresis 42 KPX Tcaron ugrave 42 KPX Tcaron uhungarumlaut 42 KPX Tcaron umacron 42 KPX Tcaron uogonek 42 KPX Tcaron uring 42 KPX Tcaron w 69 KPX Tcaron y 56 KPX Tcaron yacute 56 KPX Tcaron ydieresis 56 KPX Tcommaaccent A -42 KPX Tcommaaccent Aacute -42 KPX Tcommaaccent Abreve -42 KPX Tcommaaccent Acircumflex -42 KPX Tcommaaccent Adieresis -42 KPX Tcommaaccent Agrave -42 KPX Tcommaaccent Amacron -42 KPX Tcommaaccent Aogonek -42 KPX Tcommaaccent Aring -42 KPX Tcommaaccent Atilde -42 KPX Tcommaaccent a -8 KPX Tcommaaccent aacute -8 KPX Tcommaaccent abreve -8 KPX Tcommaaccent acircumflex -8 KPX Tcommaaccent adieresis -8 KPX Tcommaaccent agrave -8 KPX Tcommaaccent amacron -8 KPX Tcommaaccent aogonek -8 KPX Tcommaaccent aring -8 KPX Tcommaaccent atilde -8 KPX Tcommaaccent c -8 KPX Tcommaaccent cacute -8 KPX Tcommaaccent ccaron -8 KPX Tcommaaccent ccedilla -8 KPX Tcommaaccent colon 26 KPX Tcommaaccent comma -100 KPX Tcommaaccent e -10 KPX Tcommaaccent eacute -10 KPX Tcommaaccent ecaron -10 KPX Tcommaaccent ecircumflex -10 KPX Tcommaaccent edieresis -10 KPX Tcommaaccent edotaccent -10 KPX Tcommaaccent egrave -10 KPX Tcommaaccent emacron -10 KPX Tcommaaccent eogonek -10 KPX Tcommaaccent hyphen -20 KPX Tcommaaccent i 42 KPX Tcommaaccent iacute 42 KPX Tcommaaccent icircumflex 42 KPX Tcommaaccent idieresis 42 KPX Tcommaaccent igrave 42 KPX Tcommaaccent imacron 42 KPX Tcommaaccent iogonek 42 KPX Tcommaaccent o -5 KPX Tcommaaccent oacute -5 KPX Tcommaaccent ocircumflex -5 KPX Tcommaaccent odieresis -5 KPX Tcommaaccent ograve -5 KPX Tcommaaccent ohungarumlaut -5 KPX Tcommaaccent omacron -5 KPX Tcommaaccent oslash -5 KPX Tcommaaccent otilde -5 KPX Tcommaaccent period -107 KPX Tcommaaccent r 41 KPX Tcommaaccent racute 41 KPX Tcommaaccent rcaron 41 KPX Tcommaaccent rcommaaccent 41 KPX Tcommaaccent s -1 KPX Tcommaaccent sacute -1 KPX Tcommaaccent scaron -1 KPX Tcommaaccent scedilla -1 KPX Tcommaaccent scommaaccent -1 KPX Tcommaaccent semicolon 31 KPX Tcommaaccent u 42 KPX Tcommaaccent uacute 42 KPX Tcommaaccent ucircumflex 42 KPX Tcommaaccent udieresis 42 KPX Tcommaaccent ugrave 42 KPX Tcommaaccent uhungarumlaut 42 KPX Tcommaaccent umacron 42 KPX Tcommaaccent uogonek 42 KPX Tcommaaccent uring 42 KPX Tcommaaccent w 69 KPX Tcommaaccent y 56 KPX Tcommaaccent yacute 56 KPX Tcommaaccent ydieresis 56 KPX V A -50 KPX V Aacute -50 KPX V Abreve -50 KPX V Acircumflex -50 KPX V Adieresis -50 KPX V Agrave -50 KPX V Amacron -50 KPX V Aogonek -50 KPX V Aring -50 KPX V Atilde -50 KPX V a -50 KPX V aacute -50 KPX V abreve -50 KPX V acircumflex -50 KPX V adieresis -50 KPX V agrave -50 KPX V amacron -50 KPX V aogonek -50 KPX V aring -50 KPX V atilde -50 KPX V colon -28 KPX V comma -137 KPX V e -50 KPX V eacute -50 KPX V ecaron -50 KPX V ecircumflex -50 KPX V edotaccent -50 KPX V egrave -50 KPX V eogonek -50 KPX V hyphen -20 KPX V i 32 KPX V iacute 32 KPX V icircumflex 48 KPX V idieresis 48 KPX V igrave 32 KPX V imacron 48 KPX V iogonek 32 KPX V o -50 KPX V oacute -50 KPX V ocircumflex -50 KPX V odieresis -50 KPX V ograve -50 KPX V ohungarumlaut -20 KPX V omacron -52 KPX V oslash -50 KPX V otilde -20 KPX V period -115 KPX V r 2 KPX V racute 2 KPX V rcaron 2 KPX V rcommaaccent 2 KPX V semicolon -22 KPX V u -1 KPX V uacute -1 KPX V ucircumflex -1 KPX V udieresis -1 KPX V ugrave -1 KPX V uhungarumlaut -1 KPX V umacron -1 KPX V uogonek -1 KPX V uring -1 KPX V y 17 KPX V yacute 17 KPX V ydieresis 17 KPX W A -77 KPX W Aacute -77 KPX W Abreve -77 KPX W Acircumflex -77 KPX W Adieresis -77 KPX W Agrave -77 KPX W Amacron -77 KPX W Aogonek -77 KPX W Aring -77 KPX W Atilde -77 KPX W a -100 KPX W aacute -100 KPX W abreve -100 KPX W acircumflex -100 KPX W adieresis -100 KPX W agrave -100 KPX W amacron -100 KPX W aogonek -100 KPX W aring -100 KPX W atilde -100 KPX W colon -86 KPX W comma -201 KPX W e -100 KPX W eacute -100 KPX W ecaron -100 KPX W ecircumflex -100 KPX W edieresis -100 KPX W edotaccent -100 KPX W egrave -100 KPX W emacron -100 KPX W eogonek -100 KPX W hyphen -22 KPX W i -36 KPX W iacute -36 KPX W igrave -36 KPX W iogonek -36 KPX W o -100 KPX W oacute -100 KPX W ocircumflex -100 KPX W odieresis -100 KPX W ograve -100 KPX W ohungarumlaut -100 KPX W omacron -100 KPX W oslash -100 KPX W otilde -100 KPX W period -183 KPX W r -66 KPX W racute -66 KPX W rcaron -66 KPX W rcommaaccent -66 KPX W semicolon -81 KPX W u -69 KPX W uacute -69 KPX W ucircumflex -69 KPX W udieresis -69 KPX W ugrave -69 KPX W uhungarumlaut -69 KPX W umacron -69 KPX W uogonek -69 KPX W uring -69 KPX W y -51 KPX W yacute -51 KPX W ydieresis -51 KPX Y A -30 KPX Y Aacute -30 KPX Y Abreve -30 KPX Y Acircumflex -30 KPX Y Adieresis -30 KPX Y Agrave -30 KPX Y Amacron -30 KPX Y Aogonek -30 KPX Y Aring -30 KPX Y Atilde -30 KPX Y a -45 KPX Y aacute -45 KPX Y abreve -45 KPX Y acircumflex -45 KPX Y adieresis -45 KPX Y agrave -45 KPX Y amacron -45 KPX Y aogonek -45 KPX Y aring -45 KPX Y atilde -45 KPX Y colon -9 KPX Y comma -106 KPX Y e -46 KPX Y eacute -46 KPX Y ecaron -46 KPX Y ecircumflex -46 KPX Y edotaccent -46 KPX Y egrave -46 KPX Y eogonek -46 KPX Y hyphen -20 KPX Y i 20 KPX Y iacute 20 KPX Y icircumflex 40 KPX Y idieresis 40 KPX Y igrave 40 KPX Y imacron 40 KPX Y iogonek 20 KPX Y o -41 KPX Y oacute -41 KPX Y ocircumflex -41 KPX Y odieresis -21 KPX Y ograve -41 KPX Y ohungarumlaut -21 KPX Y omacron -41 KPX Y oslash -41 KPX Y otilde -41 KPX Y period -113 KPX Y q -43 KPX Y semicolon -4 KPX Y u -1 KPX Y uacute -1 KPX Y ucircumflex -1 KPX Y udieresis -1 KPX Y ugrave -1 KPX Y uhungarumlaut -1 KPX Y umacron -1 KPX Y uogonek -1 KPX Y uring -1 KPX Y v 26 KPX Yacute A -30 KPX Yacute Aacute -30 KPX Yacute Abreve -30 KPX Yacute Acircumflex -30 KPX Yacute Adieresis -30 KPX Yacute Agrave -30 KPX Yacute Amacron -30 KPX Yacute Aogonek -30 KPX Yacute Aring -30 KPX Yacute Atilde -30 KPX Yacute a -45 KPX Yacute aacute -45 KPX Yacute abreve -45 KPX Yacute acircumflex -45 KPX Yacute adieresis -45 KPX Yacute agrave -45 KPX Yacute amacron -45 KPX Yacute aogonek -45 KPX Yacute aring -45 KPX Yacute atilde -45 KPX Yacute colon -9 KPX Yacute comma -106 KPX Yacute e -46 KPX Yacute eacute -46 KPX Yacute ecaron -46 KPX Yacute ecircumflex -46 KPX Yacute edotaccent -46 KPX Yacute egrave -46 KPX Yacute eogonek -46 KPX Yacute hyphen -20 KPX Yacute i 20 KPX Yacute iacute 20 KPX Yacute icircumflex 40 KPX Yacute idieresis 40 KPX Yacute igrave 40 KPX Yacute imacron 40 KPX Yacute iogonek 20 KPX Yacute o -41 KPX Yacute oacute -41 KPX Yacute ocircumflex -41 KPX Yacute odieresis -21 KPX Yacute ograve -41 KPX Yacute ohungarumlaut -21 KPX Yacute omacron -41 KPX Yacute oslash -41 KPX Yacute otilde -41 KPX Yacute period -113 KPX Yacute q -43 KPX Yacute semicolon -4 KPX Yacute u -1 KPX Yacute uacute -1 KPX Yacute ucircumflex -1 KPX Yacute udieresis -1 KPX Yacute ugrave -1 KPX Yacute uhungarumlaut -1 KPX Yacute umacron -1 KPX Yacute uogonek -1 KPX Yacute uring -1 KPX Yacute v 26 KPX Ydieresis A -30 KPX Ydieresis Aacute -30 KPX Ydieresis Abreve -30 KPX Ydieresis Acircumflex -30 KPX Ydieresis Adieresis -30 KPX Ydieresis Agrave -30 KPX Ydieresis Amacron -30 KPX Ydieresis Aogonek -30 KPX Ydieresis Aring -30 KPX Ydieresis Atilde -30 KPX Ydieresis a -45 KPX Ydieresis aacute -45 KPX Ydieresis abreve -45 KPX Ydieresis acircumflex -45 KPX Ydieresis adieresis -45 KPX Ydieresis agrave -45 KPX Ydieresis amacron -45 KPX Ydieresis aogonek -45 KPX Ydieresis aring -45 KPX Ydieresis atilde -45 KPX Ydieresis colon -9 KPX Ydieresis comma -106 KPX Ydieresis e -46 KPX Ydieresis eacute -46 KPX Ydieresis ecaron -46 KPX Ydieresis ecircumflex -46 KPX Ydieresis edotaccent -46 KPX Ydieresis egrave -46 KPX Ydieresis eogonek -46 KPX Ydieresis hyphen -20 KPX Ydieresis i 20 KPX Ydieresis iacute 20 KPX Ydieresis icircumflex 40 KPX Ydieresis idieresis 40 KPX Ydieresis igrave 40 KPX Ydieresis imacron 40 KPX Ydieresis iogonek 20 KPX Ydieresis o -41 KPX Ydieresis oacute -41 KPX Ydieresis ocircumflex -41 KPX Ydieresis odieresis -21 KPX Ydieresis ograve -41 KPX Ydieresis ohungarumlaut -21 KPX Ydieresis omacron -41 KPX Ydieresis oslash -41 KPX Ydieresis otilde -41 KPX Ydieresis period -113 KPX Ydieresis q -43 KPX Ydieresis semicolon -4 KPX Ydieresis u -1 KPX Ydieresis uacute -1 KPX Ydieresis ucircumflex -1 KPX Ydieresis udieresis -1 KPX Ydieresis ugrave -1 KPX Ydieresis uhungarumlaut -1 KPX Ydieresis umacron -1 KPX Ydieresis uogonek -1 KPX Ydieresis uring -1 KPX Ydieresis v 26 KPX f f 10 KPX r c -5 KPX r cacute -5 KPX r ccaron -5 KPX r ccedilla -5 KPX r comma -113 KPX r d -3 KPX r dcroat -3 KPX r e -6 KPX r eacute -6 KPX r ecaron -6 KPX r ecircumflex -6 KPX r edieresis -6 KPX r edotaccent -6 KPX r egrave -6 KPX r emacron -6 KPX r eogonek -6 KPX r f 42 KPX r g -23 KPX r gbreve -23 KPX r gcommaaccent -23 KPX r h -35 KPX r hyphen -20 KPX r m 39 KPX r n 39 KPX r nacute 39 KPX r ncaron 39 KPX r ncommaaccent 39 KPX r ntilde 39 KPX r o -1 KPX r oacute -1 KPX r ocircumflex -1 KPX r odieresis -1 KPX r ograve -1 KPX r ohungarumlaut -1 KPX r omacron -1 KPX r oslash -1 KPX r otilde -1 KPX r period -120 KPX r q -3 KPX racute c -5 KPX racute cacute -5 KPX racute ccaron -5 KPX racute ccedilla -5 KPX racute comma -113 KPX racute d -3 KPX racute dcroat -3 KPX racute e -6 KPX racute eacute -6 KPX racute ecaron -6 KPX racute ecircumflex -6 KPX racute edieresis -6 KPX racute edotaccent -6 KPX racute egrave -6 KPX racute emacron -6 KPX racute eogonek -6 KPX racute f 42 KPX racute g -23 KPX racute gbreve -23 KPX racute gcommaaccent -23 KPX racute h -35 KPX racute hyphen -20 KPX racute m 39 KPX racute n 39 KPX racute nacute 39 KPX racute ncaron 39 KPX racute ncommaaccent 39 KPX racute ntilde 39 KPX racute o -1 KPX racute oacute -1 KPX racute ocircumflex -1 KPX racute odieresis -1 KPX racute ograve -1 KPX racute ohungarumlaut -1 KPX racute omacron -1 KPX racute oslash -1 KPX racute otilde -1 KPX racute period -120 KPX racute q -3 KPX rcaron c -5 KPX rcaron cacute -5 KPX rcaron ccaron -5 KPX rcaron ccedilla -5 KPX rcaron comma -113 KPX rcaron d -3 KPX rcaron dcroat -3 KPX rcaron e -6 KPX rcaron eacute -6 KPX rcaron ecaron -6 KPX rcaron ecircumflex -6 KPX rcaron edieresis -6 KPX rcaron edotaccent -6 KPX rcaron egrave -6 KPX rcaron emacron -6 KPX rcaron eogonek -6 KPX rcaron f 42 KPX rcaron g -23 KPX rcaron gbreve -23 KPX rcaron gcommaaccent -23 KPX rcaron h -35 KPX rcaron hyphen -20 KPX rcaron m 39 KPX rcaron n 39 KPX rcaron nacute 39 KPX rcaron ncaron 39 KPX rcaron ncommaaccent 39 KPX rcaron ntilde 39 KPX rcaron o -1 KPX rcaron oacute -1 KPX rcaron ocircumflex -1 KPX rcaron odieresis -1 KPX rcaron ograve -1 KPX rcaron ohungarumlaut -1 KPX rcaron omacron -1 KPX rcaron oslash -1 KPX rcaron otilde -1 KPX rcaron period -120 KPX rcaron q -3 KPX rcommaaccent c -5 KPX rcommaaccent cacute -5 KPX rcommaaccent ccaron -5 KPX rcommaaccent ccedilla -5 KPX rcommaaccent comma -113 KPX rcommaaccent d -3 KPX rcommaaccent dcroat -3 KPX rcommaaccent e -6 KPX rcommaaccent eacute -6 KPX rcommaaccent ecaron -6 KPX rcommaaccent ecircumflex -6 KPX rcommaaccent edieresis -6 KPX rcommaaccent edotaccent -6 KPX rcommaaccent egrave -6 KPX rcommaaccent emacron -6 KPX rcommaaccent eogonek -6 KPX rcommaaccent f 42 KPX rcommaaccent g -23 KPX rcommaaccent gbreve -23 KPX rcommaaccent gcommaaccent -23 KPX rcommaaccent h -35 KPX rcommaaccent hyphen -20 KPX rcommaaccent m 39 KPX rcommaaccent n 39 KPX rcommaaccent nacute 39 KPX rcommaaccent ncaron 39 KPX rcommaaccent ncommaaccent 39 KPX rcommaaccent ntilde 39 KPX rcommaaccent o -1 KPX rcommaaccent oacute -1 KPX rcommaaccent ocircumflex -1 KPX rcommaaccent odieresis -1 KPX rcommaaccent ograve -1 KPX rcommaaccent ohungarumlaut -1 KPX rcommaaccent omacron -1 KPX rcommaaccent oslash -1 KPX rcommaaccent otilde -1 KPX rcommaaccent period -120 KPX rcommaaccent q -3 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Utopia-BoldItalic.afm0000644000222100022210000005301614541067540016635 0ustar ph10ph10StartFontMetrics 2.0 Comment Copyright (c) 1989, 1991 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Fri Jan 17 15:47:44 1992 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 37716 Comment VMusage 34427 41319 FontName Utopia-BoldItalic FullName Utopia Bold Italic FamilyName Utopia Weight Bold ItalicAngle -13 IsFixedPitch false FontBBox -176 -250 1262 916 UnderlinePosition -100 UnderlineThickness 50 Version 001.002 Notice Copyright (c) 1989, 1991 Adobe Systems Incorporated. All Rights Reserved.Utopia is a registered trademark of Adobe Systems Incorporated. EncodingScheme AdobeStandardEncoding CapHeight 692 XHeight 502 Ascender 742 Descender -242 StartCharMetrics 228 C 32 ; WX 210 ; N space ; B 0 0 0 0 ; C 33 ; WX 285 ; N exclam ; B 35 -12 336 707 ; C 34 ; WX 455 ; N quotedbl ; B 142 407 496 707 ; C 35 ; WX 560 ; N numbersign ; B 37 0 606 668 ; C 36 ; WX 560 ; N dollar ; B 32 -104 588 748 ; C 37 ; WX 896 ; N percent ; B 106 -31 861 702 ; C 38 ; WX 752 ; N ampersand ; B 62 -12 736 680 ; C 39 ; WX 246 ; N quoteright ; B 95 387 294 707 ; C 40 ; WX 350 ; N parenleft ; B 87 -135 438 699 ; C 41 ; WX 350 ; N parenright ; B -32 -135 319 699 ; C 42 ; WX 500 ; N asterisk ; B 121 315 528 707 ; C 43 ; WX 600 ; N plus ; B 83 0 567 490 ; C 44 ; WX 280 ; N comma ; B -9 -167 207 180 ; C 45 ; WX 392 ; N hyphen ; B 71 203 354 298 ; C 46 ; WX 280 ; N period ; B 32 -12 212 166 ; C 47 ; WX 260 ; N slash ; B -16 -15 370 707 ; C 48 ; WX 560 ; N zero ; B 57 -12 583 680 ; C 49 ; WX 560 ; N one ; B 72 0 470 680 ; C 50 ; WX 560 ; N two ; B 4 0 578 680 ; C 51 ; WX 560 ; N three ; B 21 -12 567 680 ; C 52 ; WX 560 ; N four ; B 28 0 557 668 ; C 53 ; WX 560 ; N five ; B 23 -12 593 668 ; C 54 ; WX 560 ; N six ; B 56 -12 586 680 ; C 55 ; WX 560 ; N seven ; B 112 -12 632 668 ; C 56 ; WX 560 ; N eight ; B 37 -12 584 680 ; C 57 ; WX 560 ; N nine ; B 48 -12 570 680 ; C 58 ; WX 280 ; N colon ; B 32 -12 280 490 ; C 59 ; WX 280 ; N semicolon ; B -9 -167 280 490 ; C 60 ; WX 600 ; N less ; B 66 5 544 495 ; C 61 ; WX 600 ; N equal ; B 83 103 567 397 ; C 62 ; WX 600 ; N greater ; B 86 5 564 495 ; C 63 ; WX 454 ; N question ; B 115 -12 515 707 ; C 64 ; WX 828 ; N at ; B 90 -15 842 707 ; C 65 ; WX 634 ; N A ; B -59 0 639 692 ; C 66 ; WX 680 ; N B ; B 5 0 689 692 ; C 67 ; WX 672 ; N C ; B 76 -15 742 707 ; C 68 ; WX 774 ; N D ; B 5 0 784 692 ; C 69 ; WX 622 ; N E ; B 5 0 687 692 ; C 70 ; WX 585 ; N F ; B 5 0 683 692 ; C 71 ; WX 726 ; N G ; B 76 -15 756 707 ; C 72 ; WX 800 ; N H ; B 5 0 880 692 ; C 73 ; WX 386 ; N I ; B 5 0 466 692 ; C 74 ; WX 388 ; N J ; B -50 -114 477 692 ; C 75 ; WX 688 ; N K ; B 5 -6 823 692 ; C 76 ; WX 586 ; N L ; B 5 0 591 692 ; C 77 ; WX 921 ; N M ; B 0 0 998 692 ; C 78 ; WX 741 ; N N ; B -5 0 838 692 ; C 79 ; WX 761 ; N O ; B 78 -15 768 707 ; C 80 ; WX 660 ; N P ; B 5 0 694 692 ; C 81 ; WX 761 ; N Q ; B 78 -193 768 707 ; C 82 ; WX 681 ; N R ; B 5 0 696 692 ; C 83 ; WX 551 ; N S ; B 31 -15 570 707 ; C 84 ; WX 616 ; N T ; B 91 0 722 692 ; C 85 ; WX 776 ; N U ; B 115 -15 867 692 ; C 86 ; WX 630 ; N V ; B 92 0 783 692 ; C 87 ; WX 920 ; N W ; B 80 0 1062 692 ; C 88 ; WX 630 ; N X ; B -56 0 744 692 ; C 89 ; WX 622 ; N Y ; B 92 0 765 692 ; C 90 ; WX 618 ; N Z ; B -30 0 714 692 ; C 91 ; WX 350 ; N bracketleft ; B 56 -128 428 692 ; C 92 ; WX 460 ; N backslash ; B 114 -15 425 707 ; C 93 ; WX 350 ; N bracketright ; B -22 -128 350 692 ; C 94 ; WX 600 ; N asciicircum ; B 79 215 567 668 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 246 ; N quoteleft ; B 114 399 313 719 ; C 97 ; WX 596 ; N a ; B 26 -12 612 502 ; C 98 ; WX 586 ; N b ; B 34 -12 592 742 ; C 99 ; WX 456 ; N c ; B 38 -12 498 502 ; C 100 ; WX 609 ; N d ; B 29 -12 651 742 ; C 101 ; WX 476 ; N e ; B 38 -12 497 502 ; C 102 ; WX 348 ; N f ; B -129 -242 553 742 ; L i fi ; L l fl ; C 103 ; WX 522 ; N g ; B -14 -242 609 512 ; C 104 ; WX 629 ; N h ; B 44 -12 631 742 ; C 105 ; WX 339 ; N i ; B 66 -12 357 720 ; C 106 ; WX 333 ; N j ; B -120 -242 364 720 ; C 107 ; WX 570 ; N k ; B 39 -12 604 742 ; C 108 ; WX 327 ; N l ; B 62 -12 360 742 ; C 109 ; WX 914 ; N m ; B 46 -12 917 502 ; C 110 ; WX 635 ; N n ; B 45 -12 639 502 ; C 111 ; WX 562 ; N o ; B 42 -12 556 502 ; C 112 ; WX 606 ; N p ; B 0 -242 613 502 ; C 113 ; WX 584 ; N q ; B 29 -242 604 513 ; C 114 ; WX 440 ; N r ; B 51 -12 497 502 ; C 115 ; WX 417 ; N s ; B 10 -12 432 502 ; C 116 ; WX 359 ; N t ; B 68 -12 428 641 ; C 117 ; WX 634 ; N u ; B 71 -12 643 502 ; C 118 ; WX 518 ; N v ; B 68 -12 547 502 ; C 119 ; WX 795 ; N w ; B 70 -12 826 502 ; C 120 ; WX 516 ; N x ; B -26 -12 546 502 ; C 121 ; WX 489 ; N y ; B -49 -242 532 502 ; C 122 ; WX 466 ; N z ; B -17 -12 506 490 ; C 123 ; WX 340 ; N braceleft ; B 90 -128 439 692 ; C 124 ; WX 265 ; N bar ; B 117 -250 221 750 ; C 125 ; WX 340 ; N braceright ; B -42 -128 307 692 ; C 126 ; WX 600 ; N asciitilde ; B 70 157 571 338 ; C 160 ; WX 210 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 285 ; N exclamdown ; B -13 -217 288 502 ; C 162 ; WX 560 ; N cent ; B 80 -21 611 668 ; C 163 ; WX 560 ; N sterling ; B -4 0 583 679 ; C 164 ; WX 100 ; N fraction ; B -176 -27 370 695 ; C 165 ; WX 560 ; N yen ; B 65 0 676 668 ; C 166 ; WX 560 ; N florin ; B -16 -135 635 691 ; C 167 ; WX 568 ; N section ; B 64 -115 559 707 ; C 168 ; WX 560 ; N currency ; B 60 73 578 596 ; C 169 ; WX 246 ; N quotesingle ; B 134 376 285 707 ; C 170 ; WX 455 ; N quotedblleft ; B 114 399 522 719 ; C 171 ; WX 560 ; N guillemotleft ; B 90 37 533 464 ; C 172 ; WX 360 ; N guilsinglleft ; B 90 37 333 464 ; C 173 ; WX 360 ; N guilsinglright ; B 58 37 301 464 ; C 174 ; WX 651 ; N fi ; B -129 -242 655 742 ; C 175 ; WX 652 ; N fl ; B -129 -242 685 742 ; C 177 ; WX 500 ; N endash ; B 12 209 531 292 ; C 178 ; WX 514 ; N dagger ; B 101 -125 545 707 ; C 179 ; WX 490 ; N daggerdbl ; B 32 -119 528 707 ; C 180 ; WX 280 ; N periodcentered ; B 67 161 247 339 ; C 182 ; WX 580 ; N paragraph ; B 110 -101 653 692 ; C 183 ; WX 465 ; N bullet ; B 99 174 454 529 ; C 184 ; WX 246 ; N quotesinglbase ; B -17 -153 182 167 ; C 185 ; WX 455 ; N quotedblbase ; B -17 -153 391 167 ; C 186 ; WX 455 ; N quotedblright ; B 95 387 503 707 ; C 187 ; WX 560 ; N guillemotright ; B 58 37 502 464 ; C 188 ; WX 1000 ; N ellipsis ; B 85 -12 931 166 ; C 189 ; WX 1297 ; N perthousand ; B 106 -31 1262 702 ; C 191 ; WX 454 ; N questiondown ; B -10 -217 391 502 ; C 193 ; WX 400 ; N grave ; B 109 511 381 740 ; C 194 ; WX 400 ; N acute ; B 186 511 458 740 ; C 195 ; WX 400 ; N circumflex ; B 93 520 471 747 ; C 196 ; WX 400 ; N tilde ; B 94 549 502 697 ; C 197 ; WX 400 ; N macron ; B 133 592 459 664 ; C 198 ; WX 400 ; N breve ; B 146 556 469 714 ; C 199 ; WX 402 ; N dotaccent ; B 220 561 378 710 ; C 200 ; WX 400 ; N dieresis ; B 106 561 504 710 ; C 202 ; WX 400 ; N ring ; B 166 529 423 762 ; C 203 ; WX 400 ; N cedilla ; B 85 -246 292 0 ; C 205 ; WX 400 ; N hungarumlaut ; B 158 546 482 750 ; C 206 ; WX 350 ; N ogonek ; B 38 -246 253 0 ; C 207 ; WX 400 ; N caron ; B 130 520 508 747 ; C 208 ; WX 1000 ; N emdash ; B 12 209 1031 292 ; C 225 ; WX 890 ; N AE ; B -107 0 958 692 ; C 227 ; WX 444 ; N ordfeminine ; B 62 265 482 590 ; C 232 ; WX 592 ; N Lslash ; B 11 0 597 692 ; C 233 ; WX 761 ; N Oslash ; B 77 -51 769 734 ; C 234 ; WX 1016 ; N OE ; B 76 0 1084 692 ; C 235 ; WX 412 ; N ordmasculine ; B 86 265 446 590 ; C 241 ; WX 789 ; N ae ; B 26 -12 810 509 ; C 245 ; WX 339 ; N dotlessi ; B 66 -12 343 502 ; C 248 ; WX 339 ; N lslash ; B 18 -12 420 742 ; C 249 ; WX 562 ; N oslash ; B 42 -69 556 549 ; C 250 ; WX 811 ; N oe ; B 42 -12 832 502 ; C 251 ; WX 628 ; N germandbls ; B -129 -242 692 742 ; C -1 ; WX 402 ; N onesuperior ; B 84 272 361 680 ; C -1 ; WX 600 ; N minus ; B 83 210 567 290 ; C -1 ; WX 375 ; N degree ; B 93 360 425 680 ; C -1 ; WX 562 ; N oacute ; B 42 -12 572 755 ; C -1 ; WX 761 ; N Odieresis ; B 78 -15 768 881 ; C -1 ; WX 562 ; N odieresis ; B 42 -12 585 710 ; C -1 ; WX 622 ; N Eacute ; B 5 0 687 904 ; C -1 ; WX 634 ; N ucircumflex ; B 71 -12 643 747 ; C -1 ; WX 940 ; N onequarter ; B 104 -27 849 695 ; C -1 ; WX 600 ; N logicalnot ; B 83 95 567 397 ; C -1 ; WX 622 ; N Ecircumflex ; B 5 0 687 905 ; C -1 ; WX 940 ; N onehalf ; B 90 -27 898 695 ; C -1 ; WX 761 ; N Otilde ; B 78 -15 768 876 ; C -1 ; WX 634 ; N uacute ; B 71 -12 643 740 ; C -1 ; WX 476 ; N eacute ; B 38 -12 545 755 ; C -1 ; WX 339 ; N iacute ; B 66 -12 438 740 ; C -1 ; WX 622 ; N Egrave ; B 5 0 687 904 ; C -1 ; WX 339 ; N icircumflex ; B 38 -12 416 747 ; C -1 ; WX 634 ; N mu ; B -3 -230 643 502 ; C -1 ; WX 265 ; N brokenbar ; B 117 -175 221 675 ; C -1 ; WX 600 ; N thorn ; B -6 -242 607 700 ; C -1 ; WX 634 ; N Aring ; B -59 0 639 879 ; C -1 ; WX 489 ; N yacute ; B -49 -242 553 740 ; C -1 ; WX 622 ; N Ydieresis ; B 92 0 765 881 ; C -1 ; WX 1100 ; N trademark ; B 103 277 1093 692 ; C -1 ; WX 824 ; N registered ; B 91 -15 819 707 ; C -1 ; WX 562 ; N ocircumflex ; B 42 -12 556 747 ; C -1 ; WX 634 ; N Agrave ; B -59 0 639 904 ; C -1 ; WX 551 ; N Scaron ; B 31 -15 612 916 ; C -1 ; WX 776 ; N Ugrave ; B 115 -15 867 904 ; C -1 ; WX 622 ; N Edieresis ; B 5 0 687 881 ; C -1 ; WX 776 ; N Uacute ; B 115 -15 867 904 ; C -1 ; WX 562 ; N otilde ; B 42 -12 583 697 ; C -1 ; WX 635 ; N ntilde ; B 45 -12 639 697 ; C -1 ; WX 489 ; N ydieresis ; B -49 -242 532 710 ; C -1 ; WX 634 ; N Aacute ; B -59 0 678 904 ; C -1 ; WX 562 ; N eth ; B 42 -12 558 742 ; C -1 ; WX 596 ; N acircumflex ; B 26 -12 612 747 ; C -1 ; WX 596 ; N aring ; B 26 -12 612 762 ; C -1 ; WX 761 ; N Ograve ; B 78 -15 768 904 ; C -1 ; WX 456 ; N ccedilla ; B 38 -246 498 502 ; C -1 ; WX 600 ; N multiply ; B 110 22 560 478 ; C -1 ; WX 600 ; N divide ; B 63 7 547 493 ; C -1 ; WX 402 ; N twosuperior ; B 29 272 423 680 ; C -1 ; WX 741 ; N Ntilde ; B -5 0 838 876 ; C -1 ; WX 634 ; N ugrave ; B 71 -12 643 740 ; C -1 ; WX 776 ; N Ucircumflex ; B 115 -15 867 905 ; C -1 ; WX 634 ; N Atilde ; B -59 0 662 876 ; C -1 ; WX 466 ; N zcaron ; B -17 -12 526 747 ; C -1 ; WX 339 ; N idieresis ; B 46 -12 444 710 ; C -1 ; WX 634 ; N Acircumflex ; B -59 0 639 905 ; C -1 ; WX 386 ; N Icircumflex ; B 5 0 506 905 ; C -1 ; WX 622 ; N Yacute ; B 92 0 765 904 ; C -1 ; WX 761 ; N Oacute ; B 78 -15 768 904 ; C -1 ; WX 634 ; N Adieresis ; B -59 0 652 881 ; C -1 ; WX 618 ; N Zcaron ; B -30 0 714 916 ; C -1 ; WX 596 ; N agrave ; B 26 -12 612 755 ; C -1 ; WX 402 ; N threesuperior ; B 59 265 421 680 ; C -1 ; WX 562 ; N ograve ; B 42 -12 556 755 ; C -1 ; WX 940 ; N threequarters ; B 95 -27 876 695 ; C -1 ; WX 780 ; N Eth ; B 11 0 790 692 ; C -1 ; WX 600 ; N plusminus ; B 83 0 567 549 ; C -1 ; WX 634 ; N udieresis ; B 71 -12 643 710 ; C -1 ; WX 476 ; N edieresis ; B 38 -12 542 710 ; C -1 ; WX 596 ; N aacute ; B 26 -12 621 755 ; C -1 ; WX 339 ; N igrave ; B 39 -12 343 740 ; C -1 ; WX 386 ; N Idieresis ; B 5 0 533 881 ; C -1 ; WX 596 ; N adieresis ; B 26 -12 612 710 ; C -1 ; WX 386 ; N Iacute ; B 5 0 549 904 ; C -1 ; WX 824 ; N copyright ; B 91 -15 819 707 ; C -1 ; WX 386 ; N Igrave ; B 5 0 466 904 ; C -1 ; WX 672 ; N Ccedilla ; B 76 -246 742 707 ; C -1 ; WX 417 ; N scaron ; B 10 -12 522 747 ; C -1 ; WX 476 ; N egrave ; B 38 -12 497 755 ; C -1 ; WX 761 ; N Ocircumflex ; B 78 -15 768 905 ; C -1 ; WX 629 ; N Thorn ; B 5 0 660 692 ; C -1 ; WX 596 ; N atilde ; B 26 -12 612 697 ; C -1 ; WX 776 ; N Udieresis ; B 115 -15 867 881 ; C -1 ; WX 476 ; N ecircumflex ; B 38 -12 524 747 ; EndCharMetrics StartKernData StartKernPairs 697 KPX A z 18 KPX A y -40 KPX A x 16 KPX A w -30 KPX A v -30 KPX A u -18 KPX A t -6 KPX A s 6 KPX A r -6 KPX A quoteright -92 KPX A quotedblright -92 KPX A p -6 KPX A o -18 KPX A n -12 KPX A m -12 KPX A l -18 KPX A h -6 KPX A d 4 KPX A c -6 KPX A b -6 KPX A a 10 KPX A Y -56 KPX A X -8 KPX A W -46 KPX A V -75 KPX A U -50 KPX A T -60 KPX A Q -30 KPX A O -30 KPX A G -30 KPX A C -30 KPX B y -6 KPX B u -12 KPX B r -6 KPX B quoteright -20 KPX B quotedblright -32 KPX B o 6 KPX B l -20 KPX B k -10 KPX B i -12 KPX B h -15 KPX B e 4 KPX B a 10 KPX B W -30 KPX B V -45 KPX B U -30 KPX B T -20 KPX C z -6 KPX C y -18 KPX C u -12 KPX C r -12 KPX C quoteright 12 KPX C quotedblright 20 KPX C i -6 KPX C e -6 KPX C a -6 KPX C Q -12 KPX C O -12 KPX C G -12 KPX C C -12 KPX D y 18 KPX D quoteright -20 KPX D quotedblright -20 KPX D period -20 KPX D o 6 KPX D h -15 KPX D e 6 KPX D comma -20 KPX D a 6 KPX D Y -80 KPX D W -40 KPX D V -65 KPX E z -6 KPX E y -24 KPX E x 15 KPX E w -30 KPX E v -18 KPX E u -24 KPX E t -18 KPX E s -6 KPX E r -6 KPX E quoteright 10 KPX E q 10 KPX E period 15 KPX E p -12 KPX E n -12 KPX E m -12 KPX E l -6 KPX E j -6 KPX E i -12 KPX E g -12 KPX E d 10 KPX E comma 15 KPX E a 10 KPX F y -12 KPX F u -24 KPX F r -12 KPX F quoteright 40 KPX F quotedblright 35 KPX F period -120 KPX F o -24 KPX F i -6 KPX F e -24 KPX F comma -110 KPX F a -30 KPX F A -45 KPX G y -25 KPX G u -22 KPX G r -22 KPX G quoteright -30 KPX G quotedblright -30 KPX G n -22 KPX G l -24 KPX G i -12 KPX G h -18 KPX G e 5 KPX H y -18 KPX H u -30 KPX H o -25 KPX H i -25 KPX H e -25 KPX H a -25 KPX I z -20 KPX I y -6 KPX I x -6 KPX I w -30 KPX I v -30 KPX I u -30 KPX I t -18 KPX I s -18 KPX I r -12 KPX I p -18 KPX I o -25 KPX I n -18 KPX I m -18 KPX I l -6 KPX I k -6 KPX I j -20 KPX I i -10 KPX I g -24 KPX I f -6 KPX I e -25 KPX I d -15 KPX I c -25 KPX I b -6 KPX I a -15 KPX J y -12 KPX J u -32 KPX J quoteright 6 KPX J quotedblright 6 KPX J o -36 KPX J i -30 KPX J e -30 KPX J braceright 15 KPX J a -36 KPX K y -70 KPX K w -36 KPX K v -30 KPX K u -30 KPX K r -24 KPX K quoteright 36 KPX K quotedblright 36 KPX K o -30 KPX K n -24 KPX K l 10 KPX K i -12 KPX K h 15 KPX K e -30 KPX K a -12 KPX K Q -50 KPX K O -50 KPX K G -50 KPX K C -50 KPX K A 15 KPX L y -70 KPX L w -30 KPX L u -18 KPX L quoteright -110 KPX L quotedblright -110 KPX L l -16 KPX L j -18 KPX L i -18 KPX L Y -80 KPX L W -78 KPX L V -110 KPX L U -42 KPX L T -100 KPX L Q -48 KPX L O -48 KPX L G -48 KPX L C -48 KPX L A 40 KPX M y -18 KPX M u -24 KPX M quoteright 6 KPX M quotedblright 6 KPX M o -25 KPX M n -20 KPX M j -35 KPX M i -20 KPX M e -25 KPX M d -20 KPX M c -25 KPX M a -20 KPX N y -18 KPX N u -24 KPX N o -18 KPX N i -12 KPX N e -16 KPX N a -22 KPX O z -6 KPX O y 12 KPX O u -6 KPX O t -6 KPX O s -6 KPX O r -6 KPX O quoteright -20 KPX O quotedblright -20 KPX O q 6 KPX O period -10 KPX O p -6 KPX O n -6 KPX O m -6 KPX O l -15 KPX O k -10 KPX O j -6 KPX O h -10 KPX O g -6 KPX O e 6 KPX O d 6 KPX O comma -10 KPX O a 6 KPX O Y -70 KPX O X -30 KPX O W -35 KPX O V -50 KPX O T -42 KPX O A -8 KPX P y 6 KPX P u -18 KPX P t -6 KPX P s -24 KPX P r -6 KPX P quoteright -12 KPX P period -170 KPX P o -24 KPX P n -12 KPX P l -20 KPX P h -20 KPX P e -24 KPX P comma -170 KPX P a -40 KPX P I -45 KPX P H -45 KPX P E -45 KPX P A -70 KPX Q u -6 KPX Q quoteright -20 KPX Q quotedblright -38 KPX Q a -6 KPX Q Y -70 KPX Q X -12 KPX Q W -35 KPX Q V -50 KPX Q U -30 KPX Q T -36 KPX Q A -18 KPX R y -6 KPX R u -12 KPX R quoteright -22 KPX R quotedblright -22 KPX R o -20 KPX R e -12 KPX R Y -45 KPX R X 15 KPX R W -25 KPX R V -35 KPX R U -40 KPX R T -18 KPX R Q -8 KPX R O -8 KPX R G -8 KPX R C -8 KPX R A 15 KPX S y -30 KPX S w -30 KPX S v -20 KPX S u -18 KPX S t -18 KPX S r -20 KPX S quoteright -38 KPX S quotedblright -50 KPX S p -18 KPX S n -24 KPX S m -24 KPX S l -20 KPX S k -18 KPX S j -25 KPX S i -20 KPX S h -12 KPX S e -6 KPX T z -48 KPX T y -52 KPX T w -54 KPX T u -54 KPX T semicolon -6 KPX T s -60 KPX T r -54 KPX T quoteright 36 KPX T quotedblright 36 KPX T period -70 KPX T parenright 25 KPX T o -78 KPX T m -54 KPX T i -22 KPX T hyphen -100 KPX T h 6 KPX T endash -40 KPX T emdash -40 KPX T e -78 KPX T comma -90 KPX T bracketright 20 KPX T braceright 30 KPX T a -78 KPX T Y 12 KPX T X 18 KPX T W 30 KPX T V 20 KPX T T 40 KPX T Q -6 KPX T O -6 KPX T G -6 KPX T C -6 KPX T A -40 KPX U z -18 KPX U x -30 KPX U v -20 KPX U t -24 KPX U s -40 KPX U r -30 KPX U p -30 KPX U n -30 KPX U m -30 KPX U l -12 KPX U k -12 KPX U i -24 KPX U h -6 KPX U g -30 KPX U f -10 KPX U d -30 KPX U c -30 KPX U b -6 KPX U a -30 KPX U A -40 KPX V y -34 KPX V u -42 KPX V semicolon -45 KPX V r -55 KPX V quoteright 46 KPX V quotedblright 60 KPX V period -110 KPX V parenright 64 KPX V o -55 KPX V i 15 KPX V hyphen -60 KPX V endash -20 KPX V emdash -20 KPX V e -55 KPX V comma -110 KPX V colon -18 KPX V bracketright 64 KPX V braceright 64 KPX V a -80 KPX V T 12 KPX V A -70 KPX W y -36 KPX W u -30 KPX W t -10 KPX W semicolon -12 KPX W r -30 KPX W quoteright 42 KPX W quotedblright 55 KPX W period -80 KPX W parenright 55 KPX W o -55 KPX W m -30 KPX W i 5 KPX W hyphen -40 KPX W h 16 KPX W e -55 KPX W d -60 KPX W comma -80 KPX W colon -12 KPX W bracketright 64 KPX W braceright 64 KPX W a -60 KPX W T 30 KPX W Q -5 KPX W O -5 KPX W G -5 KPX W C -5 KPX W A -45 KPX X y -40 KPX X u -30 KPX X r -6 KPX X quoteright 24 KPX X quotedblright 40 KPX X i -6 KPX X e -18 KPX X a -6 KPX X Y -6 KPX X W -6 KPX X Q -45 KPX X O -45 KPX X G -45 KPX X C -45 KPX Y v -60 KPX Y u -70 KPX Y t -32 KPX Y semicolon -20 KPX Y quoteright 56 KPX Y quotedblright 70 KPX Y q -100 KPX Y period -80 KPX Y parenright 5 KPX Y o -95 KPX Y l 15 KPX Y i 15 KPX Y hyphen -110 KPX Y endash -40 KPX Y emdash -40 KPX Y e -95 KPX Y d -85 KPX Y comma -80 KPX Y colon -20 KPX Y bracketright 64 KPX Y braceright 64 KPX Y a -85 KPX Y Y 12 KPX Y X 12 KPX Y W 12 KPX Y V 6 KPX Y T 30 KPX Y Q -25 KPX Y O -25 KPX Y G -25 KPX Y C -25 KPX Y A -40 KPX Z y -36 KPX Z w -36 KPX Z u -12 KPX Z quoteright 18 KPX Z quotedblright 18 KPX Z o -6 KPX Z i -12 KPX Z e -6 KPX Z a -6 KPX Z Q -20 KPX Z O -20 KPX Z G -20 KPX Z C -20 KPX Z A 30 KPX a quoteright -54 KPX a quotedblright -54 KPX b y -6 KPX b w -5 KPX b v -5 KPX b quoteright -30 KPX b quotedblright -30 KPX b period -15 KPX b comma -15 KPX braceleft Y 64 KPX braceleft W 64 KPX braceleft V 64 KPX braceleft T 40 KPX braceleft J 60 KPX bracketleft Y 60 KPX bracketleft W 64 KPX bracketleft V 64 KPX bracketleft T 35 KPX bracketleft J 30 KPX c quoteright 5 KPX c quotedblright 5 KPX colon space -30 KPX comma space -40 KPX comma quoteright -100 KPX comma quotedblright -100 KPX d quoteright -12 KPX d quotedblright -12 KPX d period 15 KPX d comma 15 KPX e y 6 KPX e x -10 KPX e w -10 KPX e v -10 KPX e quoteright -25 KPX e quotedblright -25 KPX f quoteright 120 KPX f quotedblright 120 KPX f period -30 KPX f parenright 100 KPX f comma -30 KPX f bracketright 110 KPX f braceright 110 KPX g y 50 KPX g quotedblright -20 KPX g p 30 KPX g f 42 KPX g comma 20 KPX h quoteright -78 KPX h quotedblright -78 KPX i quoteright -20 KPX i quotedblright -20 KPX j quoteright -20 KPX j quotedblright -20 KPX j period -20 KPX j comma -20 KPX k quoteright -38 KPX k quotedblright -38 KPX l quoteright -12 KPX l quotedblright -12 KPX m quoteright -78 KPX m quotedblright -78 KPX n quoteright -88 KPX n quotedblright -88 KPX o y -12 KPX o x -20 KPX o w -25 KPX o v -25 KPX o quoteright -50 KPX o quotedblright -50 KPX o period -10 KPX o comma -10 KPX p w -6 KPX p quoteright -30 KPX p quotedblright -52 KPX p period -15 KPX p comma -15 KPX parenleft Y 64 KPX parenleft W 64 KPX parenleft V 64 KPX parenleft T 30 KPX parenleft J 50 KPX period space -40 KPX period quoteright -100 KPX period quotedblright -100 KPX q quoteright -40 KPX q quotedblright -40 KPX q period -10 KPX q comma -5 KPX quotedblleft z -30 KPX quotedblleft x -60 KPX quotedblleft w -12 KPX quotedblleft v -12 KPX quotedblleft u -12 KPX quotedblleft t 5 KPX quotedblleft s -30 KPX quotedblleft r -12 KPX quotedblleft q -50 KPX quotedblleft p -12 KPX quotedblleft o -30 KPX quotedblleft n -12 KPX quotedblleft m -12 KPX quotedblleft l 10 KPX quotedblleft k 10 KPX quotedblleft h 10 KPX quotedblleft g -30 KPX quotedblleft e -30 KPX quotedblleft d -50 KPX quotedblleft c -30 KPX quotedblleft b 24 KPX quotedblleft a -50 KPX quotedblleft Y 30 KPX quotedblleft X 45 KPX quotedblleft W 55 KPX quotedblleft V 40 KPX quotedblleft T 36 KPX quotedblleft A -100 KPX quotedblright space -50 KPX quotedblright period -200 KPX quotedblright comma -200 KPX quoteleft z -30 KPX quoteleft y 30 KPX quoteleft x -10 KPX quoteleft w -12 KPX quoteleft u -12 KPX quoteleft t -30 KPX quoteleft s -30 KPX quoteleft r -12 KPX quoteleft q -30 KPX quoteleft p -12 KPX quoteleft o -30 KPX quoteleft n -12 KPX quoteleft m -12 KPX quoteleft l 10 KPX quoteleft k 10 KPX quoteleft h 10 KPX quoteleft g -30 KPX quoteleft e -30 KPX quoteleft d -30 KPX quoteleft c -30 KPX quoteleft b 24 KPX quoteleft a -30 KPX quoteleft Y 12 KPX quoteleft X 46 KPX quoteleft W 46 KPX quoteleft V 28 KPX quoteleft T 36 KPX quoteleft A -100 KPX quoteright v -20 KPX quoteright space -50 KPX quoteright s -45 KPX quoteright r -12 KPX quoteright period -140 KPX quoteright m -12 KPX quoteright l -12 KPX quoteright d -65 KPX quoteright comma -140 KPX r z 20 KPX r y 18 KPX r x 12 KPX r w 6 KPX r v 6 KPX r t 8 KPX r semicolon 20 KPX r quoteright -6 KPX r quotedblright -6 KPX r q -24 KPX r period -100 KPX r o -6 KPX r l -12 KPX r k -12 KPX r hyphen -40 KPX r h -10 KPX r f 8 KPX r endash -20 KPX r e -26 KPX r d -25 KPX r comma -100 KPX r colon 20 KPX r c -12 KPX r a -25 KPX s quoteright -25 KPX s quotedblright -30 KPX semicolon space -30 KPX space quotesinglbase -60 KPX space quoteleft -60 KPX space quotedblleft -60 KPX space quotedblbase -60 KPX space Y -70 KPX space W -50 KPX space V -70 KPX space T -50 KPX space A -50 KPX t quoteright 15 KPX t quotedblright 15 KPX t period 15 KPX t comma 15 KPX u quoteright -65 KPX u quotedblright -78 KPX u period 20 KPX u comma 20 KPX v quoteright -10 KPX v quotedblright -10 KPX v q -6 KPX v period -62 KPX v o -6 KPX v e -6 KPX v d -6 KPX v comma -62 KPX v c -6 KPX v a -6 KPX w quoteright -10 KPX w quotedblright -10 KPX w period -40 KPX w comma -50 KPX x y 12 KPX x w -6 KPX x quoteright -30 KPX x quotedblright -30 KPX x q -6 KPX x o -6 KPX x e -6 KPX x d -6 KPX x c -6 KPX y quoteright -10 KPX y quotedblright -10 KPX y q -10 KPX y period -56 KPX y d -10 KPX y comma -56 KPX z quoteright -40 KPX z quotedblright -40 KPX z o -6 KPX z e -6 KPX z d -6 KPX z c -6 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Courier-BoldOblique.afm0000644000222100022210000004237414541067540017204 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:28:46 1997 Comment PH added entry for Euro character, copied from a different version, 19 July 2009. Comment PH added additional characters (after Euro) 18 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43049 Comment VMusage 17529 79244 FontName Courier-BoldOblique FullName Courier Bold Oblique FamilyName Courier Weight Bold ItalicAngle -12 IsFixedPitch true FontBBox -57 -250 869 801 UnderlinePosition -100 UnderlineThickness 50 Version 003.000 Notice Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 562 XHeight 439 Ascender 629 Descender -157 StdHW 84 StdVW 106 StartCharMetrics 358 C 32 ; WX 600 ; N space ; B 0 0 0 0 ; C 33 ; WX 600 ; N exclam ; B 215 -15 495 572 ; C 34 ; WX 600 ; N quotedbl ; B 211 277 585 562 ; C 35 ; WX 600 ; N numbersign ; B 88 -45 641 651 ; C 36 ; WX 600 ; N dollar ; B 87 -126 630 666 ; C 37 ; WX 600 ; N percent ; B 101 -15 625 616 ; C 38 ; WX 600 ; N ampersand ; B 61 -15 595 543 ; C 39 ; WX 600 ; N quoteright ; B 229 277 543 562 ; C 40 ; WX 600 ; N parenleft ; B 265 -102 592 616 ; C 41 ; WX 600 ; N parenright ; B 117 -102 444 616 ; C 42 ; WX 600 ; N asterisk ; B 179 219 598 601 ; C 43 ; WX 600 ; N plus ; B 114 39 596 478 ; C 44 ; WX 600 ; N comma ; B 99 -111 430 174 ; C 45 ; WX 600 ; N hyphen ; B 143 203 567 313 ; C 46 ; WX 600 ; N period ; B 206 -15 427 171 ; C 47 ; WX 600 ; N slash ; B 90 -77 626 626 ; C 48 ; WX 600 ; N zero ; B 135 -15 593 616 ; C 49 ; WX 600 ; N one ; B 93 0 562 616 ; C 50 ; WX 600 ; N two ; B 61 0 594 616 ; C 51 ; WX 600 ; N three ; B 71 -15 571 616 ; C 52 ; WX 600 ; N four ; B 81 0 559 616 ; C 53 ; WX 600 ; N five ; B 77 -15 621 601 ; C 54 ; WX 600 ; N six ; B 135 -15 652 616 ; C 55 ; WX 600 ; N seven ; B 147 0 622 601 ; C 56 ; WX 600 ; N eight ; B 115 -15 604 616 ; C 57 ; WX 600 ; N nine ; B 75 -15 592 616 ; C 58 ; WX 600 ; N colon ; B 205 -15 480 425 ; C 59 ; WX 600 ; N semicolon ; B 99 -111 481 425 ; C 60 ; WX 600 ; N less ; B 120 15 613 501 ; C 61 ; WX 600 ; N equal ; B 96 118 614 398 ; C 62 ; WX 600 ; N greater ; B 97 15 589 501 ; C 63 ; WX 600 ; N question ; B 183 -14 592 580 ; C 64 ; WX 600 ; N at ; B 65 -15 642 616 ; C 65 ; WX 600 ; N A ; B -9 0 632 562 ; C 66 ; WX 600 ; N B ; B 30 0 630 562 ; C 67 ; WX 600 ; N C ; B 74 -18 675 580 ; C 68 ; WX 600 ; N D ; B 30 0 664 562 ; C 69 ; WX 600 ; N E ; B 25 0 670 562 ; C 70 ; WX 600 ; N F ; B 39 0 684 562 ; C 71 ; WX 600 ; N G ; B 74 -18 675 580 ; C 72 ; WX 600 ; N H ; B 20 0 700 562 ; C 73 ; WX 600 ; N I ; B 77 0 643 562 ; C 74 ; WX 600 ; N J ; B 58 -18 721 562 ; C 75 ; WX 600 ; N K ; B 21 0 692 562 ; C 76 ; WX 600 ; N L ; B 39 0 636 562 ; C 77 ; WX 600 ; N M ; B -2 0 722 562 ; C 78 ; WX 600 ; N N ; B 8 -12 730 562 ; C 79 ; WX 600 ; N O ; B 74 -18 645 580 ; C 80 ; WX 600 ; N P ; B 48 0 643 562 ; C 81 ; WX 600 ; N Q ; B 83 -138 636 580 ; C 82 ; WX 600 ; N R ; B 24 0 617 562 ; C 83 ; WX 600 ; N S ; B 54 -22 673 582 ; C 84 ; WX 600 ; N T ; B 86 0 679 562 ; C 85 ; WX 600 ; N U ; B 101 -18 716 562 ; C 86 ; WX 600 ; N V ; B 84 0 733 562 ; C 87 ; WX 600 ; N W ; B 79 0 738 562 ; C 88 ; WX 600 ; N X ; B 12 0 690 562 ; C 89 ; WX 600 ; N Y ; B 109 0 709 562 ; C 90 ; WX 600 ; N Z ; B 62 0 637 562 ; C 91 ; WX 600 ; N bracketleft ; B 223 -102 606 616 ; C 92 ; WX 600 ; N backslash ; B 222 -77 496 626 ; C 93 ; WX 600 ; N bracketright ; B 103 -102 486 616 ; C 94 ; WX 600 ; N asciicircum ; B 171 250 556 616 ; C 95 ; WX 600 ; N underscore ; B -27 -125 585 -75 ; C 96 ; WX 600 ; N quoteleft ; B 297 277 487 562 ; C 97 ; WX 600 ; N a ; B 61 -15 593 454 ; C 98 ; WX 600 ; N b ; B 13 -15 636 626 ; C 99 ; WX 600 ; N c ; B 81 -15 631 459 ; C 100 ; WX 600 ; N d ; B 60 -15 645 626 ; C 101 ; WX 600 ; N e ; B 81 -15 605 454 ; C 102 ; WX 600 ; N f ; B 83 0 677 626 ; L i fi ; L l fl ; C 103 ; WX 600 ; N g ; B 40 -146 674 454 ; C 104 ; WX 600 ; N h ; B 18 0 615 626 ; C 105 ; WX 600 ; N i ; B 77 0 546 658 ; C 106 ; WX 600 ; N j ; B 36 -146 580 658 ; C 107 ; WX 600 ; N k ; B 33 0 643 626 ; C 108 ; WX 600 ; N l ; B 77 0 546 626 ; C 109 ; WX 600 ; N m ; B -22 0 649 454 ; C 110 ; WX 600 ; N n ; B 18 0 615 454 ; C 111 ; WX 600 ; N o ; B 71 -15 622 454 ; C 112 ; WX 600 ; N p ; B -32 -142 622 454 ; C 113 ; WX 600 ; N q ; B 60 -142 685 454 ; C 114 ; WX 600 ; N r ; B 47 0 655 454 ; C 115 ; WX 600 ; N s ; B 66 -17 608 459 ; C 116 ; WX 600 ; N t ; B 118 -15 567 562 ; C 117 ; WX 600 ; N u ; B 70 -15 592 439 ; C 118 ; WX 600 ; N v ; B 70 0 695 439 ; C 119 ; WX 600 ; N w ; B 53 0 712 439 ; C 120 ; WX 600 ; N x ; B 6 0 671 439 ; C 121 ; WX 600 ; N y ; B -21 -142 695 439 ; C 122 ; WX 600 ; N z ; B 81 0 614 439 ; C 123 ; WX 600 ; N braceleft ; B 203 -102 595 616 ; C 124 ; WX 600 ; N bar ; B 201 -250 505 750 ; C 125 ; WX 600 ; N braceright ; B 114 -102 506 616 ; C 126 ; WX 600 ; N asciitilde ; B 120 153 590 356 ; C 160 ; WX 600 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 600 ; N exclamdown ; B 196 -146 477 449 ; C 162 ; WX 600 ; N cent ; B 121 -49 605 614 ; C 163 ; WX 600 ; N sterling ; B 106 -28 650 611 ; C 164 ; WX 600 ; N fraction ; B 22 -60 708 661 ; C 165 ; WX 600 ; N yen ; B 98 0 710 562 ; C 166 ; WX 600 ; N florin ; B -57 -131 702 616 ; C 167 ; WX 600 ; N section ; B 74 -70 620 580 ; C 168 ; WX 600 ; N currency ; B 77 49 644 517 ; C 169 ; WX 600 ; N quotesingle ; B 303 277 493 562 ; C 170 ; WX 600 ; N quotedblleft ; B 190 277 594 562 ; C 171 ; WX 600 ; N guillemotleft ; B 62 70 639 446 ; C 172 ; WX 600 ; N guilsinglleft ; B 195 70 545 446 ; C 173 ; WX 600 ; N guilsinglright ; B 165 70 514 446 ; C 174 ; WX 600 ; N fi ; B 12 0 644 626 ; C 175 ; WX 600 ; N fl ; B 12 0 644 626 ; C 177 ; WX 600 ; N endash ; B 108 203 602 313 ; C 178 ; WX 600 ; N dagger ; B 175 -70 586 580 ; C 179 ; WX 600 ; N daggerdbl ; B 121 -70 587 580 ; C 180 ; WX 600 ; N periodcentered ; B 248 165 461 351 ; C 182 ; WX 600 ; N paragraph ; B 61 -70 700 580 ; C 183 ; WX 600 ; N bullet ; B 196 132 523 430 ; C 184 ; WX 600 ; N quotesinglbase ; B 144 -142 458 143 ; C 185 ; WX 600 ; N quotedblbase ; B 34 -142 560 143 ; C 186 ; WX 600 ; N quotedblright ; B 119 277 645 562 ; C 187 ; WX 600 ; N guillemotright ; B 71 70 647 446 ; C 188 ; WX 600 ; N ellipsis ; B 35 -15 587 116 ; C 189 ; WX 600 ; N perthousand ; B -45 -15 743 616 ; C 191 ; WX 600 ; N questiondown ; B 100 -146 509 449 ; C 193 ; WX 600 ; N grave ; B 272 508 503 661 ; C 194 ; WX 600 ; N acute ; B 312 508 609 661 ; C 195 ; WX 600 ; N circumflex ; B 212 483 607 657 ; C 196 ; WX 600 ; N tilde ; B 199 493 643 636 ; C 197 ; WX 600 ; N macron ; B 195 505 637 585 ; C 198 ; WX 600 ; N breve ; B 217 468 652 631 ; C 199 ; WX 600 ; N dotaccent ; B 348 498 493 638 ; C 200 ; WX 600 ; N dieresis ; B 246 498 595 638 ; C 202 ; WX 600 ; N ring ; B 319 481 528 678 ; C 203 ; WX 600 ; N cedilla ; B 168 -206 368 0 ; C 205 ; WX 600 ; N hungarumlaut ; B 171 488 729 661 ; C 206 ; WX 600 ; N ogonek ; B 143 -199 367 0 ; C 207 ; WX 600 ; N caron ; B 238 493 633 667 ; C 208 ; WX 600 ; N emdash ; B 33 203 677 313 ; C 225 ; WX 600 ; N AE ; B -29 0 708 562 ; C 227 ; WX 600 ; N ordfeminine ; B 188 196 526 580 ; C 232 ; WX 600 ; N Lslash ; B 39 0 636 562 ; C 233 ; WX 600 ; N Oslash ; B 48 -22 673 584 ; C 234 ; WX 600 ; N OE ; B 26 0 701 562 ; C 235 ; WX 600 ; N ordmasculine ; B 188 196 543 580 ; C 241 ; WX 600 ; N ae ; B 21 -15 652 454 ; C 245 ; WX 600 ; N dotlessi ; B 77 0 546 439 ; C 248 ; WX 600 ; N lslash ; B 77 0 587 626 ; C 249 ; WX 600 ; N oslash ; B 54 -24 638 463 ; C 250 ; WX 600 ; N oe ; B 18 -15 662 454 ; C 251 ; WX 600 ; N germandbls ; B 22 -15 629 626 ; C -1 ; WX 600 ; N Idieresis ; B 77 0 643 761 ; C -1 ; WX 600 ; N eacute ; B 81 -15 609 661 ; C -1 ; WX 600 ; N abreve ; B 61 -15 658 661 ; C -1 ; WX 600 ; N uhungarumlaut ; B 70 -15 769 661 ; C -1 ; WX 600 ; N ecaron ; B 81 -15 633 667 ; C -1 ; WX 600 ; N Ydieresis ; B 109 0 709 761 ; C -1 ; WX 600 ; N divide ; B 114 16 596 500 ; C -1 ; WX 600 ; N Yacute ; B 109 0 709 784 ; C -1 ; WX 600 ; N Acircumflex ; B -9 0 632 780 ; C -1 ; WX 600 ; N aacute ; B 61 -15 609 661 ; C -1 ; WX 600 ; N Ucircumflex ; B 101 -18 716 780 ; C -1 ; WX 600 ; N yacute ; B -21 -142 695 661 ; C -1 ; WX 600 ; N scommaaccent ; B 66 -250 608 459 ; C -1 ; WX 600 ; N ecircumflex ; B 81 -15 607 657 ; C -1 ; WX 600 ; N Uring ; B 101 -18 716 801 ; C -1 ; WX 600 ; N Udieresis ; B 101 -18 716 761 ; C -1 ; WX 600 ; N aogonek ; B 61 -199 593 454 ; C -1 ; WX 600 ; N Uacute ; B 101 -18 716 784 ; C -1 ; WX 600 ; N uogonek ; B 70 -199 592 439 ; C -1 ; WX 600 ; N Edieresis ; B 25 0 670 761 ; C -1 ; WX 600 ; N Dcroat ; B 30 0 664 562 ; C -1 ; WX 600 ; N commaaccent ; B 151 -250 385 -57 ; C -1 ; WX 600 ; N copyright ; B 53 -18 667 580 ; C -1 ; WX 600 ; N Emacron ; B 25 0 670 708 ; C -1 ; WX 600 ; N ccaron ; B 81 -15 633 667 ; C -1 ; WX 600 ; N aring ; B 61 -15 593 678 ; C -1 ; WX 600 ; N Ncommaaccent ; B 8 -250 730 562 ; C -1 ; WX 600 ; N lacute ; B 77 0 639 801 ; C -1 ; WX 600 ; N agrave ; B 61 -15 593 661 ; C -1 ; WX 600 ; N Tcommaaccent ; B 86 -250 679 562 ; C -1 ; WX 600 ; N Cacute ; B 74 -18 675 784 ; C -1 ; WX 600 ; N atilde ; B 61 -15 643 636 ; C -1 ; WX 600 ; N Edotaccent ; B 25 0 670 761 ; C -1 ; WX 600 ; N scaron ; B 66 -17 633 667 ; C -1 ; WX 600 ; N scedilla ; B 66 -206 608 459 ; C -1 ; WX 600 ; N iacute ; B 77 0 609 661 ; C -1 ; WX 600 ; N lozenge ; B 145 0 614 740 ; C -1 ; WX 600 ; N Rcaron ; B 24 0 659 790 ; C -1 ; WX 600 ; N Gcommaaccent ; B 74 -250 675 580 ; C -1 ; WX 600 ; N ucircumflex ; B 70 -15 597 657 ; C -1 ; WX 600 ; N acircumflex ; B 61 -15 607 657 ; C -1 ; WX 600 ; N Amacron ; B -9 0 633 708 ; C -1 ; WX 600 ; N rcaron ; B 47 0 655 667 ; C -1 ; WX 600 ; N ccedilla ; B 81 -206 631 459 ; C -1 ; WX 600 ; N Zdotaccent ; B 62 0 637 761 ; C -1 ; WX 600 ; N Thorn ; B 48 0 620 562 ; C -1 ; WX 600 ; N Omacron ; B 74 -18 663 708 ; C -1 ; WX 600 ; N Racute ; B 24 0 665 784 ; C -1 ; WX 600 ; N Sacute ; B 54 -22 673 784 ; C -1 ; WX 600 ; N dcaron ; B 60 -15 861 626 ; C -1 ; WX 600 ; N Umacron ; B 101 -18 716 708 ; C -1 ; WX 600 ; N uring ; B 70 -15 592 678 ; C -1 ; WX 600 ; N threesuperior ; B 193 222 526 616 ; C -1 ; WX 600 ; N Ograve ; B 74 -18 645 784 ; C -1 ; WX 600 ; N Agrave ; B -9 0 632 784 ; C -1 ; WX 600 ; N Abreve ; B -9 0 684 784 ; C -1 ; WX 600 ; N multiply ; B 104 39 606 478 ; C -1 ; WX 600 ; N uacute ; B 70 -15 599 661 ; C -1 ; WX 600 ; N Tcaron ; B 86 0 679 790 ; C -1 ; WX 600 ; N partialdiff ; B 91 -38 627 728 ; C -1 ; WX 600 ; N ydieresis ; B -21 -142 695 638 ; C -1 ; WX 600 ; N Nacute ; B 8 -12 730 784 ; C -1 ; WX 600 ; N icircumflex ; B 77 0 577 657 ; C -1 ; WX 600 ; N Ecircumflex ; B 25 0 670 780 ; C -1 ; WX 600 ; N adieresis ; B 61 -15 595 638 ; C -1 ; WX 600 ; N edieresis ; B 81 -15 605 638 ; C -1 ; WX 600 ; N cacute ; B 81 -15 649 661 ; C -1 ; WX 600 ; N nacute ; B 18 0 639 661 ; C -1 ; WX 600 ; N umacron ; B 70 -15 637 585 ; C -1 ; WX 600 ; N Ncaron ; B 8 -12 730 790 ; C -1 ; WX 600 ; N Iacute ; B 77 0 643 784 ; C -1 ; WX 600 ; N plusminus ; B 76 24 614 515 ; C -1 ; WX 600 ; N brokenbar ; B 217 -175 489 675 ; C -1 ; WX 600 ; N registered ; B 53 -18 667 580 ; C -1 ; WX 600 ; N Gbreve ; B 74 -18 684 784 ; C -1 ; WX 600 ; N Idotaccent ; B 77 0 643 761 ; C -1 ; WX 600 ; N summation ; B 15 -10 672 706 ; C -1 ; WX 600 ; N Egrave ; B 25 0 670 784 ; C -1 ; WX 600 ; N racute ; B 47 0 655 661 ; C -1 ; WX 600 ; N omacron ; B 71 -15 637 585 ; C -1 ; WX 600 ; N Zacute ; B 62 0 665 784 ; C -1 ; WX 600 ; N Zcaron ; B 62 0 659 790 ; C -1 ; WX 600 ; N greaterequal ; B 26 0 627 696 ; C -1 ; WX 600 ; N Eth ; B 30 0 664 562 ; C -1 ; WX 600 ; N Ccedilla ; B 74 -206 675 580 ; C -1 ; WX 600 ; N lcommaaccent ; B 77 -250 546 626 ; C -1 ; WX 600 ; N tcaron ; B 118 -15 627 703 ; C -1 ; WX 600 ; N eogonek ; B 81 -199 605 454 ; C -1 ; WX 600 ; N Uogonek ; B 101 -199 716 562 ; C -1 ; WX 600 ; N Aacute ; B -9 0 655 784 ; C -1 ; WX 600 ; N Adieresis ; B -9 0 632 761 ; C -1 ; WX 600 ; N egrave ; B 81 -15 605 661 ; C -1 ; WX 600 ; N zacute ; B 81 0 614 661 ; C -1 ; WX 600 ; N iogonek ; B 77 -199 546 658 ; C -1 ; WX 600 ; N Oacute ; B 74 -18 645 784 ; C -1 ; WX 600 ; N oacute ; B 71 -15 649 661 ; C -1 ; WX 600 ; N amacron ; B 61 -15 637 585 ; C -1 ; WX 600 ; N sacute ; B 66 -17 609 661 ; C -1 ; WX 600 ; N idieresis ; B 77 0 561 618 ; C -1 ; WX 600 ; N Ocircumflex ; B 74 -18 645 780 ; C -1 ; WX 600 ; N Ugrave ; B 101 -18 716 784 ; C -1 ; WX 600 ; N Delta ; B 6 0 594 688 ; C -1 ; WX 600 ; N thorn ; B -32 -142 622 626 ; C -1 ; WX 600 ; N twosuperior ; B 191 230 542 616 ; C -1 ; WX 600 ; N Odieresis ; B 74 -18 645 761 ; C -1 ; WX 600 ; N mu ; B 49 -142 592 439 ; C -1 ; WX 600 ; N igrave ; B 77 0 546 661 ; C -1 ; WX 600 ; N ohungarumlaut ; B 71 -15 809 661 ; C -1 ; WX 600 ; N Eogonek ; B 25 -199 670 562 ; C -1 ; WX 600 ; N dcroat ; B 60 -15 712 626 ; C -1 ; WX 600 ; N threequarters ; B 8 -60 699 661 ; C -1 ; WX 600 ; N Scedilla ; B 54 -206 673 582 ; C -1 ; WX 600 ; N lcaron ; B 77 0 731 626 ; C -1 ; WX 600 ; N Kcommaaccent ; B 21 -250 692 562 ; C -1 ; WX 600 ; N Lacute ; B 39 0 636 784 ; C -1 ; WX 600 ; N trademark ; B 86 230 869 562 ; C -1 ; WX 600 ; N edotaccent ; B 81 -15 605 638 ; C -1 ; WX 600 ; N Igrave ; B 77 0 643 784 ; C -1 ; WX 600 ; N Imacron ; B 77 0 663 708 ; C -1 ; WX 600 ; N Lcaron ; B 39 0 757 562 ; C -1 ; WX 600 ; N onehalf ; B 22 -60 716 661 ; C -1 ; WX 600 ; N lessequal ; B 26 0 671 696 ; C -1 ; WX 600 ; N ocircumflex ; B 71 -15 622 657 ; C -1 ; WX 600 ; N ntilde ; B 18 0 643 636 ; C -1 ; WX 600 ; N Uhungarumlaut ; B 101 -18 805 784 ; C -1 ; WX 600 ; N Eacute ; B 25 0 670 784 ; C -1 ; WX 600 ; N emacron ; B 81 -15 637 585 ; C -1 ; WX 600 ; N gbreve ; B 40 -146 674 661 ; C -1 ; WX 600 ; N onequarter ; B 13 -60 707 661 ; C -1 ; WX 600 ; N Scaron ; B 54 -22 689 790 ; C -1 ; WX 600 ; N Scommaaccent ; B 54 -250 673 582 ; C -1 ; WX 600 ; N Ohungarumlaut ; B 74 -18 795 784 ; C -1 ; WX 600 ; N degree ; B 173 243 570 616 ; C -1 ; WX 600 ; N ograve ; B 71 -15 622 661 ; C -1 ; WX 600 ; N Ccaron ; B 74 -18 689 790 ; C -1 ; WX 600 ; N ugrave ; B 70 -15 592 661 ; C -1 ; WX 600 ; N radical ; B 67 -104 635 778 ; C -1 ; WX 600 ; N Dcaron ; B 30 0 664 790 ; C -1 ; WX 600 ; N rcommaaccent ; B 47 -250 655 454 ; C -1 ; WX 600 ; N Ntilde ; B 8 -12 730 759 ; C -1 ; WX 600 ; N otilde ; B 71 -15 643 636 ; C -1 ; WX 600 ; N Rcommaaccent ; B 24 -250 617 562 ; C -1 ; WX 600 ; N Lcommaaccent ; B 39 -250 636 562 ; C -1 ; WX 600 ; N Atilde ; B -9 0 669 759 ; C -1 ; WX 600 ; N Aogonek ; B -9 -199 632 562 ; C -1 ; WX 600 ; N Aring ; B -9 0 632 801 ; C -1 ; WX 600 ; N Otilde ; B 74 -18 669 759 ; C -1 ; WX 600 ; N zdotaccent ; B 81 0 614 638 ; C -1 ; WX 600 ; N Ecaron ; B 25 0 670 790 ; C -1 ; WX 600 ; N Iogonek ; B 77 -199 643 562 ; C -1 ; WX 600 ; N kcommaaccent ; B 33 -250 643 626 ; C -1 ; WX 600 ; N minus ; B 114 203 596 313 ; C -1 ; WX 600 ; N Icircumflex ; B 77 0 643 780 ; C -1 ; WX 600 ; N ncaron ; B 18 0 633 667 ; C -1 ; WX 600 ; N tcommaaccent ; B 118 -250 567 562 ; C -1 ; WX 600 ; N logicalnot ; B 135 103 617 413 ; C -1 ; WX 600 ; N odieresis ; B 71 -15 622 638 ; C -1 ; WX 600 ; N udieresis ; B 70 -15 595 638 ; C -1 ; WX 600 ; N notequal ; B 30 -47 626 563 ; C -1 ; WX 600 ; N gcommaaccent ; B 40 -146 674 714 ; C -1 ; WX 600 ; N eth ; B 93 -27 661 626 ; C -1 ; WX 600 ; N zcaron ; B 81 0 643 667 ; C -1 ; WX 600 ; N ncommaaccent ; B 18 -250 615 454 ; C -1 ; WX 600 ; N onesuperior ; B 212 230 514 616 ; C -1 ; WX 600 ; N imacron ; B 77 0 575 585 ; C -1 ; WX 600 ; N Euro ; B 0 0 0 0 ; C -1 ; WX 600 ; N Ccircumflex ; B 18 -15 582 797 ; C -1 ; WX 600 ; N ccircumflex ; B 42 -16 558 656 ; C -1 ; WX 600 ; N Cdotaccent ; B 18 -15 582 720 ; C -1 ; WX 600 ; N cdotaccent ; B 42 -16 558 579 ; C -1 ; WX 600 ; N Ebreve ; B -5 0 605 782 ; C -1 ; WX 600 ; N ebreve ; B 44 -16 556 642 ; C -1 ; WX 600 ; N Gcircumflex ; B 16 -15 584 797 ; C -1 ; WX 600 ; N gcircumflex ; B 8 -198 592 656 ; C -1 ; WX 600 ; N Gdotaccent ; B 16 -15 584 720 ; C -1 ; WX 600 ; N gdotaccent ; B 8 -198 592 579 ; C -1 ; WX 600 ; N Hcircumflex ; B -12 0 612 797 ; C -1 ; WX 600 ; N hcircumflex ; B 14 0 586 837 ; C -1 ; WX 600 ; N Hbar ; B -12 0 612 565 ; C -1 ; WX 600 ; N hbar ; B 29 0 571 648 ; C -1 ; WX 600 ; N Itilde ; B 34 0 566 733 ; C -1 ; WX 600 ; N itilde ; B 40 0 560 591 ; C -1 ; WX 600 ; N Ibreve ; B 36 0 564 782 ; C -1 ; WX 600 ; N ibreve ; B 40 0 560 642 ; C -1 ; WX 600 ; N IJ ; B -51 -15 651 565 ; C -1 ; WX 600 ; N ij ; B -14 -198 614 604 ; C -1 ; WX 600 ; N Jcircumflex ; B -21 -15 621 797 ; C -1 ; WX 600 ; N jcircumflex ; B 20 -198 580 732 ; C -1 ; WX 600 ; N kgreenlandic ; B 26 0 574 423 ; C -1 ; WX 600 ; N Ldot ; B 21 0 579 565 ; C -1 ; WX 600 ; N ldot ; B 34 0 566 604 ; C -1 ; WX 600 ; N Obreve ; B 22 -15 578 782 ; C -1 ; WX 600 ; N obreve ; B 46 -16 555 642 ; C -1 ; WX 600 ; N Scircumflex ; B 28 -15 572 797 ; C -1 ; WX 600 ; N scircumflex ; B 54 -16 546 656 ; C -1 ; WX 600 ; N Tbar ; B 28 0 572 565 ; C -1 ; WX 600 ; N tbar ; B 51 -16 520 573 ; C -1 ; WX 600 ; N Tcedilla ; B 86 -250 679 562 ; C -1 ; WX 600 ; N tcedilla ; B 118 -250 567 562 ; C -1 ; WX 600 ; N Utilde ; B 12 -15 588 733 ; C -1 ; WX 600 ; N utilde ; B 53 -12 547 591 ; C -1 ; WX 600 ; N Ubreve ; B 12 -15 588 782 ; C -1 ; WX 600 ; N ubreve ; B 53 -12 547 642 ; C -1 ; WX 600 ; N Wcircumflex ; B -4 0 604 797 ; C -1 ; WX 600 ; N wcircumflex ; B 9 0 591 656 ; C -1 ; WX 600 ; N Ycircumflex ; B 25 0 575 797 ; C -1 ; WX 600 ; N ycircumflex ; B -26 -198 626 656 ; C -1 ; WX 600 ; N longs ; B 6 0 594 604 ; C -1 ; WX 600 ; N infinity ; B 5 120 595 484 ; EndCharMetrics EndFontMetrics pmw-5.22/fontmetrics/Courier.afm0000644000222100022210000004251014541067540014775 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 17:27:09 1997 Comment PH added entry for Euro character, copied from a different version, 19 July 2009. Comment PH added additional characters (after Euro) 18 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43050 Comment VMusage 39754 50779 FontName Courier FullName Courier FamilyName Courier Weight Medium ItalicAngle 0 IsFixedPitch true FontBBox -23 -250 715 805 UnderlinePosition -100 UnderlineThickness 50 Version 003.000 Notice Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 562 XHeight 426 Ascender 629 Descender -157 StdHW 51 StdVW 51 StartCharMetrics 361 C 32 ; WX 600 ; N space ; B 0 0 0 0 ; C 33 ; WX 600 ; N exclam ; B 236 -15 364 572 ; C 34 ; WX 600 ; N quotedbl ; B 187 328 413 562 ; C 35 ; WX 600 ; N numbersign ; B 93 -32 507 639 ; C 36 ; WX 600 ; N dollar ; B 105 -126 496 662 ; C 37 ; WX 600 ; N percent ; B 81 -15 518 622 ; C 38 ; WX 600 ; N ampersand ; B 63 -15 538 543 ; C 39 ; WX 600 ; N quoteright ; B 213 328 376 562 ; C 40 ; WX 600 ; N parenleft ; B 269 -108 440 622 ; C 41 ; WX 600 ; N parenright ; B 160 -108 331 622 ; C 42 ; WX 600 ; N asterisk ; B 116 257 484 607 ; C 43 ; WX 600 ; N plus ; B 80 44 520 470 ; C 44 ; WX 600 ; N comma ; B 181 -112 344 122 ; C 45 ; WX 600 ; N hyphen ; B 103 231 497 285 ; C 46 ; WX 600 ; N period ; B 229 -15 371 109 ; C 47 ; WX 600 ; N slash ; B 125 -80 475 629 ; C 48 ; WX 600 ; N zero ; B 106 -15 494 622 ; C 49 ; WX 600 ; N one ; B 96 0 505 622 ; C 50 ; WX 600 ; N two ; B 70 0 471 622 ; C 51 ; WX 600 ; N three ; B 75 -15 466 622 ; C 52 ; WX 600 ; N four ; B 78 0 500 622 ; C 53 ; WX 600 ; N five ; B 92 -15 497 607 ; C 54 ; WX 600 ; N six ; B 111 -15 497 622 ; C 55 ; WX 600 ; N seven ; B 82 0 483 607 ; C 56 ; WX 600 ; N eight ; B 102 -15 498 622 ; C 57 ; WX 600 ; N nine ; B 96 -15 489 622 ; C 58 ; WX 600 ; N colon ; B 229 -15 371 385 ; C 59 ; WX 600 ; N semicolon ; B 181 -112 371 385 ; C 60 ; WX 600 ; N less ; B 41 42 519 472 ; C 61 ; WX 600 ; N equal ; B 80 138 520 376 ; C 62 ; WX 600 ; N greater ; B 66 42 544 472 ; C 63 ; WX 600 ; N question ; B 129 -15 492 572 ; C 64 ; WX 600 ; N at ; B 77 -15 533 622 ; C 65 ; WX 600 ; N A ; B 3 0 597 562 ; C 66 ; WX 600 ; N B ; B 43 0 559 562 ; C 67 ; WX 600 ; N C ; B 41 -18 540 580 ; C 68 ; WX 600 ; N D ; B 43 0 574 562 ; C 69 ; WX 600 ; N E ; B 53 0 550 562 ; C 70 ; WX 600 ; N F ; B 53 0 545 562 ; C 71 ; WX 600 ; N G ; B 31 -18 575 580 ; C 72 ; WX 600 ; N H ; B 32 0 568 562 ; C 73 ; WX 600 ; N I ; B 96 0 504 562 ; C 74 ; WX 600 ; N J ; B 34 -18 566 562 ; C 75 ; WX 600 ; N K ; B 38 0 582 562 ; C 76 ; WX 600 ; N L ; B 47 0 554 562 ; C 77 ; WX 600 ; N M ; B 4 0 596 562 ; C 78 ; WX 600 ; N N ; B 7 -13 593 562 ; C 79 ; WX 600 ; N O ; B 43 -18 557 580 ; C 80 ; WX 600 ; N P ; B 79 0 558 562 ; C 81 ; WX 600 ; N Q ; B 43 -138 557 580 ; C 82 ; WX 600 ; N R ; B 38 0 588 562 ; C 83 ; WX 600 ; N S ; B 72 -20 529 580 ; C 84 ; WX 600 ; N T ; B 38 0 563 562 ; C 85 ; WX 600 ; N U ; B 17 -18 583 562 ; C 86 ; WX 600 ; N V ; B -4 -13 604 562 ; C 87 ; WX 600 ; N W ; B -3 -13 603 562 ; C 88 ; WX 600 ; N X ; B 23 0 577 562 ; C 89 ; WX 600 ; N Y ; B 24 0 576 562 ; C 90 ; WX 600 ; N Z ; B 86 0 514 562 ; C 91 ; WX 600 ; N bracketleft ; B 269 -108 442 622 ; C 92 ; WX 600 ; N backslash ; B 118 -80 482 629 ; C 93 ; WX 600 ; N bracketright ; B 158 -108 331 622 ; C 94 ; WX 600 ; N asciicircum ; B 94 354 506 622 ; C 95 ; WX 600 ; N underscore ; B 0 -125 600 -75 ; C 96 ; WX 600 ; N quoteleft ; B 224 328 387 562 ; C 97 ; WX 600 ; N a ; B 53 -15 559 441 ; C 98 ; WX 600 ; N b ; B 14 -15 575 629 ; C 99 ; WX 600 ; N c ; B 66 -15 529 441 ; C 100 ; WX 600 ; N d ; B 45 -15 591 629 ; C 101 ; WX 600 ; N e ; B 66 -15 548 441 ; C 102 ; WX 600 ; N f ; B 114 0 531 629 ; L i fi ; L l fl ; C 103 ; WX 600 ; N g ; B 45 -157 566 441 ; C 104 ; WX 600 ; N h ; B 18 0 582 629 ; C 105 ; WX 600 ; N i ; B 95 0 505 657 ; C 106 ; WX 600 ; N j ; B 82 -157 410 657 ; C 107 ; WX 600 ; N k ; B 43 0 580 629 ; C 108 ; WX 600 ; N l ; B 95 0 505 629 ; C 109 ; WX 600 ; N m ; B -5 0 605 441 ; C 110 ; WX 600 ; N n ; B 26 0 575 441 ; C 111 ; WX 600 ; N o ; B 62 -15 538 441 ; C 112 ; WX 600 ; N p ; B 9 -157 555 441 ; C 113 ; WX 600 ; N q ; B 45 -157 591 441 ; C 114 ; WX 600 ; N r ; B 60 0 559 441 ; C 115 ; WX 600 ; N s ; B 80 -15 513 441 ; C 116 ; WX 600 ; N t ; B 87 -15 530 561 ; C 117 ; WX 600 ; N u ; B 21 -15 562 426 ; C 118 ; WX 600 ; N v ; B 10 -10 590 426 ; C 119 ; WX 600 ; N w ; B -4 -10 604 426 ; C 120 ; WX 600 ; N x ; B 20 0 580 426 ; C 121 ; WX 600 ; N y ; B 7 -157 592 426 ; C 122 ; WX 600 ; N z ; B 99 0 502 426 ; C 123 ; WX 600 ; N braceleft ; B 182 -108 437 622 ; C 124 ; WX 600 ; N bar ; B 275 -250 326 750 ; C 125 ; WX 600 ; N braceright ; B 163 -108 418 622 ; C 126 ; WX 600 ; N asciitilde ; B 63 197 540 320 ; C 160 ; WX 600 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 600 ; N exclamdown ; B 236 -157 364 430 ; C 162 ; WX 600 ; N cent ; B 96 -49 500 614 ; C 163 ; WX 600 ; N sterling ; B 84 -21 521 611 ; C 164 ; WX 600 ; N fraction ; B 92 -57 509 665 ; C 165 ; WX 600 ; N yen ; B 26 0 574 562 ; C 166 ; WX 600 ; N florin ; B 4 -143 539 622 ; C 167 ; WX 600 ; N section ; B 113 -78 488 580 ; C 168 ; WX 600 ; N currency ; B 73 58 527 506 ; C 169 ; WX 600 ; N quotesingle ; B 259 328 341 562 ; C 170 ; WX 600 ; N quotedblleft ; B 143 328 471 562 ; C 171 ; WX 600 ; N guillemotleft ; B 37 70 563 446 ; C 172 ; WX 600 ; N guilsinglleft ; B 149 70 451 446 ; C 173 ; WX 600 ; N guilsinglright ; B 149 70 451 446 ; C 174 ; WX 600 ; N fi ; B 3 0 597 629 ; C 175 ; WX 600 ; N fl ; B 3 0 597 629 ; C 177 ; WX 600 ; N endash ; B 75 231 525 285 ; C 178 ; WX 600 ; N dagger ; B 141 -78 459 580 ; C 179 ; WX 600 ; N daggerdbl ; B 141 -78 459 580 ; C 180 ; WX 600 ; N periodcentered ; B 222 189 378 327 ; C 182 ; WX 600 ; N paragraph ; B 50 -78 511 562 ; C 183 ; WX 600 ; N bullet ; B 172 130 428 383 ; C 184 ; WX 600 ; N quotesinglbase ; B 213 -134 376 100 ; C 185 ; WX 600 ; N quotedblbase ; B 143 -134 457 100 ; C 186 ; WX 600 ; N quotedblright ; B 143 328 457 562 ; C 187 ; WX 600 ; N guillemotright ; B 37 70 563 446 ; C 188 ; WX 600 ; N ellipsis ; B 37 -15 563 111 ; C 189 ; WX 600 ; N perthousand ; B 3 -15 600 622 ; C 191 ; WX 600 ; N questiondown ; B 108 -157 471 430 ; C 193 ; WX 600 ; N grave ; B 151 497 378 672 ; C 194 ; WX 600 ; N acute ; B 242 497 469 672 ; C 195 ; WX 600 ; N circumflex ; B 124 477 476 654 ; C 196 ; WX 600 ; N tilde ; B 105 489 503 606 ; C 197 ; WX 600 ; N macron ; B 120 525 480 565 ; C 198 ; WX 600 ; N breve ; B 153 501 447 609 ; C 199 ; WX 600 ; N dotaccent ; B 249 537 352 640 ; C 200 ; WX 600 ; N dieresis ; B 148 537 453 640 ; C 202 ; WX 600 ; N ring ; B 218 463 382 627 ; C 203 ; WX 600 ; N cedilla ; B 224 -151 362 10 ; C 205 ; WX 600 ; N hungarumlaut ; B 133 497 540 672 ; C 206 ; WX 600 ; N ogonek ; B 211 -172 407 4 ; C 207 ; WX 600 ; N caron ; B 124 492 476 669 ; C 208 ; WX 600 ; N emdash ; B 0 231 600 285 ; C 225 ; WX 600 ; N AE ; B 3 0 550 562 ; C 227 ; WX 600 ; N ordfeminine ; B 156 249 442 580 ; C 232 ; WX 600 ; N Lslash ; B 47 0 554 562 ; C 233 ; WX 600 ; N Oslash ; B 43 -80 557 629 ; C 234 ; WX 600 ; N OE ; B 7 0 567 562 ; C 235 ; WX 600 ; N ordmasculine ; B 157 249 443 580 ; C 241 ; WX 600 ; N ae ; B 19 -15 570 441 ; C 245 ; WX 600 ; N dotlessi ; B 95 0 505 426 ; C 248 ; WX 600 ; N lslash ; B 95 0 505 629 ; C 249 ; WX 600 ; N oslash ; B 62 -80 538 506 ; C 250 ; WX 600 ; N oe ; B 19 -15 559 441 ; C 251 ; WX 600 ; N germandbls ; B 48 -15 588 629 ; C -1 ; WX 600 ; N Idieresis ; B 96 0 504 753 ; C -1 ; WX 600 ; N eacute ; B 66 -15 548 672 ; C -1 ; WX 600 ; N abreve ; B 53 -15 559 609 ; C -1 ; WX 600 ; N uhungarumlaut ; B 21 -15 580 672 ; C -1 ; WX 600 ; N ecaron ; B 66 -15 548 669 ; C -1 ; WX 600 ; N Ydieresis ; B 24 0 576 753 ; C -1 ; WX 600 ; N divide ; B 87 48 513 467 ; C -1 ; WX 600 ; N Yacute ; B 24 0 576 805 ; C -1 ; WX 600 ; N Acircumflex ; B 3 0 597 787 ; C -1 ; WX 600 ; N aacute ; B 53 -15 559 672 ; C -1 ; WX 600 ; N Ucircumflex ; B 17 -18 583 787 ; C -1 ; WX 600 ; N yacute ; B 7 -157 592 672 ; C -1 ; WX 600 ; N scommaaccent ; B 80 -250 513 441 ; C -1 ; WX 600 ; N ecircumflex ; B 66 -15 548 654 ; C -1 ; WX 600 ; N Uring ; B 17 -18 583 760 ; C -1 ; WX 600 ; N Udieresis ; B 17 -18 583 753 ; C -1 ; WX 600 ; N aogonek ; B 53 -172 587 441 ; C -1 ; WX 600 ; N Uacute ; B 17 -18 583 805 ; C -1 ; WX 600 ; N uogonek ; B 21 -172 590 426 ; C -1 ; WX 600 ; N Edieresis ; B 53 0 550 753 ; C -1 ; WX 600 ; N Dcroat ; B 30 0 574 562 ; C -1 ; WX 600 ; N commaaccent ; B 198 -250 335 -58 ; C -1 ; WX 600 ; N copyright ; B 0 -18 600 580 ; C -1 ; WX 600 ; N Emacron ; B 53 0 550 698 ; C -1 ; WX 600 ; N ccaron ; B 66 -15 529 669 ; C -1 ; WX 600 ; N aring ; B 53 -15 559 627 ; C -1 ; WX 600 ; N Ncommaaccent ; B 7 -250 593 562 ; C -1 ; WX 600 ; N lacute ; B 95 0 505 805 ; C -1 ; WX 600 ; N agrave ; B 53 -15 559 672 ; C -1 ; WX 600 ; N Tcommaaccent ; B 38 -250 563 562 ; C -1 ; WX 600 ; N Cacute ; B 41 -18 540 805 ; C -1 ; WX 600 ; N atilde ; B 53 -15 559 606 ; C -1 ; WX 600 ; N Edotaccent ; B 53 0 550 753 ; C -1 ; WX 600 ; N scaron ; B 80 -15 513 669 ; C -1 ; WX 600 ; N scedilla ; B 80 -151 513 441 ; C -1 ; WX 600 ; N iacute ; B 95 0 505 672 ; C -1 ; WX 600 ; N lozenge ; B 18 0 443 706 ; C -1 ; WX 600 ; N Rcaron ; B 38 0 588 802 ; C -1 ; WX 600 ; N Gcommaaccent ; B 31 -250 575 580 ; C -1 ; WX 600 ; N ucircumflex ; B 21 -15 562 654 ; C -1 ; WX 600 ; N acircumflex ; B 53 -15 559 654 ; C -1 ; WX 600 ; N Amacron ; B 3 0 597 698 ; C -1 ; WX 600 ; N rcaron ; B 60 0 559 669 ; C -1 ; WX 600 ; N ccedilla ; B 66 -151 529 441 ; C -1 ; WX 600 ; N Zdotaccent ; B 86 0 514 753 ; C -1 ; WX 600 ; N Thorn ; B 79 0 538 562 ; C -1 ; WX 600 ; N Omacron ; B 43 -18 557 698 ; C -1 ; WX 600 ; N Racute ; B 38 0 588 805 ; C -1 ; WX 600 ; N Sacute ; B 72 -20 529 805 ; C -1 ; WX 600 ; N dcaron ; B 45 -15 715 629 ; C -1 ; WX 600 ; N Umacron ; B 17 -18 583 698 ; C -1 ; WX 600 ; N uring ; B 21 -15 562 627 ; C -1 ; WX 600 ; N threesuperior ; B 155 240 406 622 ; C -1 ; WX 600 ; N Ograve ; B 43 -18 557 805 ; C -1 ; WX 600 ; N Agrave ; B 3 0 597 805 ; C -1 ; WX 600 ; N Abreve ; B 3 0 597 732 ; C -1 ; WX 600 ; N multiply ; B 87 43 515 470 ; C -1 ; WX 600 ; N uacute ; B 21 -15 562 672 ; C -1 ; WX 600 ; N Tcaron ; B 38 0 563 802 ; C -1 ; WX 600 ; N partialdiff ; B 17 -38 459 710 ; C -1 ; WX 600 ; N ydieresis ; B 7 -157 592 620 ; C -1 ; WX 600 ; N Nacute ; B 7 -13 593 805 ; C -1 ; WX 600 ; N icircumflex ; B 94 0 505 654 ; C -1 ; WX 600 ; N Ecircumflex ; B 53 0 550 787 ; C -1 ; WX 600 ; N adieresis ; B 53 -15 559 620 ; C -1 ; WX 600 ; N edieresis ; B 66 -15 548 620 ; C -1 ; WX 600 ; N cacute ; B 66 -15 529 672 ; C -1 ; WX 600 ; N nacute ; B 26 0 575 672 ; C -1 ; WX 600 ; N umacron ; B 21 -15 562 565 ; C -1 ; WX 600 ; N Ncaron ; B 7 -13 593 802 ; C -1 ; WX 600 ; N Iacute ; B 96 0 504 805 ; C -1 ; WX 600 ; N plusminus ; B 87 44 513 558 ; C -1 ; WX 600 ; N brokenbar ; B 275 -175 326 675 ; C -1 ; WX 600 ; N registered ; B 0 -18 600 580 ; C -1 ; WX 600 ; N Gbreve ; B 31 -18 575 732 ; C -1 ; WX 600 ; N Idotaccent ; B 96 0 504 753 ; C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ; C -1 ; WX 600 ; N Egrave ; B 53 0 550 805 ; C -1 ; WX 600 ; N racute ; B 60 0 559 672 ; C -1 ; WX 600 ; N omacron ; B 62 -15 538 565 ; C -1 ; WX 600 ; N Zacute ; B 86 0 514 805 ; C -1 ; WX 600 ; N Zcaron ; B 86 0 514 802 ; C -1 ; WX 600 ; N greaterequal ; B 98 0 502 710 ; C -1 ; WX 600 ; N Eth ; B 30 0 574 562 ; C -1 ; WX 600 ; N Ccedilla ; B 41 -151 540 580 ; C -1 ; WX 600 ; N lcommaaccent ; B 95 -250 505 629 ; C -1 ; WX 600 ; N tcaron ; B 87 -15 530 717 ; C -1 ; WX 600 ; N eogonek ; B 66 -172 548 441 ; C -1 ; WX 600 ; N Uogonek ; B 17 -172 583 562 ; C -1 ; WX 600 ; N Aacute ; B 3 0 597 805 ; C -1 ; WX 600 ; N Adieresis ; B 3 0 597 753 ; C -1 ; WX 600 ; N egrave ; B 66 -15 548 672 ; C -1 ; WX 600 ; N zacute ; B 99 0 502 672 ; C -1 ; WX 600 ; N iogonek ; B 95 -172 505 657 ; C -1 ; WX 600 ; N Oacute ; B 43 -18 557 805 ; C -1 ; WX 600 ; N oacute ; B 62 -15 538 672 ; C -1 ; WX 600 ; N amacron ; B 53 -15 559 565 ; C -1 ; WX 600 ; N sacute ; B 80 -15 513 672 ; C -1 ; WX 600 ; N idieresis ; B 95 0 505 620 ; C -1 ; WX 600 ; N Ocircumflex ; B 43 -18 557 787 ; C -1 ; WX 600 ; N Ugrave ; B 17 -18 583 805 ; C -1 ; WX 600 ; N Delta ; B 6 0 598 688 ; C -1 ; WX 600 ; N thorn ; B -6 -157 555 629 ; C -1 ; WX 600 ; N twosuperior ; B 177 249 424 622 ; C -1 ; WX 600 ; N Odieresis ; B 43 -18 557 753 ; C -1 ; WX 600 ; N mu ; B 21 -157 562 426 ; C -1 ; WX 600 ; N igrave ; B 95 0 505 672 ; C -1 ; WX 600 ; N ohungarumlaut ; B 62 -15 580 672 ; C -1 ; WX 600 ; N Eogonek ; B 53 -172 561 562 ; C -1 ; WX 600 ; N dcroat ; B 45 -15 591 629 ; C -1 ; WX 600 ; N threequarters ; B 8 -56 593 666 ; C -1 ; WX 600 ; N Scedilla ; B 72 -151 529 580 ; C -1 ; WX 600 ; N lcaron ; B 95 0 533 629 ; C -1 ; WX 600 ; N Kcommaaccent ; B 38 -250 582 562 ; C -1 ; WX 600 ; N Lacute ; B 47 0 554 805 ; C -1 ; WX 600 ; N trademark ; B -23 263 623 562 ; C -1 ; WX 600 ; N edotaccent ; B 66 -15 548 620 ; C -1 ; WX 600 ; N Igrave ; B 96 0 504 805 ; C -1 ; WX 600 ; N Imacron ; B 96 0 504 698 ; C -1 ; WX 600 ; N Lcaron ; B 47 0 554 562 ; C -1 ; WX 600 ; N onehalf ; B 0 -57 611 665 ; C -1 ; WX 600 ; N lessequal ; B 98 0 502 710 ; C -1 ; WX 600 ; N ocircumflex ; B 62 -15 538 654 ; C -1 ; WX 600 ; N ntilde ; B 26 0 575 606 ; C -1 ; WX 600 ; N Uhungarumlaut ; B 17 -18 590 805 ; C -1 ; WX 600 ; N Eacute ; B 53 0 550 805 ; C -1 ; WX 600 ; N emacron ; B 66 -15 548 565 ; C -1 ; WX 600 ; N gbreve ; B 45 -157 566 609 ; C -1 ; WX 600 ; N onequarter ; B 0 -57 600 665 ; C -1 ; WX 600 ; N Scaron ; B 72 -20 529 802 ; C -1 ; WX 600 ; N Scommaaccent ; B 72 -250 529 580 ; C -1 ; WX 600 ; N Ohungarumlaut ; B 43 -18 580 805 ; C -1 ; WX 600 ; N degree ; B 123 269 477 622 ; C -1 ; WX 600 ; N ograve ; B 62 -15 538 672 ; C -1 ; WX 600 ; N Ccaron ; B 41 -18 540 802 ; C -1 ; WX 600 ; N ugrave ; B 21 -15 562 672 ; C -1 ; WX 600 ; N radical ; B 3 -15 597 792 ; C -1 ; WX 600 ; N Dcaron ; B 43 0 574 802 ; C -1 ; WX 600 ; N rcommaaccent ; B 60 -250 559 441 ; C -1 ; WX 600 ; N Ntilde ; B 7 -13 593 729 ; C -1 ; WX 600 ; N otilde ; B 62 -15 538 606 ; C -1 ; WX 600 ; N Rcommaaccent ; B 38 -250 588 562 ; C -1 ; WX 600 ; N Lcommaaccent ; B 47 -250 554 562 ; C -1 ; WX 600 ; N Atilde ; B 3 0 597 729 ; C -1 ; WX 600 ; N Aogonek ; B 3 -172 608 562 ; C -1 ; WX 600 ; N Aring ; B 3 0 597 750 ; C -1 ; WX 600 ; N Otilde ; B 43 -18 557 729 ; C -1 ; WX 600 ; N zdotaccent ; B 99 0 502 620 ; C -1 ; WX 600 ; N Ecaron ; B 53 0 550 802 ; C -1 ; WX 600 ; N Iogonek ; B 96 -172 504 562 ; C -1 ; WX 600 ; N kcommaaccent ; B 43 -250 580 629 ; C -1 ; WX 600 ; N minus ; B 80 232 520 283 ; C -1 ; WX 600 ; N Icircumflex ; B 96 0 504 787 ; C -1 ; WX 600 ; N ncaron ; B 26 0 575 669 ; C -1 ; WX 600 ; N tcommaaccent ; B 87 -250 530 561 ; C -1 ; WX 600 ; N logicalnot ; B 87 108 513 369 ; C -1 ; WX 600 ; N odieresis ; B 62 -15 538 620 ; C -1 ; WX 600 ; N udieresis ; B 21 -15 562 620 ; C -1 ; WX 600 ; N notequal ; B 15 -16 540 529 ; C -1 ; WX 600 ; N gcommaaccent ; B 45 -157 566 708 ; C -1 ; WX 600 ; N eth ; B 62 -15 538 629 ; C -1 ; WX 600 ; N zcaron ; B 99 0 502 669 ; C -1 ; WX 600 ; N ncommaaccent ; B 26 -250 575 441 ; C -1 ; WX 600 ; N onesuperior ; B 172 249 428 622 ; C -1 ; WX 600 ; N imacron ; B 95 0 505 565 ; C -1 ; WX 600 ; N Euro ; B 0 0 0 0 ; C -1 ; WX 600 ; N Ccircumflex ; B 64 -16 536 780 ; C -1 ; WX 600 ; N ccircumflex ; B 74 -16 526 634 ; C -1 ; WX 600 ; N Cdotaccent ; B 64 -16 536 720 ; C -1 ; WX 600 ; N cdotaccent ; B 74 -16 526 574 ; C -1 ; WX 600 ; N Ebreve ; B 62 0 539 759 ; C -1 ; WX 600 ; N ebreve ; B 72 -16 528 613 ; C -1 ; WX 600 ; N Gcircumflex ; B 50 -16 550 780 ; C -1 ; WX 600 ; N gcircumflex ; B 50 -186 549 634 ; C -1 ; WX 600 ; N Gdotaccent ; B 50 -16 550 720 ; C -1 ; WX 600 ; N gdotaccent ; B 50 -186 549 574 ; C -1 ; WX 600 ; N Hcircumflex ; B 50 0 550 780 ; C -1 ; WX 600 ; N hcircumflex ; B 46 0 554 821 ; C -1 ; WX 600 ; N Hbar ; B 52 0 548 563 ; C -1 ; WX 600 ; N hbar ; B 46 0 554 604 ; C -1 ; WX 600 ; N Itilde ; B 114 0 486 715 ; C -1 ; WX 600 ; N itilde ; B 92 0 508 567 ; C -1 ; WX 600 ; N Ibreve ; B 114 0 486 759 ; C -1 ; WX 600 ; N ibreve ; B 92 0 508 613 ; C -1 ; WX 600 ; N IJ ; B 30 -16 570 563 ; C -1 ; WX 600 ; N ij ; B 120 -186 480 624 ; C -1 ; WX 600 ; N Jcircumflex ; B 50 -16 550 780 ; C -1 ; WX 600 ; N jcircumflex ; B 144 -186 457 725 ; C -1 ; WX 600 ; N kgreenlandic ; B 70 0 530 418 ; C -1 ; WX 600 ; N Ldot ; B 70 0 530 563 ; C -1 ; WX 600 ; N ldot ; B 80 0 521 604 ; C -1 ; WX 600 ; N napostrophe ; B 56 0 544 431 ; C -1 ; WX 600 ; N Eng ; B 30 -186 570 563 ; C -1 ; WX 600 ; N eng ; B 56 -186 485 431 ; C -1 ; WX 600 ; N Obreve ; B 50 -16 549 759 ; C -1 ; WX 600 ; N obreve ; B 8 -125 592 563 ; C -1 ; WX 600 ; N Scircumflex ; B 92 -16 508 780 ; C -1 ; WX 600 ; N scircumflex ; B 104 -16 496 634 ; C -1 ; WX 600 ; N Tbar ; B 72 0 527 563 ; C -1 ; WX 600 ; N tbar ; B 72 -16 528 563 ; C -1 ; WX 600 ; N Tcedilla ; B 38 -250 563 562 ; C -1 ; WX 600 ; N tcedilla ; B 87 -250 530 561 ; C -1 ; WX 600 ; N Utilde ; B 40 -16 560 715 ; C -1 ; WX 600 ; N utilde ; B 50 -16 550 567 ; C -1 ; WX 600 ; N Ubreve ; B 40 -16 560 759 ; C -1 ; WX 600 ; N ubreve ; B 50 -16 550 613 ; C -1 ; WX 600 ; N Wcircumflex ; B 14 0 586 780 ; C -1 ; WX 600 ; N wcircumflex ; B 30 0 571 634 ; C -1 ; WX 600 ; N Ycircumflex ; B 40 0 559 780 ; C -1 ; WX 600 ; N ycircumflex ; B 50 -186 550 634 ; C -1 ; WX 600 ; N longs ; B 82 0 518 604 ; C -1 ; WX 600 ; N infinity ; B 34 192 566 432 ; EndCharMetrics EndFontMetrics pmw-5.22/fontmetrics/AvantGarde-BookOblique.afm0000644000222100022210000011051314541067540017611 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 14:07:08 1997 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43084 Comment UniqueID 43084 Comment VMusage 11964 62330 FontName AvantGarde-BookOblique FullName ITC Avant Garde Gothic Book Oblique FamilyName ITC Avant Garde Gothic Weight Book ItalicAngle -10.5 IsFixedPitch false FontBBox -113 -222 1279 955 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 740 XHeight 547 Ascender 740 Descender -192 StdHW 63 StdVW 70 StartCharMetrics 361 C 32 ; WX 277 ; N space ; B 0 0 0 0 ; C 33 ; WX 295 ; N exclam ; B 111 0 322 740 ; C 34 ; WX 309 ; N quotedbl ; B 130 444 410 740 ; C 35 ; WX 554 ; N numbersign ; B 71 0 620 740 ; C 36 ; WX 554 ; N dollar ; B 107 -70 581 811 ; C 37 ; WX 775 ; N percent ; B 124 -13 787 751 ; C 38 ; WX 757 ; N ampersand ; B 92 -12 775 753 ; C 39 ; WX 351 ; N quoteright ; B 195 546 393 740 ; C 40 ; WX 369 ; N parenleft ; B 89 -205 495 757 ; C 41 ; WX 369 ; N parenright ; B -24 -205 382 757 ; C 42 ; WX 425 ; N asterisk ; B 170 446 479 740 ; C 43 ; WX 606 ; N plus ; B 92 0 608 506 ; C 44 ; WX 277 ; N comma ; B 2 -67 199 126 ; C 45 ; WX 332 ; N hyphen ; B 76 248 360 315 ; C 46 ; WX 277 ; N period ; B 102 0 199 126 ; C 47 ; WX 437 ; N slash ; B 25 -100 540 740 ; C 48 ; WX 554 ; N zero ; B 71 -13 622 753 ; C 49 ; WX 554 ; N one ; B 260 0 473 740 ; C 50 ; WX 554 ; N two ; B 40 0 615 753 ; C 51 ; WX 554 ; N three ; B 73 -13 565 753 ; C 52 ; WX 554 ; N four ; B 39 0 598 740 ; C 53 ; WX 554 ; N five ; B 69 -13 605 740 ; C 54 ; WX 554 ; N six ; B 65 -13 580 739 ; C 55 ; WX 554 ; N seven ; B 110 0 628 740 ; C 56 ; WX 554 ; N eight ; B 77 -13 580 753 ; C 57 ; WX 554 ; N nine ; B 111 0 626 752 ; C 58 ; WX 277 ; N colon ; B 102 0 278 548 ; C 59 ; WX 277 ; N semicolon ; B 2 -67 278 548 ; C 60 ; WX 606 ; N less ; B 87 -8 649 514 ; C 61 ; WX 606 ; N equal ; B 73 118 627 388 ; C 62 ; WX 606 ; N greater ; B 51 -8 613 514 ; C 63 ; WX 591 ; N question ; B 158 0 628 752 ; C 64 ; WX 867 ; N at ; B 126 -13 888 753 ; C 65 ; WX 740 ; N A ; B 12 0 729 740 ; C 66 ; WX 574 ; N B ; B 74 0 606 740 ; C 67 ; WX 813 ; N C ; B 105 -13 870 752 ; C 68 ; WX 744 ; N D ; B 74 0 773 740 ; C 69 ; WX 536 ; N E ; B 70 0 612 740 ; C 70 ; WX 485 ; N F ; B 70 0 581 740 ; C 71 ; WX 872 ; N G ; B 103 -13 891 753 ; C 72 ; WX 683 ; N H ; B 76 0 744 740 ; C 73 ; WX 226 ; N I ; B 76 0 287 740 ; C 74 ; WX 482 ; N J ; B 37 -13 539 740 ; C 75 ; WX 591 ; N K ; B 81 0 728 740 ; C 76 ; WX 462 ; N L ; B 82 0 474 740 ; C 77 ; WX 919 ; N M ; B 76 0 980 740 ; C 78 ; WX 740 ; N N ; B 75 0 801 740 ; C 79 ; WX 869 ; N O ; B 105 -13 901 753 ; C 80 ; WX 592 ; N P ; B 75 0 664 740 ; C 81 ; WX 871 ; N Q ; B 102 -13 912 753 ; C 82 ; WX 607 ; N R ; B 70 0 669 740 ; C 83 ; WX 498 ; N S ; B 57 -13 561 753 ; C 84 ; WX 426 ; N T ; B 131 0 556 740 ; C 85 ; WX 655 ; N U ; B 118 -13 716 740 ; C 86 ; WX 702 ; N V ; B 145 0 830 740 ; C 87 ; WX 960 ; N W ; B 148 0 1087 740 ; C 88 ; WX 609 ; N X ; B 8 0 724 740 ; C 89 ; WX 592 ; N Y ; B 138 0 729 740 ; C 90 ; WX 480 ; N Z ; B 12 0 596 740 ; C 91 ; WX 351 ; N bracketleft ; B 145 -179 477 753 ; C 92 ; WX 605 ; N backslash ; B 255 -100 458 740 ; C 93 ; WX 351 ; N bracketright ; B -19 -179 312 753 ; C 94 ; WX 606 ; N asciicircum ; B 110 307 610 740 ; C 95 ; WX 500 ; N underscore ; B -23 -125 486 -75 ; C 96 ; WX 351 ; N quoteleft ; B 232 546 358 740 ; C 97 ; WX 683 ; N a ; B 88 -13 722 561 ; C 98 ; WX 682 ; N b ; B 68 -13 703 740 ; C 99 ; WX 647 ; N c ; B 87 -13 678 561 ; C 100 ; WX 685 ; N d ; B 85 -13 755 740 ; C 101 ; WX 650 ; N e ; B 84 -13 664 561 ; C 102 ; WX 314 ; N f ; B 104 0 454 753 ; L i fi ; L l fl ; C 103 ; WX 673 ; N g ; B 56 -215 707 561 ; C 104 ; WX 610 ; N h ; B 62 0 606 740 ; C 105 ; WX 200 ; N i ; B 65 0 272 740 ; C 106 ; WX 203 ; N j ; B -80 -192 274 740 ; C 107 ; WX 502 ; N k ; B 70 0 588 740 ; C 108 ; WX 200 ; N l ; B 65 0 272 740 ; C 109 ; WX 938 ; N m ; B 66 0 938 561 ; C 110 ; WX 610 ; N n ; B 65 0 609 561 ; C 111 ; WX 655 ; N o ; B 88 -13 669 561 ; C 112 ; WX 682 ; N p ; B 28 -192 699 561 ; C 113 ; WX 682 ; N q ; B 83 -192 717 561 ; C 114 ; WX 301 ; N r ; B 65 0 395 561 ; C 115 ; WX 388 ; N s ; B 49 -13 424 561 ; C 116 ; WX 339 ; N t ; B 104 0 431 740 ; C 117 ; WX 608 ; N u ; B 100 -13 642 547 ; C 118 ; WX 554 ; N v ; B 108 0 647 547 ; C 119 ; WX 831 ; N w ; B 114 0 921 547 ; C 120 ; WX 480 ; N x ; B 12 0 569 547 ; C 121 ; WX 536 ; N y ; B 97 -192 624 547 ; C 122 ; WX 425 ; N z ; B 10 0 498 547 ; C 123 ; WX 351 ; N braceleft ; B 115 -189 468 740 ; C 124 ; WX 672 ; N bar ; B 258 -222 517 778 ; C 125 ; WX 351 ; N braceright ; B -15 -189 338 740 ; C 126 ; WX 606 ; N asciitilde ; B 114 179 584 319 ; C 160 ; WX 277 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 295 ; N exclamdown ; B 74 -192 286 548 ; C 162 ; WX 554 ; N cent ; B 115 62 596 707 ; C 163 ; WX 554 ; N sterling ; B 29 0 614 753 ; C 164 ; WX 166 ; N fraction ; B -113 0 417 740 ; C 165 ; WX 554 ; N yen ; B 75 0 687 740 ; C 166 ; WX 554 ; N florin ; B -39 -153 669 818 ; C 167 ; WX 615 ; N section ; B 118 -141 597 753 ; C 168 ; WX 554 ; N currency ; B 24 42 645 580 ; C 169 ; WX 198 ; N quotesingle ; B 153 444 277 740 ; C 170 ; WX 502 ; N quotedblleft ; B 234 546 507 740 ; C 171 ; WX 425 ; N guillemotleft ; B 92 81 469 481 ; C 172 ; WX 251 ; N guilsinglleft ; B 92 81 295 481 ; C 173 ; WX 251 ; N guilsinglright ; B 60 81 263 481 ; C 174 ; WX 487 ; N fi ; B 104 0 559 753 ; C 175 ; WX 485 ; N fl ; B 104 0 557 753 ; C 177 ; WX 500 ; N endash ; B 81 248 523 315 ; C 178 ; WX 553 ; N dagger ; B 146 -133 593 740 ; C 179 ; WX 553 ; N daggerdbl ; B 72 -133 593 740 ; C 180 ; WX 277 ; N periodcentered ; B 137 190 235 316 ; C 182 ; WX 564 ; N paragraph ; B 119 -110 688 740 ; C 183 ; WX 606 ; N bullet ; B 217 222 528 532 ; C 184 ; WX 354 ; N quotesinglbase ; B 76 -68 274 126 ; C 185 ; WX 502 ; N quotedblbase ; B 76 -68 422 126 ; C 186 ; WX 484 ; N quotedblright ; B 197 546 542 740 ; C 187 ; WX 425 ; N guillemotright ; B 60 81 437 481 ; C 188 ; WX 1000 ; N ellipsis ; B 130 0 893 126 ; C 189 ; WX 1174 ; N perthousand ; B 128 -13 1182 751 ; C 191 ; WX 591 ; N questiondown ; B 64 -205 534 548 ; C 193 ; WX 378 ; N grave ; B 204 619 425 786 ; C 194 ; WX 375 ; N acute ; B 203 619 444 786 ; C 195 ; WX 502 ; N circumflex ; B 192 639 546 764 ; C 196 ; WX 439 ; N tilde ; B 179 651 520 754 ; C 197 ; WX 485 ; N macron ; B 197 669 547 736 ; C 198 ; WX 453 ; N breve ; B 192 651 541 754 ; C 199 ; WX 222 ; N dotaccent ; B 192 639 290 765 ; C 200 ; WX 369 ; N dieresis ; B 191 639 437 765 ; C 202 ; WX 332 ; N ring ; B 191 600 401 807 ; C 203 ; WX 324 ; N cedilla ; B 52 -222 231 3 ; C 205 ; WX 552 ; N hungarumlaut ; B 230 605 623 786 ; C 206 ; WX 302 ; N ogonek ; B 53 -191 202 0 ; C 207 ; WX 502 ; N caron ; B 210 639 565 764 ; C 208 ; WX 1000 ; N emdash ; B 81 248 1023 315 ; C 225 ; WX 992 ; N AE ; B -20 0 1044 740 ; C 227 ; WX 369 ; N ordfeminine ; B 102 407 494 753 ; C 232 ; WX 517 ; N Lslash ; B 107 0 529 740 ; C 233 ; WX 868 ; N Oslash ; B 76 -83 929 819 ; C 234 ; WX 1194 ; N OE ; B 107 -13 1279 753 ; C 235 ; WX 369 ; N ordmasculine ; B 116 407 466 753 ; C 241 ; WX 1157 ; N ae ; B 80 -13 1169 561 ; C 245 ; WX 200 ; N dotlessi ; B 65 0 236 547 ; C 248 ; WX 300 ; N lslash ; B 95 0 354 740 ; C 249 ; WX 653 ; N oslash ; B 51 -64 703 614 ; C 250 ; WX 1137 ; N oe ; B 80 -13 1160 561 ; C 251 ; WX 554 ; N germandbls ; B 61 -13 578 753 ; C -1 ; WX 226 ; N Idieresis ; B 76 0 396 928 ; C -1 ; WX 650 ; N eacute ; B 84 -13 664 786 ; C -1 ; WX 683 ; N abreve ; B 88 -13 722 754 ; C -1 ; WX 608 ; N uhungarumlaut ; B 100 -13 671 786 ; C -1 ; WX 650 ; N ecaron ; B 84 -13 664 764 ; C -1 ; WX 592 ; N Ydieresis ; B 138 0 729 928 ; C -1 ; WX 606 ; N divide ; B 92 -13 608 519 ; C -1 ; WX 592 ; N Yacute ; B 138 0 729 949 ; C -1 ; WX 740 ; N Acircumflex ; B 12 0 729 927 ; C -1 ; WX 683 ; N aacute ; B 88 -13 722 786 ; C -1 ; WX 655 ; N Ucircumflex ; B 118 -13 716 927 ; C -1 ; WX 536 ; N yacute ; B 97 -192 624 786 ; C -1 ; WX 388 ; N scommaaccent ; B 49 -222 424 561 ; C -1 ; WX 650 ; N ecircumflex ; B 84 -13 664 764 ; C -1 ; WX 655 ; N Uring ; B 118 -13 716 955 ; C -1 ; WX 655 ; N Udieresis ; B 118 -13 716 928 ; C -1 ; WX 683 ; N aogonek ; B 88 -191 722 561 ; C -1 ; WX 655 ; N Uacute ; B 118 -13 716 949 ; C -1 ; WX 608 ; N uogonek ; B 100 -191 642 547 ; C -1 ; WX 536 ; N Edieresis ; B 70 0 612 928 ; C -1 ; WX 790 ; N Dcroat ; B 104 0 813 740 ; C -1 ; WX 250 ; N commaaccent ; B -18 -222 159 -54 ; C -1 ; WX 747 ; N copyright ; B 53 -12 830 752 ; C -1 ; WX 536 ; N Emacron ; B 70 0 612 899 ; C -1 ; WX 647 ; N ccaron ; B 87 -13 678 764 ; C -1 ; WX 683 ; N aring ; B 88 -13 722 807 ; C -1 ; WX 740 ; N Ncommaaccent ; B 75 -202 801 740 ; C -1 ; WX 200 ; N lacute ; B 65 0 416 949 ; C -1 ; WX 683 ; N agrave ; B 88 -13 722 786 ; C -1 ; WX 426 ; N Tcommaaccent ; B 70 -222 556 740 ; C -1 ; WX 813 ; N Cacute ; B 105 -13 870 949 ; C -1 ; WX 683 ; N atilde ; B 88 -13 722 754 ; C -1 ; WX 536 ; N Edotaccent ; B 70 0 612 928 ; C -1 ; WX 388 ; N scaron ; B 49 -13 508 764 ; C -1 ; WX 388 ; N scedilla ; B 49 -222 424 561 ; C -1 ; WX 200 ; N iacute ; B 65 0 396 786 ; C -1 ; WX 471 ; N lozenge ; B 82 0 524 719 ; C -1 ; WX 607 ; N Rcaron ; B 70 0 669 927 ; C -1 ; WX 872 ; N Gcommaaccent ; B 103 -222 891 753 ; C -1 ; WX 608 ; N ucircumflex ; B 100 -13 642 764 ; C -1 ; WX 683 ; N acircumflex ; B 88 -13 722 764 ; C -1 ; WX 740 ; N Amacron ; B 12 0 729 899 ; C -1 ; WX 301 ; N rcaron ; B 65 0 494 764 ; C -1 ; WX 647 ; N ccedilla ; B 87 -222 678 561 ; C -1 ; WX 480 ; N Zdotaccent ; B 12 0 596 928 ; C -1 ; WX 592 ; N Thorn ; B 60 0 621 740 ; C -1 ; WX 869 ; N Omacron ; B 105 -13 901 899 ; C -1 ; WX 607 ; N Racute ; B 70 0 669 949 ; C -1 ; WX 498 ; N Sacute ; B 57 -13 561 949 ; C -1 ; WX 755 ; N dcaron ; B 85 -13 929 740 ; C -1 ; WX 655 ; N Umacron ; B 118 -13 716 899 ; C -1 ; WX 608 ; N uring ; B 100 -13 642 807 ; C -1 ; WX 332 ; N threesuperior ; B 98 289 408 747 ; C -1 ; WX 869 ; N Ograve ; B 105 -13 901 949 ; C -1 ; WX 740 ; N Agrave ; B 12 0 729 949 ; C -1 ; WX 740 ; N Abreve ; B 12 0 729 917 ; C -1 ; WX 606 ; N multiply ; B 87 24 612 482 ; C -1 ; WX 608 ; N uacute ; B 100 -13 642 786 ; C -1 ; WX 426 ; N Tcaron ; B 131 0 557 927 ; C -1 ; WX 476 ; N partialdiff ; B 46 -38 529 704 ; C -1 ; WX 536 ; N ydieresis ; B 97 -192 624 765 ; C -1 ; WX 740 ; N Nacute ; B 75 0 801 949 ; C -1 ; WX 200 ; N icircumflex ; B 41 0 395 764 ; C -1 ; WX 536 ; N Ecircumflex ; B 70 0 612 927 ; C -1 ; WX 683 ; N adieresis ; B 88 -13 722 765 ; C -1 ; WX 650 ; N edieresis ; B 84 -13 664 765 ; C -1 ; WX 647 ; N cacute ; B 87 -13 678 786 ; C -1 ; WX 610 ; N nacute ; B 65 0 609 786 ; C -1 ; WX 608 ; N umacron ; B 100 -13 642 736 ; C -1 ; WX 740 ; N Ncaron ; B 75 0 801 927 ; C -1 ; WX 226 ; N Iacute ; B 76 0 439 949 ; C -1 ; WX 606 ; N plusminus ; B 47 -24 618 518 ; C -1 ; WX 672 ; N brokenbar ; B 272 -147 503 703 ; C -1 ; WX 747 ; N registered ; B 53 -12 830 752 ; C -1 ; WX 872 ; N Gbreve ; B 103 -13 891 917 ; C -1 ; WX 226 ; N Idotaccent ; B 76 0 322 928 ; C -1 ; WX 600 ; N summation ; B 15 -10 652 706 ; C -1 ; WX 536 ; N Egrave ; B 70 0 612 949 ; C -1 ; WX 301 ; N racute ; B 65 0 467 786 ; C -1 ; WX 655 ; N omacron ; B 88 -13 669 736 ; C -1 ; WX 480 ; N Zacute ; B 12 0 596 949 ; C -1 ; WX 480 ; N Zcaron ; B 12 0 596 927 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 604 658 ; C -1 ; WX 790 ; N Eth ; B 104 0 813 740 ; C -1 ; WX 813 ; N Ccedilla ; B 105 -222 870 752 ; C -1 ; WX 200 ; N lcommaaccent ; B -43 -222 272 740 ; C -1 ; WX 359 ; N tcaron ; B 104 0 539 780 ; C -1 ; WX 650 ; N eogonek ; B 84 -191 664 561 ; C -1 ; WX 655 ; N Uogonek ; B 118 -191 716 740 ; C -1 ; WX 740 ; N Aacute ; B 12 0 729 949 ; C -1 ; WX 740 ; N Adieresis ; B 12 0 729 928 ; C -1 ; WX 650 ; N egrave ; B 84 -13 664 786 ; C -1 ; WX 425 ; N zacute ; B 10 0 498 786 ; C -1 ; WX 200 ; N iogonek ; B -8 -191 272 740 ; C -1 ; WX 869 ; N Oacute ; B 105 -13 901 949 ; C -1 ; WX 655 ; N oacute ; B 88 -13 669 786 ; C -1 ; WX 683 ; N amacron ; B 88 -13 722 736 ; C -1 ; WX 388 ; N sacute ; B 49 -13 451 786 ; C -1 ; WX 200 ; N idieresis ; B 65 0 353 765 ; C -1 ; WX 869 ; N Ocircumflex ; B 105 -13 901 927 ; C -1 ; WX 655 ; N Ugrave ; B 118 -13 716 949 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 682 ; N thorn ; B 28 -192 699 740 ; C -1 ; WX 332 ; N twosuperior ; B 74 296 433 747 ; C -1 ; WX 869 ; N Odieresis ; B 105 -13 901 928 ; C -1 ; WX 608 ; N mu ; B 46 -184 628 547 ; C -1 ; WX 200 ; N igrave ; B 65 0 296 786 ; C -1 ; WX 655 ; N ohungarumlaut ; B 88 -13 715 786 ; C -1 ; WX 536 ; N Eogonek ; B 70 -191 612 740 ; C -1 ; WX 685 ; N dcroat ; B 85 -13 801 740 ; C -1 ; WX 831 ; N threequarters ; B 126 0 825 747 ; C -1 ; WX 498 ; N Scedilla ; B 57 -222 561 753 ; C -1 ; WX 260 ; N lcaron ; B 65 0 446 740 ; C -1 ; WX 591 ; N Kcommaaccent ; B 81 -202 728 740 ; C -1 ; WX 462 ; N Lacute ; B 82 0 518 949 ; C -1 ; WX 1000 ; N trademark ; B 137 296 953 740 ; C -1 ; WX 650 ; N edotaccent ; B 84 -13 664 765 ; C -1 ; WX 226 ; N Igrave ; B 76 0 340 949 ; C -1 ; WX 226 ; N Imacron ; B 76 0 423 899 ; C -1 ; WX 462 ; N Lcaron ; B 82 0 592 740 ; C -1 ; WX 831 ; N onehalf ; B 164 0 810 740 ; C -1 ; WX 549 ; N lessequal ; B 26 0 645 658 ; C -1 ; WX 655 ; N ocircumflex ; B 88 -13 669 764 ; C -1 ; WX 610 ; N ntilde ; B 65 0 609 754 ; C -1 ; WX 655 ; N Uhungarumlaut ; B 118 -13 725 949 ; C -1 ; WX 536 ; N Eacute ; B 70 0 612 949 ; C -1 ; WX 650 ; N emacron ; B 84 -13 664 736 ; C -1 ; WX 673 ; N gbreve ; B 56 -215 707 754 ; C -1 ; WX 831 ; N onequarter ; B 183 0 770 740 ; C -1 ; WX 498 ; N Scaron ; B 57 -13 593 927 ; C -1 ; WX 498 ; N Scommaaccent ; B 57 -222 561 753 ; C -1 ; WX 869 ; N Ohungarumlaut ; B 105 -13 901 949 ; C -1 ; WX 400 ; N degree ; B 158 421 451 709 ; C -1 ; WX 655 ; N ograve ; B 88 -13 669 786 ; C -1 ; WX 813 ; N Ccaron ; B 105 -13 870 927 ; C -1 ; WX 608 ; N ugrave ; B 100 -13 642 786 ; C -1 ; WX 453 ; N radical ; B 78 -58 585 756 ; C -1 ; WX 744 ; N Dcaron ; B 74 0 773 927 ; C -1 ; WX 301 ; N rcommaaccent ; B -33 -222 395 561 ; C -1 ; WX 740 ; N Ntilde ; B 75 0 801 917 ; C -1 ; WX 655 ; N otilde ; B 88 -13 669 754 ; C -1 ; WX 607 ; N Rcommaaccent ; B 70 -202 669 740 ; C -1 ; WX 462 ; N Lcommaaccent ; B 82 -222 474 740 ; C -1 ; WX 740 ; N Atilde ; B 12 0 729 917 ; C -1 ; WX 740 ; N Aogonek ; B 12 -191 729 740 ; C -1 ; WX 740 ; N Aring ; B 12 0 729 955 ; C -1 ; WX 869 ; N Otilde ; B 105 -13 901 917 ; C -1 ; WX 425 ; N zdotaccent ; B 10 0 498 765 ; C -1 ; WX 536 ; N Ecaron ; B 70 0 612 927 ; C -1 ; WX 226 ; N Iogonek ; B 1 -191 287 740 ; C -1 ; WX 502 ; N kcommaaccent ; B 70 -202 588 740 ; C -1 ; WX 606 ; N minus ; B 92 219 608 287 ; C -1 ; WX 226 ; N Icircumflex ; B 76 0 439 927 ; C -1 ; WX 610 ; N ncaron ; B 65 0 619 764 ; C -1 ; WX 339 ; N tcommaaccent ; B 27 -222 431 740 ; C -1 ; WX 606 ; N logicalnot ; B 110 109 627 388 ; C -1 ; WX 655 ; N odieresis ; B 88 -13 669 765 ; C -1 ; WX 608 ; N udieresis ; B 100 -13 642 765 ; C -1 ; WX 549 ; N notequal ; B 33 -29 610 541 ; C -1 ; WX 673 ; N gcommaaccent ; B 56 -215 707 786 ; C -1 ; WX 655 ; N eth ; B 88 -12 675 753 ; C -1 ; WX 425 ; N zcaron ; B 10 0 527 764 ; C -1 ; WX 610 ; N ncommaaccent ; B 65 -202 609 561 ; C -1 ; WX 332 ; N onesuperior ; B 190 296 335 740 ; C -1 ; WX 200 ; N imacron ; B 65 0 379 736 ; C -1 ; WX 554 ; N Euro ; B -32 -13 638 752 ; C -1 ; WX 813 ; N Ccircumflex ; B 106 -13 869 965 ; C -1 ; WX 647 ; N ccircumflex ; B 88 -13 679 773 ; C -1 ; WX 813 ; N Cdotaccent ; B 106 -13 869 965 ; C -1 ; WX 647 ; N cdotaccent ; B 88 -13 679 773 ; C -1 ; WX 536 ; N Ebreve ; B 76 0 617 956 ; C -1 ; WX 650 ; N ebreve ; B 88 -13 665 764 ; C -1 ; WX 872 ; N Gcircumflex ; B 107 -13 894 965 ; C -1 ; WX 673 ; N gcircumflex ; B 60 -215 711 773 ; C -1 ; WX 872 ; N Gdotaccent ; B 107 -13 894 965 ; C -1 ; WX 673 ; N gdotaccent ; B 60 -215 711 773 ; C -1 ; WX 683 ; N Hcircumflex ; B 76 0 744 965 ; C -1 ; WX 610 ; N hcircumflex ; B 63 0 637 965 ; C -1 ; WX 683 ; N Hbar ; B 76 0 778 739 ; C -1 ; WX 610 ; N hbar ; B 63 0 609 739 ; C -1 ; WX 226 ; N Itilde ; B 76 0 421 940 ; C -1 ; WX 200 ; N itilde ; B 63 0 373 748 ; C -1 ; WX 226 ; N Ibreve ; B 76 0 442 956 ; C -1 ; WX 200 ; N ibreve ; B 63 0 394 764 ; C -1 ; WX 686 ; N IJ ; B 76 -14 743 739 ; C -1 ; WX 370 ; N ij ; B 63 -192 441 739 ; C -1 ; WX 482 ; N Jcircumflex ; B 41 -14 692 965 ; C -1 ; WX 203 ; N jcircumflex ; B -81 -192 392 749 ; C -1 ; WX 471 ; N kgreenlandic ; B 63 0 551 547 ; C -1 ; WX 462 ; N Ldot ; B 76 0 468 739 ; C -1 ; WX 392 ; N ldot ; B 63 0 350 739 ; C -1 ; WX 610 ; N napostrophe ; B 63 0 609 739 ; C -1 ; WX 740 ; N Eng ; B 76 -184 801 739 ; C -1 ; WX 610 ; N eng ; B 63 -184 609 560 ; C -1 ; WX 869 ; N Obreve ; B 106 -13 900 956 ; C -1 ; WX 655 ; N obreve ; B 87 -13 669 764 ; C -1 ; WX 498 ; N Scircumflex ; B 56 -13 579 965 ; C -1 ; WX 388 ; N scircumflex ; B 43 -13 484 773 ; C -1 ; WX 426 ; N Tbar ; B 120 0 556 739 ; C -1 ; WX 339 ; N tbar ; B 74 0 428 739 ; C -1 ; WX 426 ; N Tcedilla ; B 70 -222 556 740 ; C -1 ; WX 339 ; N tcedilla ; B 27 -222 431 740 ; C -1 ; WX 655 ; N Utilde ; B 119 -13 716 940 ; C -1 ; WX 608 ; N utilde ; B 99 -13 646 748 ; C -1 ; WX 655 ; N Ubreve ; B 119 -13 716 956 ; C -1 ; WX 608 ; N ubreve ; B 99 -13 646 764 ; C -1 ; WX 960 ; N Wcircumflex ; B 147 0 1087 965 ; C -1 ; WX 831 ; N wcircumflex ; B 108 0 925 773 ; C -1 ; WX 592 ; N Ycircumflex ; B 139 0 727 965 ; C -1 ; WX 536 ; N ycircumflex ; B 97 -192 628 773 ; C -1 ; WX 314 ; N longs ; B 101 0 447 739 ; C -1 ; WX 768 ; N infinity ; B 38 130 725 520 ; EndCharMetrics StartKernData StartKernPairs 922 KPX A T -81 KPX A Tcaron -81 KPX A Tcommaaccent -81 KPX A V -122 KPX A W -95 KPX A Y -122 KPX A Yacute -122 KPX A Ydieresis -122 KPX A v -73 KPX A w -65 KPX A y -72 KPX A yacute -72 KPX A ydieresis -72 KPX Aacute T -81 KPX Aacute Tcaron -81 KPX Aacute Tcommaaccent -81 KPX Aacute V -122 KPX Aacute W -95 KPX Aacute Y -122 KPX Aacute Yacute -122 KPX Aacute Ydieresis -122 KPX Aacute v -73 KPX Aacute w -65 KPX Aacute y -72 KPX Aacute yacute -72 KPX Aacute ydieresis -72 KPX Abreve T -81 KPX Abreve Tcaron -81 KPX Abreve Tcommaaccent -81 KPX Abreve V -122 KPX Abreve W -95 KPX Abreve Y -122 KPX Abreve Yacute -122 KPX Abreve Ydieresis -122 KPX Abreve v -73 KPX Abreve w -65 KPX Abreve y -72 KPX Abreve yacute -72 KPX Abreve ydieresis -72 KPX Acircumflex T -81 KPX Acircumflex Tcaron -81 KPX Acircumflex Tcommaaccent -81 KPX Acircumflex V -122 KPX Acircumflex W -95 KPX Acircumflex Y -122 KPX Acircumflex Yacute -122 KPX Acircumflex Ydieresis -122 KPX Acircumflex v -73 KPX Acircumflex w -65 KPX Acircumflex y -72 KPX Acircumflex yacute -72 KPX Acircumflex ydieresis -72 KPX Adieresis T -81 KPX Adieresis Tcaron -81 KPX Adieresis Tcommaaccent -81 KPX Adieresis V -122 KPX Adieresis W -95 KPX Adieresis Y -122 KPX Adieresis Yacute -122 KPX Adieresis Ydieresis -122 KPX Adieresis v -73 KPX Adieresis w -65 KPX Adieresis y -72 KPX Adieresis yacute -72 KPX Adieresis ydieresis -72 KPX Agrave T -81 KPX Agrave Tcaron -81 KPX Agrave Tcommaaccent -81 KPX Agrave V -122 KPX Agrave W -95 KPX Agrave Y -122 KPX Agrave Yacute -122 KPX Agrave Ydieresis -122 KPX Agrave v -73 KPX Agrave w -65 KPX Agrave y -72 KPX Agrave yacute -72 KPX Agrave ydieresis -72 KPX Amacron T -81 KPX Amacron Tcaron -81 KPX Amacron Tcommaaccent -81 KPX Amacron V -122 KPX Amacron W -95 KPX Amacron Y -122 KPX Amacron Yacute -122 KPX Amacron Ydieresis -122 KPX Amacron v -73 KPX Amacron w -65 KPX Amacron y -72 KPX Amacron yacute -72 KPX Amacron ydieresis -72 KPX Aogonek T -81 KPX Aogonek Tcaron -81 KPX Aogonek Tcommaaccent -81 KPX Aogonek V -122 KPX Aogonek W -95 KPX Aogonek Y -122 KPX Aogonek Yacute -122 KPX Aogonek Ydieresis -122 KPX Aogonek v -73 KPX Aogonek w -65 KPX Aogonek y -72 KPX Aogonek yacute -72 KPX Aogonek ydieresis -72 KPX Aring T -81 KPX Aring Tcaron -81 KPX Aring Tcommaaccent -81 KPX Aring V -122 KPX Aring W -95 KPX Aring Y -122 KPX Aring Yacute -122 KPX Aring Ydieresis -122 KPX Aring v -73 KPX Aring w -65 KPX Aring y -72 KPX Aring yacute -72 KPX Aring ydieresis -72 KPX Atilde T -81 KPX Atilde Tcaron -81 KPX Atilde Tcommaaccent -81 KPX Atilde V -122 KPX Atilde W -95 KPX Atilde Y -122 KPX Atilde Yacute -122 KPX Atilde Ydieresis -122 KPX Atilde v -73 KPX Atilde w -65 KPX Atilde y -72 KPX Atilde yacute -72 KPX Atilde ydieresis -72 KPX F A -60 KPX F Aacute -60 KPX F Abreve -60 KPX F Acircumflex -60 KPX F Adieresis -60 KPX F Agrave -60 KPX F Amacron -60 KPX F Aogonek -60 KPX F Aring -60 KPX F Atilde -60 KPX F comma -122 KPX F period -79 KPX L T -46 KPX L Tcaron -46 KPX L Tcommaaccent -46 KPX L V -113 KPX L W -67 KPX L Y -91 KPX L Yacute -91 KPX L Ydieresis -91 KPX L y -23 KPX L yacute -23 KPX L ydieresis -23 KPX Lacute T -46 KPX Lacute Tcaron -46 KPX Lacute Tcommaaccent -46 KPX Lacute V -113 KPX Lacute W -67 KPX Lacute Y -91 KPX Lacute Yacute -91 KPX Lacute Ydieresis -91 KPX Lacute y -23 KPX Lacute yacute -23 KPX Lacute ydieresis -23 KPX Lcaron y -23 KPX Lcaron yacute -23 KPX Lcaron ydieresis -23 KPX Lcommaaccent T -46 KPX Lcommaaccent Tcaron -46 KPX Lcommaaccent Tcommaaccent -46 KPX Lcommaaccent V -113 KPX Lcommaaccent W -67 KPX Lcommaaccent Y -91 KPX Lcommaaccent Yacute -91 KPX Lcommaaccent Ydieresis -91 KPX Lcommaaccent y -23 KPX Lcommaaccent yacute -23 KPX Lcommaaccent ydieresis -23 KPX Lslash T -46 KPX Lslash Tcaron -46 KPX Lslash Tcommaaccent -46 KPX Lslash V -113 KPX Lslash W -67 KPX Lslash Y -91 KPX Lslash Yacute -91 KPX Lslash Ydieresis -91 KPX Lslash y -23 KPX Lslash yacute -23 KPX Lslash ydieresis -23 KPX P A -74 KPX P Aacute -74 KPX P Abreve -74 KPX P Acircumflex -74 KPX P Adieresis -74 KPX P Agrave -74 KPX P Amacron -74 KPX P Aogonek -74 KPX P Aring -74 KPX P Atilde -74 KPX P comma -123 KPX P period -91 KPX R T 6 KPX R Tcaron 6 KPX R Tcommaaccent 6 KPX R V -39 KPX R W 2 KPX R Y -20 KPX R Yacute -20 KPX R Ydieresis -20 KPX R y 32 KPX R yacute 32 KPX R ydieresis 32 KPX Racute T 6 KPX Racute Tcaron 6 KPX Racute Tcommaaccent 6 KPX Racute V -39 KPX Racute W 2 KPX Racute Y -20 KPX Racute Yacute -20 KPX Racute Ydieresis -20 KPX Racute y 32 KPX Racute yacute 32 KPX Racute ydieresis 32 KPX Rcaron T 6 KPX Rcaron Tcaron 6 KPX Rcaron Tcommaaccent 6 KPX Rcaron V -39 KPX Rcaron W 2 KPX Rcaron Y -20 KPX Rcaron Yacute -20 KPX Rcaron Ydieresis -20 KPX Rcaron y 32 KPX Rcaron yacute 32 KPX Rcaron ydieresis 32 KPX Rcommaaccent T 6 KPX Rcommaaccent Tcaron 6 KPX Rcommaaccent Tcommaaccent 6 KPX Rcommaaccent V -39 KPX Rcommaaccent W 2 KPX Rcommaaccent Y -20 KPX Rcommaaccent Yacute -20 KPX Rcommaaccent Ydieresis -20 KPX Rcommaaccent y 32 KPX Rcommaaccent yacute 32 KPX Rcommaaccent ydieresis 32 KPX T A -81 KPX T Aacute -81 KPX T Abreve -81 KPX T Acircumflex -81 KPX T Adieresis -81 KPX T Agrave -81 KPX T Amacron -81 KPX T Aogonek -81 KPX T Aring -81 KPX T Atilde -81 KPX T a -52 KPX T aacute -52 KPX T abreve -52 KPX T acircumflex -52 KPX T adieresis -52 KPX T agrave -52 KPX T amacron -52 KPX T aogonek -52 KPX T aring -52 KPX T atilde -52 KPX T c -51 KPX T cacute -51 KPX T ccaron -51 KPX T ccedilla -51 KPX T colon 3 KPX T comma -102 KPX T e -49 KPX T eacute -49 KPX T ecaron -49 KPX T ecircumflex -49 KPX T edieresis -49 KPX T edotaccent -49 KPX T egrave -49 KPX T emacron -49 KPX T eogonek -49 KPX T i 31 KPX T iacute 31 KPX T icircumflex 31 KPX T idieresis 31 KPX T igrave 31 KPX T imacron 31 KPX T iogonek 31 KPX T o -49 KPX T oacute -49 KPX T ocircumflex -49 KPX T odieresis -49 KPX T ograve -49 KPX T ohungarumlaut -49 KPX T omacron -49 KPX T oslash -49 KPX T otilde -49 KPX T period -71 KPX T r -30 KPX T racute -30 KPX T rcaron -30 KPX T rcommaaccent -30 KPX T s -23 KPX T sacute -23 KPX T scedilla -23 KPX T scommaaccent -23 KPX T semicolon -29 KPX T u -46 KPX T uacute -46 KPX T ucircumflex -46 KPX T udieresis -46 KPX T ugrave -46 KPX T uhungarumlaut -46 KPX T umacron -46 KPX T uogonek -46 KPX T uring -46 KPX T w 7 KPX T y 5 KPX T yacute 5 KPX T ydieresis 5 KPX Tcaron A -81 KPX Tcaron Aacute -81 KPX Tcaron Abreve -81 KPX Tcaron Acircumflex -81 KPX Tcaron Adieresis -81 KPX Tcaron Agrave -81 KPX Tcaron Amacron -81 KPX Tcaron Aogonek -81 KPX Tcaron Aring -81 KPX Tcaron Atilde -81 KPX Tcaron a -52 KPX Tcaron aacute -52 KPX Tcaron abreve -52 KPX Tcaron acircumflex -52 KPX Tcaron adieresis -52 KPX Tcaron agrave -52 KPX Tcaron amacron -52 KPX Tcaron aogonek -52 KPX Tcaron aring -52 KPX Tcaron atilde -52 KPX Tcaron c -51 KPX Tcaron cacute -51 KPX Tcaron ccaron -51 KPX Tcaron ccedilla -51 KPX Tcaron colon 3 KPX Tcaron comma -102 KPX Tcaron e -49 KPX Tcaron eacute -49 KPX Tcaron ecaron -49 KPX Tcaron ecircumflex -49 KPX Tcaron edieresis -49 KPX Tcaron edotaccent -49 KPX Tcaron egrave -49 KPX Tcaron emacron -49 KPX Tcaron eogonek -49 KPX Tcaron i 31 KPX Tcaron iacute 31 KPX Tcaron iogonek 31 KPX Tcaron o -49 KPX Tcaron oacute -49 KPX Tcaron ocircumflex -49 KPX Tcaron odieresis -49 KPX Tcaron ograve -49 KPX Tcaron ohungarumlaut -49 KPX Tcaron omacron -49 KPX Tcaron oslash -49 KPX Tcaron otilde -49 KPX Tcaron period -71 KPX Tcaron r -30 KPX Tcaron racute -30 KPX Tcaron rcaron -30 KPX Tcaron rcommaaccent -30 KPX Tcaron s -23 KPX Tcaron sacute -23 KPX Tcaron scaron -23 KPX Tcaron scedilla -23 KPX Tcaron scommaaccent -23 KPX Tcaron semicolon -29 KPX Tcaron u -46 KPX Tcaron uacute -46 KPX Tcaron ucircumflex -46 KPX Tcaron udieresis -46 KPX Tcaron ugrave -46 KPX Tcaron uhungarumlaut -46 KPX Tcaron umacron -46 KPX Tcaron uogonek -46 KPX Tcaron uring -46 KPX Tcaron w 7 KPX Tcaron y 5 KPX Tcaron yacute 5 KPX Tcaron ydieresis 5 KPX Tcommaaccent A -81 KPX Tcommaaccent Aacute -81 KPX Tcommaaccent Abreve -81 KPX Tcommaaccent Acircumflex -81 KPX Tcommaaccent Adieresis -81 KPX Tcommaaccent Agrave -81 KPX Tcommaaccent Amacron -81 KPX Tcommaaccent Aogonek -81 KPX Tcommaaccent Aring -81 KPX Tcommaaccent Atilde -81 KPX Tcommaaccent a -52 KPX Tcommaaccent aacute -52 KPX Tcommaaccent abreve -52 KPX Tcommaaccent acircumflex -52 KPX Tcommaaccent adieresis -52 KPX Tcommaaccent agrave -52 KPX Tcommaaccent amacron -52 KPX Tcommaaccent aogonek -52 KPX Tcommaaccent aring -52 KPX Tcommaaccent atilde -52 KPX Tcommaaccent c -51 KPX Tcommaaccent cacute -51 KPX Tcommaaccent ccaron -51 KPX Tcommaaccent ccedilla -51 KPX Tcommaaccent colon 3 KPX Tcommaaccent comma -102 KPX Tcommaaccent e -49 KPX Tcommaaccent eacute -49 KPX Tcommaaccent ecaron -49 KPX Tcommaaccent ecircumflex -49 KPX Tcommaaccent edieresis -49 KPX Tcommaaccent edotaccent -49 KPX Tcommaaccent egrave -49 KPX Tcommaaccent emacron -49 KPX Tcommaaccent eogonek -49 KPX Tcommaaccent i 31 KPX Tcommaaccent iacute 31 KPX Tcommaaccent iogonek 31 KPX Tcommaaccent o -49 KPX Tcommaaccent oacute -49 KPX Tcommaaccent ocircumflex -49 KPX Tcommaaccent odieresis -49 KPX Tcommaaccent ograve -49 KPX Tcommaaccent ohungarumlaut -49 KPX Tcommaaccent omacron -49 KPX Tcommaaccent oslash -49 KPX Tcommaaccent otilde -49 KPX Tcommaaccent period -71 KPX Tcommaaccent r -30 KPX Tcommaaccent racute -30 KPX Tcommaaccent rcaron -30 KPX Tcommaaccent rcommaaccent -30 KPX Tcommaaccent s -23 KPX Tcommaaccent sacute -23 KPX Tcommaaccent scedilla -23 KPX Tcommaaccent scommaaccent -23 KPX Tcommaaccent semicolon -29 KPX Tcommaaccent u -46 KPX Tcommaaccent uacute -46 KPX Tcommaaccent ucircumflex -46 KPX Tcommaaccent udieresis -46 KPX Tcommaaccent ugrave -46 KPX Tcommaaccent uhungarumlaut -46 KPX Tcommaaccent umacron -46 KPX Tcommaaccent uogonek -46 KPX Tcommaaccent uring -46 KPX Tcommaaccent w 7 KPX Tcommaaccent y 5 KPX Tcommaaccent yacute 5 KPX Tcommaaccent ydieresis 5 KPX V A -122 KPX V Aacute -122 KPX V Abreve -122 KPX V Acircumflex -122 KPX V Adieresis -122 KPX V Agrave -122 KPX V Amacron -122 KPX V Aogonek -122 KPX V Aring -122 KPX V Atilde -122 KPX V a -104 KPX V aacute -104 KPX V abreve -104 KPX V acircumflex -104 KPX V adieresis -104 KPX V agrave -104 KPX V amacron -104 KPX V aogonek -104 KPX V aring -104 KPX V atilde -104 KPX V colon -1 KPX V comma -106 KPX V e -101 KPX V eacute -101 KPX V ecaron -101 KPX V ecircumflex -101 KPX V edieresis -101 KPX V edotaccent -101 KPX V egrave -101 KPX V emacron -101 KPX V eogonek -101 KPX V i 5 KPX V iacute 5 KPX V iogonek 5 KPX V o -101 KPX V oacute -101 KPX V ocircumflex -101 KPX V odieresis -101 KPX V ograve -101 KPX V ohungarumlaut -101 KPX V omacron -101 KPX V oslash -101 KPX V otilde -101 KPX V period -75 KPX V r -40 KPX V racute -40 KPX V rcaron -40 KPX V rcommaaccent -40 KPX V semicolon -33 KPX V u -40 KPX V uacute -40 KPX V ucircumflex -40 KPX V udieresis -40 KPX V ugrave -40 KPX V uhungarumlaut -40 KPX V umacron -40 KPX V uogonek -40 KPX V uring -40 KPX V y -25 KPX V yacute -25 KPX V ydieresis -25 KPX W A -73 KPX W Aacute -73 KPX W Abreve -73 KPX W Acircumflex -73 KPX W Adieresis -73 KPX W Agrave -73 KPX W Amacron -73 KPX W Aogonek -73 KPX W Aring -73 KPX W Atilde -73 KPX W a -50 KPX W aacute -50 KPX W abreve -50 KPX W acircumflex -50 KPX W adieresis -50 KPX W agrave -50 KPX W amacron -50 KPX W aogonek -50 KPX W aring -50 KPX W atilde -50 KPX W colon -1 KPX W comma -106 KPX W e -47 KPX W eacute -47 KPX W ecaron -47 KPX W ecircumflex -47 KPX W edieresis -47 KPX W edotaccent -47 KPX W egrave -47 KPX W emacron -47 KPX W eogonek -47 KPX W i 6 KPX W iacute 6 KPX W icircumflex 16 KPX W idieresis 16 KPX W igrave 16 KPX W imacron 16 KPX W iogonek 6 KPX W o -46 KPX W oacute -46 KPX W ocircumflex -46 KPX W odieresis -46 KPX W ograve -46 KPX W ohungarumlaut -46 KPX W omacron -46 KPX W oslash -46 KPX W otilde -46 KPX W period -74 KPX W r -29 KPX W racute -29 KPX W rcaron -29 KPX W rcommaaccent -29 KPX W semicolon -33 KPX W u -30 KPX W uacute -30 KPX W ucircumflex -30 KPX W udieresis -30 KPX W ugrave -30 KPX W uhungarumlaut -30 KPX W umacron -30 KPX W uogonek -30 KPX W uring -30 KPX W y -2 KPX W yacute -2 KPX W ydieresis -2 KPX Y A -122 KPX Y Aacute -122 KPX Y Abreve -122 KPX Y Acircumflex -122 KPX Y Adieresis -122 KPX Y Agrave -122 KPX Y Amacron -122 KPX Y Aogonek -122 KPX Y Aring -122 KPX Y Atilde -122 KPX Y a -93 KPX Y aacute -93 KPX Y abreve -93 KPX Y acircumflex -93 KPX Y adieresis -93 KPX Y agrave -93 KPX Y amacron -93 KPX Y aogonek -93 KPX Y aring -93 KPX Y atilde -93 KPX Y colon 9 KPX Y comma -97 KPX Y e -89 KPX Y eacute -89 KPX Y ecaron -89 KPX Y ecircumflex -89 KPX Y edieresis -89 KPX Y edotaccent -89 KPX Y egrave -89 KPX Y emacron -89 KPX Y eogonek -89 KPX Y i 13 KPX Y iacute 13 KPX Y icircumflex 23 KPX Y idieresis 23 KPX Y igrave 23 KPX Y imacron 23 KPX Y iogonek 13 KPX Y o -89 KPX Y oacute -89 KPX Y ocircumflex -89 KPX Y odieresis -89 KPX Y ograve -89 KPX Y ohungarumlaut -89 KPX Y omacron -89 KPX Y oslash -89 KPX Y otilde -89 KPX Y p -67 KPX Y period -65 KPX Y q -93 KPX Y semicolon -23 KPX Y u -69 KPX Y uacute -69 KPX Y ucircumflex -69 KPX Y udieresis -69 KPX Y ugrave -69 KPX Y uhungarumlaut -69 KPX Y umacron -69 KPX Y uogonek -69 KPX Y uring -69 KPX Y v -17 KPX Yacute A -122 KPX Yacute Aacute -122 KPX Yacute Abreve -122 KPX Yacute Acircumflex -122 KPX Yacute Adieresis -122 KPX Yacute Agrave -122 KPX Yacute Amacron -122 KPX Yacute Aogonek -122 KPX Yacute Aring -122 KPX Yacute Atilde -122 KPX Yacute a -93 KPX Yacute aacute -93 KPX Yacute abreve -93 KPX Yacute acircumflex -93 KPX Yacute adieresis -93 KPX Yacute agrave -93 KPX Yacute amacron -93 KPX Yacute aogonek -93 KPX Yacute aring -93 KPX Yacute atilde -93 KPX Yacute colon 9 KPX Yacute comma -97 KPX Yacute e -89 KPX Yacute eacute -89 KPX Yacute ecaron -89 KPX Yacute ecircumflex -89 KPX Yacute edieresis -89 KPX Yacute edotaccent -89 KPX Yacute egrave -89 KPX Yacute emacron -89 KPX Yacute eogonek -89 KPX Yacute i 13 KPX Yacute iacute 13 KPX Yacute icircumflex 23 KPX Yacute idieresis 23 KPX Yacute igrave 23 KPX Yacute imacron 23 KPX Yacute iogonek 13 KPX Yacute o -89 KPX Yacute oacute -89 KPX Yacute ocircumflex -89 KPX Yacute odieresis -89 KPX Yacute ograve -89 KPX Yacute ohungarumlaut -89 KPX Yacute omacron -89 KPX Yacute oslash -89 KPX Yacute otilde -89 KPX Yacute p -67 KPX Yacute period -65 KPX Yacute q -93 KPX Yacute semicolon -23 KPX Yacute u -69 KPX Yacute uacute -69 KPX Yacute ucircumflex -69 KPX Yacute udieresis -69 KPX Yacute ugrave -69 KPX Yacute uhungarumlaut -69 KPX Yacute umacron -69 KPX Yacute uogonek -69 KPX Yacute uring -69 KPX Yacute v -17 KPX Ydieresis A -122 KPX Ydieresis Aacute -122 KPX Ydieresis Abreve -122 KPX Ydieresis Acircumflex -122 KPX Ydieresis Adieresis -122 KPX Ydieresis Agrave -122 KPX Ydieresis Amacron -122 KPX Ydieresis Aogonek -122 KPX Ydieresis Aring -122 KPX Ydieresis Atilde -122 KPX Ydieresis a -93 KPX Ydieresis aacute -93 KPX Ydieresis abreve -93 KPX Ydieresis acircumflex -93 KPX Ydieresis adieresis -93 KPX Ydieresis agrave -93 KPX Ydieresis amacron -93 KPX Ydieresis aogonek -93 KPX Ydieresis aring -93 KPX Ydieresis atilde -93 KPX Ydieresis colon 9 KPX Ydieresis comma -97 KPX Ydieresis e -89 KPX Ydieresis eacute -89 KPX Ydieresis ecaron -89 KPX Ydieresis ecircumflex -89 KPX Ydieresis edieresis -89 KPX Ydieresis edotaccent -89 KPX Ydieresis egrave -89 KPX Ydieresis emacron -89 KPX Ydieresis eogonek -89 KPX Ydieresis i 13 KPX Ydieresis iacute 13 KPX Ydieresis icircumflex 23 KPX Ydieresis idieresis 23 KPX Ydieresis igrave 23 KPX Ydieresis imacron 23 KPX Ydieresis iogonek 13 KPX Ydieresis o -89 KPX Ydieresis oacute -89 KPX Ydieresis ocircumflex -89 KPX Ydieresis odieresis -89 KPX Ydieresis ograve -89 KPX Ydieresis ohungarumlaut -89 KPX Ydieresis omacron -89 KPX Ydieresis oslash -89 KPX Ydieresis otilde -89 KPX Ydieresis p -67 KPX Ydieresis period -65 KPX Ydieresis q -93 KPX Ydieresis semicolon -23 KPX Ydieresis u -69 KPX Ydieresis uacute -69 KPX Ydieresis ucircumflex -69 KPX Ydieresis udieresis -69 KPX Ydieresis ugrave -69 KPX Ydieresis uhungarumlaut -69 KPX Ydieresis umacron -69 KPX Ydieresis uogonek -69 KPX Ydieresis uring -69 KPX Ydieresis v -17 KPX f f 3 KPX r c -7 KPX r cacute -7 KPX r ccaron -7 KPX r ccedilla -7 KPX r comma -105 KPX r d -6 KPX r dcroat -6 KPX r e -4 KPX r eacute -4 KPX r ecaron -4 KPX r ecircumflex -4 KPX r edieresis -4 KPX r edotaccent -4 KPX r egrave -4 KPX r emacron -4 KPX r eogonek -4 KPX r f 48 KPX r g 1 KPX r gbreve 1 KPX r gcommaaccent 1 KPX r h 29 KPX r m 28 KPX r n 21 KPX r nacute 21 KPX r ncaron 21 KPX r ncommaaccent 21 KPX r ntilde 21 KPX r o -4 KPX r oacute -4 KPX r ocircumflex -4 KPX r odieresis -4 KPX r ograve -4 KPX r ohungarumlaut -4 KPX r omacron -4 KPX r oslash -4 KPX r otilde -4 KPX r period -73 KPX r q -8 KPX racute c -7 KPX racute cacute -7 KPX racute ccaron -7 KPX racute ccedilla -7 KPX racute comma -105 KPX racute d -6 KPX racute dcroat -6 KPX racute e -4 KPX racute eacute -4 KPX racute ecaron -4 KPX racute ecircumflex -4 KPX racute edieresis -4 KPX racute edotaccent -4 KPX racute egrave -4 KPX racute emacron -4 KPX racute eogonek -4 KPX racute f 48 KPX racute g 1 KPX racute gbreve 1 KPX racute gcommaaccent 1 KPX racute h 29 KPX racute m 28 KPX racute n 21 KPX racute nacute 21 KPX racute ncaron 21 KPX racute ncommaaccent 21 KPX racute ntilde 21 KPX racute o -4 KPX racute oacute -4 KPX racute ocircumflex -4 KPX racute odieresis -4 KPX racute ograve -4 KPX racute ohungarumlaut -4 KPX racute omacron -4 KPX racute oslash -4 KPX racute otilde -4 KPX racute period -73 KPX racute q -8 KPX rcaron c -7 KPX rcaron cacute -7 KPX rcaron ccaron -7 KPX rcaron ccedilla -7 KPX rcaron comma -105 KPX rcaron d -6 KPX rcaron dcroat -6 KPX rcaron e -4 KPX rcaron eacute -4 KPX rcaron ecaron -4 KPX rcaron ecircumflex -4 KPX rcaron edieresis -4 KPX rcaron edotaccent -4 KPX rcaron egrave -4 KPX rcaron emacron -4 KPX rcaron eogonek -4 KPX rcaron f 48 KPX rcaron g 1 KPX rcaron gbreve 1 KPX rcaron gcommaaccent 1 KPX rcaron h 29 KPX rcaron m 28 KPX rcaron n 21 KPX rcaron nacute 21 KPX rcaron ncaron 21 KPX rcaron ncommaaccent 21 KPX rcaron ntilde 21 KPX rcaron o -4 KPX rcaron oacute -4 KPX rcaron ocircumflex -4 KPX rcaron odieresis -4 KPX rcaron ograve -4 KPX rcaron ohungarumlaut -4 KPX rcaron omacron -4 KPX rcaron oslash -4 KPX rcaron otilde -4 KPX rcaron period -73 KPX rcaron q -8 KPX rcommaaccent c -7 KPX rcommaaccent cacute -7 KPX rcommaaccent ccaron -7 KPX rcommaaccent ccedilla -7 KPX rcommaaccent comma -105 KPX rcommaaccent d -6 KPX rcommaaccent dcroat -6 KPX rcommaaccent e -4 KPX rcommaaccent eacute -4 KPX rcommaaccent ecaron -4 KPX rcommaaccent ecircumflex -4 KPX rcommaaccent edieresis -4 KPX rcommaaccent edotaccent -4 KPX rcommaaccent egrave -4 KPX rcommaaccent emacron -4 KPX rcommaaccent eogonek -4 KPX rcommaaccent f 48 KPX rcommaaccent g 1 KPX rcommaaccent gbreve 1 KPX rcommaaccent gcommaaccent 1 KPX rcommaaccent h 29 KPX rcommaaccent m 28 KPX rcommaaccent n 21 KPX rcommaaccent nacute 21 KPX rcommaaccent ncaron 21 KPX rcommaaccent ncommaaccent 21 KPX rcommaaccent ntilde 21 KPX rcommaaccent o -4 KPX rcommaaccent oacute -4 KPX rcommaaccent ocircumflex -4 KPX rcommaaccent odieresis -4 KPX rcommaaccent ograve -4 KPX rcommaaccent ohungarumlaut -4 KPX rcommaaccent omacron -4 KPX rcommaaccent oslash -4 KPX rcommaaccent otilde -4 KPX rcommaaccent period -73 KPX rcommaaccent q -8 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Utopia-Regular.afm0000644000222100022210000005334714541067540016237 0ustar ph10ph10StartFontMetrics 2.0 Comment Copyright (c) 1989, 1991 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Fri Jan 17 13:38:17 1992 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 37674 Comment VMusage 32991 39883 FontName Utopia-Regular FullName Utopia Regular FamilyName Utopia Weight Regular ItalicAngle 0 IsFixedPitch false FontBBox -158 -250 1158 890 UnderlinePosition -100 UnderlineThickness 50 Version 001.002 Notice Copyright (c) 1989, 1991 Adobe Systems Incorporated. All Rights Reserved.Utopia is a registered trademark of Adobe Systems Incorporated. EncodingScheme AdobeStandardEncoding CapHeight 692 XHeight 490 Ascender 742 Descender -230 StartCharMetrics 228 C 32 ; WX 225 ; N space ; B 0 0 0 0 ; C 33 ; WX 242 ; N exclam ; B 58 -12 184 707 ; C 34 ; WX 458 ; N quotedbl ; B 101 464 358 742 ; C 35 ; WX 530 ; N numbersign ; B 11 0 519 668 ; C 36 ; WX 530 ; N dollar ; B 44 -102 487 743 ; C 37 ; WX 838 ; N percent ; B 50 -25 788 700 ; C 38 ; WX 706 ; N ampersand ; B 46 -12 692 680 ; C 39 ; WX 278 ; N quoteright ; B 72 472 207 742 ; C 40 ; WX 350 ; N parenleft ; B 105 -128 325 692 ; C 41 ; WX 350 ; N parenright ; B 25 -128 245 692 ; C 42 ; WX 412 ; N asterisk ; B 50 356 363 707 ; C 43 ; WX 570 ; N plus ; B 43 0 527 490 ; C 44 ; WX 265 ; N comma ; B 51 -141 193 141 ; C 45 ; WX 392 ; N hyphen ; B 74 216 319 286 ; C 46 ; WX 265 ; N period ; B 70 -12 196 116 ; C 47 ; WX 460 ; N slash ; B 92 -15 369 707 ; C 48 ; WX 530 ; N zero ; B 41 -12 489 680 ; C 49 ; WX 530 ; N one ; B 109 0 437 680 ; C 50 ; WX 530 ; N two ; B 27 0 485 680 ; C 51 ; WX 530 ; N three ; B 27 -12 473 680 ; C 52 ; WX 530 ; N four ; B 19 0 493 668 ; C 53 ; WX 530 ; N five ; B 40 -12 480 668 ; C 54 ; WX 530 ; N six ; B 44 -12 499 680 ; C 55 ; WX 530 ; N seven ; B 41 -12 497 668 ; C 56 ; WX 530 ; N eight ; B 42 -12 488 680 ; C 57 ; WX 530 ; N nine ; B 36 -12 477 680 ; C 58 ; WX 265 ; N colon ; B 70 -12 196 490 ; C 59 ; WX 265 ; N semicolon ; B 51 -141 196 490 ; C 60 ; WX 570 ; N less ; B 46 1 524 499 ; C 61 ; WX 570 ; N equal ; B 43 111 527 389 ; C 62 ; WX 570 ; N greater ; B 46 1 524 499 ; C 63 ; WX 389 ; N question ; B 29 -12 359 707 ; C 64 ; WX 793 ; N at ; B 46 -15 755 707 ; C 65 ; WX 635 ; N A ; B -29 0 650 692 ; C 66 ; WX 646 ; N B ; B 35 0 595 692 ; C 67 ; WX 684 ; N C ; B 48 -15 649 707 ; C 68 ; WX 779 ; N D ; B 35 0 731 692 ; C 69 ; WX 606 ; N E ; B 35 0 577 692 ; C 70 ; WX 580 ; N F ; B 35 0 543 692 ; C 71 ; WX 734 ; N G ; B 48 -15 725 707 ; C 72 ; WX 798 ; N H ; B 35 0 763 692 ; C 73 ; WX 349 ; N I ; B 35 0 314 692 ; C 74 ; WX 350 ; N J ; B 0 -114 323 692 ; C 75 ; WX 658 ; N K ; B 35 -5 671 692 ; C 76 ; WX 568 ; N L ; B 35 0 566 692 ; C 77 ; WX 944 ; N M ; B 33 0 909 692 ; C 78 ; WX 780 ; N N ; B 34 0 753 692 ; C 79 ; WX 762 ; N O ; B 48 -15 714 707 ; C 80 ; WX 600 ; N P ; B 35 0 574 692 ; C 81 ; WX 762 ; N Q ; B 48 -193 714 707 ; C 82 ; WX 644 ; N R ; B 35 0 638 692 ; C 83 ; WX 541 ; N S ; B 50 -15 504 707 ; C 84 ; WX 621 ; N T ; B 22 0 599 692 ; C 85 ; WX 791 ; N U ; B 29 -15 762 692 ; C 86 ; WX 634 ; N V ; B -18 0 678 692 ; C 87 ; WX 940 ; N W ; B -13 0 977 692 ; C 88 ; WX 624 ; N X ; B -19 0 657 692 ; C 89 ; WX 588 ; N Y ; B -12 0 632 692 ; C 90 ; WX 610 ; N Z ; B 9 0 594 692 ; C 91 ; WX 330 ; N bracketleft ; B 133 -128 292 692 ; C 92 ; WX 460 ; N backslash ; B 91 -15 369 707 ; C 93 ; WX 330 ; N bracketright ; B 38 -128 197 692 ; C 94 ; WX 570 ; N asciicircum ; B 56 228 514 668 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 278 ; N quoteleft ; B 72 478 207 748 ; C 97 ; WX 523 ; N a ; B 49 -12 525 502 ; C 98 ; WX 598 ; N b ; B 20 -12 549 742 ; C 99 ; WX 496 ; N c ; B 49 -12 473 502 ; C 100 ; WX 598 ; N d ; B 49 -12 583 742 ; C 101 ; WX 514 ; N e ; B 49 -12 481 502 ; C 102 ; WX 319 ; N f ; B 30 0 389 742 ; L i fi ; L l fl ; C 103 ; WX 520 ; N g ; B 42 -242 525 512 ; C 104 ; WX 607 ; N h ; B 21 0 592 742 ; C 105 ; WX 291 ; N i ; B 32 0 276 715 ; C 106 ; WX 280 ; N j ; B -33 -242 214 715 ; C 107 ; WX 524 ; N k ; B 20 -5 538 742 ; C 108 ; WX 279 ; N l ; B 20 0 264 742 ; C 109 ; WX 923 ; N m ; B 32 0 908 502 ; C 110 ; WX 619 ; N n ; B 32 0 604 502 ; C 111 ; WX 577 ; N o ; B 49 -12 528 502 ; C 112 ; WX 608 ; N p ; B 25 -230 559 502 ; C 113 ; WX 591 ; N q ; B 49 -230 583 502 ; C 114 ; WX 389 ; N r ; B 32 0 386 502 ; C 115 ; WX 436 ; N s ; B 47 -12 400 502 ; C 116 ; WX 344 ; N t ; B 31 -12 342 616 ; C 117 ; WX 606 ; N u ; B 26 -12 591 502 ; C 118 ; WX 504 ; N v ; B 1 0 529 490 ; C 119 ; WX 768 ; N w ; B -2 0 792 490 ; C 120 ; WX 486 ; N x ; B 1 0 509 490 ; C 121 ; WX 506 ; N y ; B -5 -242 528 490 ; C 122 ; WX 480 ; N z ; B 19 0 462 490 ; C 123 ; WX 340 ; N braceleft ; B 79 -128 298 692 ; C 124 ; WX 228 ; N bar ; B 80 -250 148 750 ; C 125 ; WX 340 ; N braceright ; B 42 -128 261 692 ; C 126 ; WX 570 ; N asciitilde ; B 73 175 497 317 ; C 160 ; WX 225 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 242 ; N exclamdown ; B 58 -217 184 502 ; C 162 ; WX 530 ; N cent ; B 37 -10 487 675 ; C 163 ; WX 530 ; N sterling ; B 27 0 510 680 ; C 164 ; WX 150 ; N fraction ; B -158 -27 308 695 ; C 165 ; WX 530 ; N yen ; B -2 0 525 668 ; C 166 ; WX 530 ; N florin ; B -2 -135 522 691 ; C 167 ; WX 554 ; N section ; B 46 -115 507 707 ; C 168 ; WX 530 ; N currency ; B 25 90 505 578 ; C 169 ; WX 278 ; N quotesingle ; B 93 464 185 742 ; C 170 ; WX 458 ; N quotedblleft ; B 72 478 387 748 ; C 171 ; WX 442 ; N guillemotleft ; B 41 41 401 435 ; C 172 ; WX 257 ; N guilsinglleft ; B 41 41 216 435 ; C 173 ; WX 257 ; N guilsinglright ; B 41 41 216 435 ; C 174 ; WX 610 ; N fi ; B 30 0 595 742 ; C 175 ; WX 610 ; N fl ; B 30 0 595 742 ; C 177 ; WX 500 ; N endash ; B 0 221 500 279 ; C 178 ; WX 504 ; N dagger ; B 45 -125 459 717 ; C 179 ; WX 488 ; N daggerdbl ; B 45 -119 443 717 ; C 180 ; WX 265 ; N periodcentered ; B 70 188 196 316 ; C 182 ; WX 555 ; N paragraph ; B 64 -101 529 692 ; C 183 ; WX 409 ; N bullet ; B 45 192 364 512 ; C 184 ; WX 278 ; N quotesinglbase ; B 72 -125 207 145 ; C 185 ; WX 458 ; N quotedblbase ; B 72 -125 387 145 ; C 186 ; WX 458 ; N quotedblright ; B 72 472 387 742 ; C 187 ; WX 442 ; N guillemotright ; B 41 41 401 435 ; C 188 ; WX 1000 ; N ellipsis ; B 104 -12 896 116 ; C 189 ; WX 1208 ; N perthousand ; B 50 -25 1158 700 ; C 191 ; WX 389 ; N questiondown ; B 30 -217 360 502 ; C 193 ; WX 400 ; N grave ; B 49 542 271 723 ; C 194 ; WX 400 ; N acute ; B 129 542 351 723 ; C 195 ; WX 400 ; N circumflex ; B 47 541 353 720 ; C 196 ; WX 400 ; N tilde ; B 22 563 377 682 ; C 197 ; WX 400 ; N macron ; B 56 597 344 656 ; C 198 ; WX 400 ; N breve ; B 63 568 337 704 ; C 199 ; WX 400 ; N dotaccent ; B 140 570 260 683 ; C 200 ; WX 400 ; N dieresis ; B 36 570 364 683 ; C 202 ; WX 400 ; N ring ; B 92 550 308 752 ; C 203 ; WX 400 ; N cedilla ; B 163 -230 329 0 ; C 205 ; WX 400 ; N hungarumlaut ; B 101 546 380 750 ; C 206 ; WX 400 ; N ogonek ; B 103 -230 295 0 ; C 207 ; WX 400 ; N caron ; B 47 541 353 720 ; C 208 ; WX 1000 ; N emdash ; B 0 221 1000 279 ; C 225 ; WX 876 ; N AE ; B -63 0 847 692 ; C 227 ; WX 390 ; N ordfeminine ; B 40 265 364 590 ; C 232 ; WX 574 ; N Lslash ; B 36 0 572 692 ; C 233 ; WX 762 ; N Oslash ; B 48 -53 714 739 ; C 234 ; WX 1025 ; N OE ; B 48 0 996 692 ; C 235 ; WX 398 ; N ordmasculine ; B 35 265 363 590 ; C 241 ; WX 797 ; N ae ; B 49 -12 764 502 ; C 245 ; WX 291 ; N dotlessi ; B 32 0 276 502 ; C 248 ; WX 294 ; N lslash ; B 14 0 293 742 ; C 249 ; WX 577 ; N oslash ; B 49 -41 528 532 ; C 250 ; WX 882 ; N oe ; B 49 -12 849 502 ; C 251 ; WX 601 ; N germandbls ; B 22 -12 573 742 ; C -1 ; WX 380 ; N onesuperior ; B 81 272 307 680 ; C -1 ; WX 570 ; N minus ; B 43 221 527 279 ; C -1 ; WX 350 ; N degree ; B 37 404 313 680 ; C -1 ; WX 577 ; N oacute ; B 49 -12 528 723 ; C -1 ; WX 762 ; N Odieresis ; B 48 -15 714 841 ; C -1 ; WX 577 ; N odieresis ; B 49 -12 528 683 ; C -1 ; WX 606 ; N Eacute ; B 35 0 577 890 ; C -1 ; WX 606 ; N ucircumflex ; B 26 -12 591 720 ; C -1 ; WX 860 ; N onequarter ; B 65 -27 795 695 ; C -1 ; WX 570 ; N logicalnot ; B 43 102 527 389 ; C -1 ; WX 606 ; N Ecircumflex ; B 35 0 577 876 ; C -1 ; WX 860 ; N onehalf ; B 58 -27 807 695 ; C -1 ; WX 762 ; N Otilde ; B 48 -15 714 842 ; C -1 ; WX 606 ; N uacute ; B 26 -12 591 723 ; C -1 ; WX 514 ; N eacute ; B 49 -12 481 723 ; C -1 ; WX 291 ; N iacute ; B 32 0 317 723 ; C -1 ; WX 606 ; N Egrave ; B 35 0 577 890 ; C -1 ; WX 291 ; N icircumflex ; B -3 0 304 720 ; C -1 ; WX 606 ; N mu ; B 26 -246 591 502 ; C -1 ; WX 228 ; N brokenbar ; B 80 -175 148 675 ; C -1 ; WX 606 ; N thorn ; B 23 -230 557 722 ; C -1 ; WX 627 ; N Aring ; B -32 0 647 861 ; C -1 ; WX 506 ; N yacute ; B -5 -242 528 723 ; C -1 ; WX 588 ; N Ydieresis ; B -12 0 632 841 ; C -1 ; WX 1100 ; N trademark ; B 45 277 1048 692 ; C -1 ; WX 818 ; N registered ; B 45 -15 773 707 ; C -1 ; WX 577 ; N ocircumflex ; B 49 -12 528 720 ; C -1 ; WX 635 ; N Agrave ; B -29 0 650 890 ; C -1 ; WX 541 ; N Scaron ; B 50 -15 504 882 ; C -1 ; WX 791 ; N Ugrave ; B 29 -15 762 890 ; C -1 ; WX 606 ; N Edieresis ; B 35 0 577 841 ; C -1 ; WX 791 ; N Uacute ; B 29 -15 762 890 ; C -1 ; WX 577 ; N otilde ; B 49 -12 528 682 ; C -1 ; WX 619 ; N ntilde ; B 32 0 604 682 ; C -1 ; WX 506 ; N ydieresis ; B -5 -242 528 683 ; C -1 ; WX 635 ; N Aacute ; B -29 0 650 890 ; C -1 ; WX 577 ; N eth ; B 49 -12 528 742 ; C -1 ; WX 523 ; N acircumflex ; B 49 -12 525 720 ; C -1 ; WX 523 ; N aring ; B 49 -12 525 752 ; C -1 ; WX 762 ; N Ograve ; B 48 -15 714 890 ; C -1 ; WX 496 ; N ccedilla ; B 49 -230 473 502 ; C -1 ; WX 570 ; N multiply ; B 63 22 507 478 ; C -1 ; WX 570 ; N divide ; B 43 26 527 474 ; C -1 ; WX 380 ; N twosuperior ; B 32 272 348 680 ; C -1 ; WX 780 ; N Ntilde ; B 34 0 753 842 ; C -1 ; WX 606 ; N ugrave ; B 26 -12 591 723 ; C -1 ; WX 791 ; N Ucircumflex ; B 29 -15 762 876 ; C -1 ; WX 635 ; N Atilde ; B -29 0 650 842 ; C -1 ; WX 480 ; N zcaron ; B 19 0 462 720 ; C -1 ; WX 291 ; N idieresis ; B -19 0 310 683 ; C -1 ; WX 635 ; N Acircumflex ; B -29 0 650 876 ; C -1 ; WX 349 ; N Icircumflex ; B 22 0 328 876 ; C -1 ; WX 588 ; N Yacute ; B -12 0 632 890 ; C -1 ; WX 762 ; N Oacute ; B 48 -15 714 890 ; C -1 ; WX 635 ; N Adieresis ; B -29 0 650 841 ; C -1 ; WX 610 ; N Zcaron ; B 9 0 594 882 ; C -1 ; WX 523 ; N agrave ; B 49 -12 525 723 ; C -1 ; WX 380 ; N threesuperior ; B 36 265 339 680 ; C -1 ; WX 577 ; N ograve ; B 49 -12 528 723 ; C -1 ; WX 860 ; N threequarters ; B 50 -27 808 695 ; C -1 ; WX 785 ; N Eth ; B 20 0 737 692 ; C -1 ; WX 570 ; N plusminus ; B 43 0 527 556 ; C -1 ; WX 606 ; N udieresis ; B 26 -12 591 683 ; C -1 ; WX 514 ; N edieresis ; B 49 -12 481 683 ; C -1 ; WX 523 ; N aacute ; B 49 -12 525 723 ; C -1 ; WX 291 ; N igrave ; B -35 0 276 723 ; C -1 ; WX 349 ; N Idieresis ; B 13 0 337 841 ; C -1 ; WX 523 ; N adieresis ; B 49 -12 525 683 ; C -1 ; WX 349 ; N Iacute ; B 35 0 371 890 ; C -1 ; WX 818 ; N copyright ; B 45 -15 773 707 ; C -1 ; WX 349 ; N Igrave ; B -17 0 314 890 ; C -1 ; WX 680 ; N Ccedilla ; B 48 -230 649 707 ; C -1 ; WX 436 ; N scaron ; B 47 -12 400 720 ; C -1 ; WX 514 ; N egrave ; B 49 -12 481 723 ; C -1 ; WX 762 ; N Ocircumflex ; B 48 -15 714 876 ; C -1 ; WX 593 ; N Thorn ; B 35 0 556 692 ; C -1 ; WX 523 ; N atilde ; B 49 -12 525 682 ; C -1 ; WX 791 ; N Udieresis ; B 29 -15 762 841 ; C -1 ; WX 514 ; N ecircumflex ; B 49 -12 481 720 ; EndCharMetrics StartKernData StartKernPairs 712 KPX A z 6 KPX A y -50 KPX A w -45 KPX A v -60 KPX A u -25 KPX A t -12 KPX A quoteright -120 KPX A quotedblright -120 KPX A q -6 KPX A p -18 KPX A o -12 KPX A e -6 KPX A d -12 KPX A c -12 KPX A b -12 KPX A Y -70 KPX A X -6 KPX A W -58 KPX A V -72 KPX A U -50 KPX A T -70 KPX A Q -24 KPX A O -24 KPX A G -24 KPX A C -24 KPX B y -18 KPX B u -12 KPX B r -12 KPX B period -30 KPX B o -6 KPX B l -12 KPX B i -12 KPX B h -12 KPX B e -6 KPX B comma -20 KPX B a -12 KPX B W -25 KPX B V -20 KPX B U -20 KPX B T -20 KPX C z -18 KPX C y -24 KPX C u -18 KPX C r -6 KPX C o -12 KPX C e -12 KPX C a -12 KPX C Q -6 KPX C O -6 KPX C G -6 KPX C C -6 KPX D y 6 KPX D u -12 KPX D r -12 KPX D quoteright -20 KPX D quotedblright -20 KPX D period -60 KPX D i -6 KPX D h -12 KPX D e -6 KPX D comma -50 KPX D a -6 KPX D Y -45 KPX D W -35 KPX D V -35 KPX E z -6 KPX E y -30 KPX E x -6 KPX E w -24 KPX E v -24 KPX E u -12 KPX E t -18 KPX E r -4 KPX E q -6 KPX E p -18 KPX E o -6 KPX E n -4 KPX E m -4 KPX E l 5 KPX E k 5 KPX E j -6 KPX E i -6 KPX E g -6 KPX E f -12 KPX E e -6 KPX E d -6 KPX E c -6 KPX E b -12 KPX E Y -6 KPX E W -6 KPX E V -6 KPX F y -18 KPX F u -12 KPX F r -20 KPX F period -180 KPX F o -36 KPX F l -12 KPX F i -10 KPX F endash 20 KPX F e -36 KPX F comma -180 KPX F a -48 KPX F A -60 KPX G y -18 KPX G u -12 KPX G r -5 KPX G o 5 KPX G n -5 KPX G l -6 KPX G i -12 KPX G h -12 KPX G e 5 KPX G a -12 KPX H y -24 KPX H u -26 KPX H o -30 KPX H i -18 KPX H e -30 KPX H a -24 KPX I z -6 KPX I y -6 KPX I x -6 KPX I w -18 KPX I v -24 KPX I u -26 KPX I t -24 KPX I s -18 KPX I r -12 KPX I p -26 KPX I o -30 KPX I n -18 KPX I m -18 KPX I l -6 KPX I k -6 KPX I h -6 KPX I g -10 KPX I f -6 KPX I e -30 KPX I d -30 KPX I c -30 KPX I b -6 KPX I a -24 KPX J y -12 KPX J u -36 KPX J o -30 KPX J i -20 KPX J e -30 KPX J bracketright 20 KPX J braceright 20 KPX J a -36 KPX K y -60 KPX K w -70 KPX K v -70 KPX K u -42 KPX K o -30 KPX K i 6 KPX K e -24 KPX K a -12 KPX K Q -42 KPX K O -42 KPX K G -42 KPX K C -42 KPX L y -52 KPX L w -58 KPX L u -12 KPX L quoteright -130 KPX L quotedblright -50 KPX L l 6 KPX L j -6 KPX L Y -70 KPX L W -90 KPX L V -100 KPX L U -24 KPX L T -100 KPX L Q -18 KPX L O -10 KPX L G -18 KPX L C -18 KPX L A 12 KPX M y -24 KPX M u -36 KPX M o -30 KPX M n -6 KPX M j -12 KPX M i -12 KPX M e -30 KPX M d -30 KPX M c -30 KPX M a -12 KPX N y -24 KPX N u -30 KPX N o -30 KPX N i -24 KPX N e -30 KPX N a -30 KPX O z -6 KPX O u -6 KPX O t -6 KPX O s -6 KPX O q -6 KPX O period -60 KPX O p -6 KPX O o -6 KPX O n -5 KPX O m -5 KPX O l -6 KPX O k -6 KPX O i -5 KPX O h -12 KPX O g -6 KPX O e -6 KPX O d -6 KPX O comma -50 KPX O c -6 KPX O a -12 KPX O Y -55 KPX O X -24 KPX O W -30 KPX O V -18 KPX O T -30 KPX O A -18 KPX P u -12 KPX P t -6 KPX P s -24 KPX P r -12 KPX P period -200 KPX P o -30 KPX P n -12 KPX P l -6 KPX P hyphen -40 KPX P h -6 KPX P e -30 KPX P comma -200 KPX P a -36 KPX P I -6 KPX P H -12 KPX P E -6 KPX P A -55 KPX Q u -6 KPX Q a -18 KPX Q Y -30 KPX Q X -24 KPX Q W -24 KPX Q V -18 KPX Q U -30 KPX Q T -24 KPX Q A -18 KPX R y -20 KPX R u -12 KPX R quoteright -20 KPX R quotedblright -20 KPX R o -20 KPX R hyphen -30 KPX R e -20 KPX R d -20 KPX R a -12 KPX R Y -45 KPX R W -24 KPX R V -32 KPX R U -30 KPX R T -32 KPX R Q -24 KPX R O -24 KPX R G -24 KPX R C -24 KPX S y -25 KPX S w -30 KPX S v -30 KPX S u -24 KPX S t -24 KPX S r -20 KPX S quoteright -10 KPX S quotedblright -10 KPX S q -5 KPX S p -24 KPX S o -12 KPX S n -20 KPX S m -20 KPX S l -18 KPX S k -24 KPX S j -12 KPX S i -20 KPX S h -12 KPX S e -12 KPX S a -18 KPX T z -64 KPX T y -84 KPX T w -100 KPX T u -82 KPX T semicolon -56 KPX T s -82 KPX T r -82 KPX T quoteright 24 KPX T period -110 KPX T parenright 54 KPX T o -100 KPX T m -82 KPX T i -34 KPX T hyphen -100 KPX T endash -50 KPX T emdash -50 KPX T e -100 KPX T comma -110 KPX T colon -50 KPX T bracketright 54 KPX T braceright 54 KPX T a -100 KPX T Y 12 KPX T X 18 KPX T W 6 KPX T V 6 KPX T T 12 KPX T S -12 KPX T Q -18 KPX T O -18 KPX T G -18 KPX T C -18 KPX T A -65 KPX U z -30 KPX U y -20 KPX U x -30 KPX U v -20 KPX U t -36 KPX U s -40 KPX U r -40 KPX U p -42 KPX U n -40 KPX U m -40 KPX U l -12 KPX U k -12 KPX U i -28 KPX U h -6 KPX U g -50 KPX U f -12 KPX U d -45 KPX U c -45 KPX U b -12 KPX U a -40 KPX U A -40 KPX V y -36 KPX V u -40 KPX V semicolon -45 KPX V r -70 KPX V quoteright 36 KPX V quotedblright 20 KPX V period -140 KPX V parenright 85 KPX V o -70 KPX V i 6 KPX V hyphen -60 KPX V endash -20 KPX V emdash -20 KPX V e -70 KPX V comma -140 KPX V colon -45 KPX V bracketright 64 KPX V braceright 64 KPX V a -60 KPX V T 6 KPX V Q -12 KPX V O -12 KPX V G -12 KPX V C -12 KPX V A -60 KPX W y -50 KPX W u -46 KPX W semicolon -40 KPX W r -45 KPX W quoteright 36 KPX W quotedblright 20 KPX W period -110 KPX W parenright 85 KPX W o -65 KPX W m -45 KPX W i -10 KPX W hyphen -40 KPX W e -65 KPX W d -65 KPX W comma -100 KPX W colon -40 KPX W bracketright 64 KPX W braceright 64 KPX W a -60 KPX W T 18 KPX W Q -6 KPX W O -6 KPX W G -6 KPX W C -6 KPX W A -48 KPX X y -18 KPX X u -24 KPX X quoteright 15 KPX X e -6 KPX X a -6 KPX X Q -24 KPX X O -30 KPX X G -30 KPX X C -30 KPX X A 6 KPX Y v -50 KPX Y u -54 KPX Y t -46 KPX Y semicolon -37 KPX Y quoteright 36 KPX Y quotedblright 20 KPX Y q -100 KPX Y period -90 KPX Y parenright 60 KPX Y o -90 KPX Y l 10 KPX Y hyphen -50 KPX Y emdash -20 KPX Y e -90 KPX Y d -90 KPX Y comma -90 KPX Y colon -50 KPX Y bracketright 64 KPX Y braceright 64 KPX Y a -68 KPX Y Y 12 KPX Y X 12 KPX Y W 12 KPX Y V 12 KPX Y T 12 KPX Y Q -18 KPX Y O -18 KPX Y G -18 KPX Y C -18 KPX Y A -32 KPX Z y -36 KPX Z w -36 KPX Z u -6 KPX Z o -12 KPX Z i -12 KPX Z e -6 KPX Z a -6 KPX Z Q -20 KPX Z O -20 KPX Z G -30 KPX Z C -20 KPX Z A 20 KPX a quoteright -70 KPX a quotedblright -80 KPX b y -25 KPX b w -30 KPX b v -35 KPX b quoteright -70 KPX b quotedblright -70 KPX b period -40 KPX b comma -40 KPX braceleft Y 64 KPX braceleft W 64 KPX braceleft V 64 KPX braceleft T 54 KPX braceleft J 80 KPX bracketleft Y 64 KPX bracketleft W 64 KPX bracketleft V 64 KPX bracketleft T 54 KPX bracketleft J 80 KPX c quoteright -28 KPX c quotedblright -28 KPX c period -10 KPX comma quoteright -50 KPX comma quotedblright -50 KPX d quoteright -24 KPX d quotedblright -24 KPX e z -4 KPX e quoteright -60 KPX e quotedblright -60 KPX e period -20 KPX e comma -20 KPX f quotesingle 30 KPX f quoteright 65 KPX f quotedblright 56 KPX f quotedbl 30 KPX f parenright 100 KPX f bracketright 100 KPX f braceright 100 KPX g quoteright -18 KPX g quotedblright -10 KPX h quoteright -80 KPX h quotedblright -80 KPX j quoteright -20 KPX j quotedblright -20 KPX j period -30 KPX j comma -30 KPX k quoteright -40 KPX k quotedblright -40 KPX l quoteright -10 KPX l quotedblright -10 KPX m quoteright -80 KPX m quotedblright -80 KPX n quoteright -80 KPX n quotedblright -80 KPX o z -12 KPX o y -30 KPX o x -18 KPX o w -30 KPX o v -30 KPX o quoteright -70 KPX o quotedblright -70 KPX o period -40 KPX o comma -40 KPX p z -20 KPX p y -25 KPX p w -30 KPX p quoteright -70 KPX p quotedblright -70 KPX p period -40 KPX p comma -40 KPX parenleft Y 64 KPX parenleft W 64 KPX parenleft V 64 KPX parenleft T 64 KPX parenleft J 80 KPX period quoteright -50 KPX period quotedblright -50 KPX q quoteright -50 KPX q quotedblright -50 KPX q period -20 KPX q comma -10 KPX quotedblleft z -60 KPX quotedblleft y -30 KPX quotedblleft x -40 KPX quotedblleft w -20 KPX quotedblleft v -20 KPX quotedblleft u -40 KPX quotedblleft t -40 KPX quotedblleft s -50 KPX quotedblleft r -50 KPX quotedblleft q -80 KPX quotedblleft p -50 KPX quotedblleft o -80 KPX quotedblleft n -50 KPX quotedblleft m -50 KPX quotedblleft g -70 KPX quotedblleft f -50 KPX quotedblleft e -80 KPX quotedblleft d -80 KPX quotedblleft c -80 KPX quotedblleft a -70 KPX quotedblleft Z -20 KPX quotedblleft Y 12 KPX quotedblleft W 18 KPX quotedblleft V 18 KPX quotedblleft U -20 KPX quotedblleft T 10 KPX quotedblleft S -20 KPX quotedblleft R -20 KPX quotedblleft Q -20 KPX quotedblleft P -20 KPX quotedblleft O -30 KPX quotedblleft N -20 KPX quotedblleft M -20 KPX quotedblleft L -20 KPX quotedblleft K -20 KPX quotedblleft J -40 KPX quotedblleft I -20 KPX quotedblleft H -20 KPX quotedblleft G -30 KPX quotedblleft F -20 KPX quotedblleft E -20 KPX quotedblleft D -20 KPX quotedblleft C -30 KPX quotedblleft B -20 KPX quotedblleft A -130 KPX quotedblright period -130 KPX quotedblright comma -130 KPX quoteleft z -40 KPX quoteleft y -35 KPX quoteleft x -30 KPX quoteleft w -20 KPX quoteleft v -20 KPX quoteleft u -50 KPX quoteleft t -40 KPX quoteleft s -45 KPX quoteleft r -50 KPX quoteleft quoteleft -72 KPX quoteleft q -70 KPX quoteleft p -50 KPX quoteleft o -70 KPX quoteleft n -50 KPX quoteleft m -50 KPX quoteleft g -65 KPX quoteleft f -40 KPX quoteleft e -70 KPX quoteleft d -70 KPX quoteleft c -70 KPX quoteleft a -60 KPX quoteleft Z -20 KPX quoteleft Y 18 KPX quoteleft X 12 KPX quoteleft W 18 KPX quoteleft V 18 KPX quoteleft U -20 KPX quoteleft T 10 KPX quoteleft R -20 KPX quoteleft Q -20 KPX quoteleft P -20 KPX quoteleft O -30 KPX quoteleft N -20 KPX quoteleft M -20 KPX quoteleft L -20 KPX quoteleft K -20 KPX quoteleft J -40 KPX quoteleft I -20 KPX quoteleft H -20 KPX quoteleft G -40 KPX quoteleft F -20 KPX quoteleft E -20 KPX quoteleft D -20 KPX quoteleft C -30 KPX quoteleft B -20 KPX quoteleft A -130 KPX quoteright v -40 KPX quoteright t -75 KPX quoteright s -110 KPX quoteright r -70 KPX quoteright quoteright -72 KPX quoteright period -130 KPX quoteright m -70 KPX quoteright l -6 KPX quoteright d -120 KPX quoteright comma -130 KPX r z 10 KPX r y 18 KPX r x 12 KPX r w 18 KPX r v 18 KPX r u 8 KPX r t 8 KPX r semicolon 10 KPX r quoteright -20 KPX r quotedblright -20 KPX r q -6 KPX r period -60 KPX r o -6 KPX r n 8 KPX r m 8 KPX r k -6 KPX r i 8 KPX r hyphen -20 KPX r h 6 KPX r g -6 KPX r f 8 KPX r e -20 KPX r d -20 KPX r comma -60 KPX r colon 10 KPX r c -20 KPX r a -10 KPX s quoteright -40 KPX s quotedblright -40 KPX s period -20 KPX s comma -10 KPX space quotesinglbase -60 KPX space quoteleft -40 KPX space quotedblleft -40 KPX space quotedblbase -60 KPX space Y -60 KPX space W -60 KPX space V -60 KPX space T -36 KPX t quoteright -18 KPX t quotedblright -18 KPX u quoteright -30 KPX u quotedblright -30 KPX v semicolon 10 KPX v quoteright 20 KPX v quotedblright 20 KPX v q -10 KPX v period -90 KPX v o -5 KPX v e -5 KPX v d -10 KPX v comma -90 KPX v colon 10 KPX v c -6 KPX v a -6 KPX w semicolon 10 KPX w quoteright 20 KPX w quotedblright 20 KPX w q -6 KPX w period -80 KPX w e -6 KPX w d -6 KPX w comma -75 KPX w colon 10 KPX w c -6 KPX x quoteright -10 KPX x quotedblright -20 KPX x q -6 KPX x o -6 KPX x d -12 KPX x c -12 KPX y semicolon 10 KPX y q -6 KPX y period -95 KPX y o -6 KPX y hyphen -30 KPX y e -6 KPX y d -6 KPX y comma -85 KPX y colon 10 KPX y c -6 KPX z quoteright -20 KPX z quotedblright -30 KPX z o -6 KPX z e -6 KPX z d -6 KPX z c -6 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/PMW-Alpha.afm0000644000222100022210000000647214541067540015062 0ustar ph10ph10StartFontMetrics 2.0 FontName PMW-Alpha FullName PMW-Alpha FamilyName PMW-Alpha Comment No bounding boxes available... Weight Medium ItalicAngle 0 IsFixedPitch false FontBBox -360 -326 1324 838 UnderlinePosition -98 UnderlineThickness 54 Version 51 EncodingScheme FontSpecific StartCharMetrics 113 C 32 ; WX 640 ; N space ; C 34 ; WX 260 ; N smsqrest ; C 35 ; WX 460 ; N sharp ; C 36 ; WX 380 ; N flat ; C 37 ; WX 360 ; N natural ; C 38 ; WX 700 ; N doubleflat ; C 39 ; WX 380 ; N sqrest ; C 40 ; WX 924 ; N leftarrow ; C 41 ; WX 924 ; N rightarrow ; C 42 ; WX 770 ; N star ; C 43 ; WX 640 ; N plus ; C 44 ; WX 260 ; N ddspace ; C 46 ; WX 130 ; N udot ; C 47 ; WX 380 ; N crest ; C 48 ; WX 640 ; N zero ; C 49 ; WX 640 ; N one ; C 50 ; WX 640 ; N two ; C 51 ; WX 640 ; N three ; C 52 ; WX 640 ; N four ; C 53 ; WX 640 ; N five ; C 54 ; WX 640 ; N six ; C 55 ; WX 640 ; N seven ; C 56 ; WX 640 ; N eight ; C 57 ; WX 640 ; N nine ; C 58 ; WX 260 ; N smqrest ; C 59 ; WX 380 ; N qrest ; C 60 ; WX 130 ; N dspace ; C 61 ; WX 564 ; N equals ; C 62 ; WX 130 ; N ddot ; C 63 ; WX 260 ; N smcrest ; C 66 ; WX 640 ; N bassclef ; C 67 ; WX 640 ; N C ; C 69 ; WX 380 ; N dminim ; C 70 ; WX 800 ; N fermata ; C 71 ; WX 640 ; N trebleclef ; C 72 ; WX 0 ; N beam1d ; C 74 ; WX 0 ; N beam2d ; C 75 ; WX 0 ; N beam15d ; C 76 ; WX 380 ; N cnh ; C 77 ; WX 380 ; N mnh ; C 79 ; WX 800 ; N ds1 ; C 80 ; WX 1400 ; N ped ; C 81 ; WX 640 ; N breve ; C 82 ; WX 380 ; N dcrotchet ; C 83 ; WX 720 ; N ds2 ; C 84 ; WX 380 ; N dquaver ; C 86 ; WX 640 ; N altoclef ; C 87 ; WX 380 ; N semibreve ; C 89 ; WX 380 ; N dsquaver ; C 91 ; WX 510 ; N lsbrest ; C 92 ; WX 380 ; N nspace ; C 93 ; WX 510 ; N lmrest ; C 94 ; WX 460 ; N doublesharp ; C 95 ; WX 530 ; N runon ; C 96 ; WX 700 ; N iturn ; C 99 ; WX 640 ; N cut ; C 100 ; WX 817 ; N downto ; C 101 ; WX 380 ; N uminim ; C 102 ; WX 470 ; N f ; C 103 ; WX 640 ; N xtclef ; C 104 ; WX 0 ; N beam1u ; C 106 ; WX 0 ; N beam2u ; C 107 ; WX 0 ; N beam15u ; C 109 ; WX 880 ; N m ; C 111 ; WX 760 ; N trill ; C 112 ; WX 690 ; N p ; C 113 ; WX 640 ; N xbreve ; C 114 ; WX 380 ; N ucrotchet ; C 115 ; WX 320 ; N s ; C 116 ; WX 380 ; N uquaver ; C 117 ; WX 817 ; N upto ; C 119 ; WX 380 ; N xsemibreve ; C 121 ; WX 380 ; N usquaver ; C 122 ; WX 420 ; N z ; C 123 ; WX 260 ; N sbrest ; C 124 ; WX 20 ; N bar ; C 125 ; WX 260 ; N mrest ; C 126 ; WX 700 ; N turn ; C 160 ; WX 0 ; N stave ; C 178 ; WX 750 ; N twothirds ; C 179 ; WX 750 ; N threefifths ; C 180 ; WX 750 ; N onefifth ; C 181 ; WX 750 ; N twofifths ; C 182 ; WX 750 ; N fourfifths ; C 183 ; WX 750 ; N oneseventh ; C 184 ; WX 750 ; N twosevenths ; C 185 ; WX 750 ; N onethird ; C 186 ; WX 750 ; N oneninth ; C 187 ; WX 750 ; N eightninths ; C 188 ; WX 750 ; N onequarter ; C 189 ; WX 750 ; N onehalf ; C 190 ; WX 750 ; N threequarters ; C 200 ; WX 300 ; N sup0 ; C 201 ; WX 300 ; N sup1 ; C 202 ; WX 300 ; N sup2 ; C 203 ; WX 300 ; N sup3 ; C 204 ; WX 300 ; N sup4 ; C 205 ; WX 300 ; N sup5 ; C 206 ; WX 300 ; N sup6 ; C 207 ; WX 300 ; N sup7 ; C 208 ; WX 300 ; N sup8 ; C 209 ; WX 300 ; N sup9 ; C 210 ; WX 300 ; N sub0 ; C 211 ; WX 300 ; N sub1 ; C 212 ; WX 300 ; N sub2 ; C 213 ; WX 300 ; N sub3 ; C 214 ; WX 300 ; N sub4 ; C 215 ; WX 300 ; N sub5 ; C 216 ; WX 300 ; N sub6 ; C 217 ; WX 300 ; N sub7 ; C 218 ; WX 300 ; N sub8 ; C 219 ; WX 300 ; N sub9 ; C 222 ; WX 150 ; N slash ; EndCharMetrics EndFontMetrics pmw-5.22/fontmetrics/MustRead.html0000644000222100022210000000174714541067540015321 0ustar ph10ph10 Adobe Core 35 AFM Files with 314 Glyph Entries - ReadMe

Adobe Core 35 AFM Files with 314 Glyph Entries - ReadMe

This file and the 35 PostScript(R) AFM files it accompanies may be used, copied, and distributed for any purpose and without charge, with or without modification, provided that all copyright notices are retained; that the AFM files are not distributed without this file; that all modifications to this file or any of the AFM files are prominently noted in the modified file(s); and that this paragraph is not modified. Adobe Systems has no responsibility or obligation to support the use of the AFM files.
pmw-5.22/fontmetrics/Symbol.afm0000644000222100022210000002276714541067540014646 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved. Comment Creation Date: Thu May 1 15:12:25 1997 Comment UniqueID 43064 Comment VMusage 30820 39997 FontName Symbol FullName Symbol FamilyName Symbol Weight Medium ItalicAngle 0 IsFixedPitch false FontBBox -180 -293 1090 1010 UnderlinePosition -100 UnderlineThickness 50 Version 001.008 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved. EncodingScheme FontSpecific StdHW 92 StdVW 85 StartCharMetrics 190 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 128 -17 240 672 ; C 34 ; WX 713 ; N universal ; B 31 0 681 705 ; C 35 ; WX 500 ; N numbersign ; B 20 -16 481 673 ; C 36 ; WX 549 ; N existential ; B 25 0 478 707 ; C 37 ; WX 833 ; N percent ; B 63 -36 771 655 ; C 38 ; WX 778 ; N ampersand ; B 41 -18 750 661 ; C 39 ; WX 439 ; N suchthat ; B 48 -17 414 500 ; C 40 ; WX 333 ; N parenleft ; B 53 -191 300 673 ; C 41 ; WX 333 ; N parenright ; B 30 -191 277 673 ; C 42 ; WX 500 ; N asteriskmath ; B 65 134 427 551 ; C 43 ; WX 549 ; N plus ; B 10 0 539 533 ; C 44 ; WX 250 ; N comma ; B 56 -152 194 104 ; C 45 ; WX 549 ; N minus ; B 11 233 535 288 ; C 46 ; WX 250 ; N period ; B 69 -17 181 95 ; C 47 ; WX 278 ; N slash ; B 0 -18 254 646 ; C 48 ; WX 500 ; N zero ; B 24 -14 476 685 ; C 49 ; WX 500 ; N one ; B 117 0 390 673 ; C 50 ; WX 500 ; N two ; B 25 0 475 685 ; C 51 ; WX 500 ; N three ; B 43 -14 435 685 ; C 52 ; WX 500 ; N four ; B 15 0 469 685 ; C 53 ; WX 500 ; N five ; B 32 -14 445 690 ; C 54 ; WX 500 ; N six ; B 34 -14 468 685 ; C 55 ; WX 500 ; N seven ; B 24 -16 448 673 ; C 56 ; WX 500 ; N eight ; B 56 -14 445 685 ; C 57 ; WX 500 ; N nine ; B 30 -18 459 685 ; C 58 ; WX 278 ; N colon ; B 81 -17 193 460 ; C 59 ; WX 278 ; N semicolon ; B 83 -152 221 460 ; C 60 ; WX 549 ; N less ; B 26 0 523 522 ; C 61 ; WX 549 ; N equal ; B 11 141 537 390 ; C 62 ; WX 549 ; N greater ; B 26 0 523 522 ; C 63 ; WX 444 ; N question ; B 70 -17 412 686 ; C 64 ; WX 549 ; N congruent ; B 11 0 537 475 ; C 65 ; WX 722 ; N Alpha ; B 4 0 684 673 ; C 66 ; WX 667 ; N Beta ; B 29 0 592 673 ; C 67 ; WX 722 ; N Chi ; B -9 0 704 673 ; C 68 ; WX 612 ; N Delta ; B 6 0 608 688 ; C 69 ; WX 611 ; N Epsilon ; B 32 0 617 673 ; C 70 ; WX 763 ; N Phi ; B 26 0 741 673 ; C 71 ; WX 603 ; N Gamma ; B 24 0 609 673 ; C 72 ; WX 722 ; N Eta ; B 39 0 729 673 ; C 73 ; WX 333 ; N Iota ; B 32 0 316 673 ; C 74 ; WX 631 ; N theta1 ; B 18 -18 623 689 ; C 75 ; WX 722 ; N Kappa ; B 35 0 722 673 ; C 76 ; WX 686 ; N Lambda ; B 6 0 680 688 ; C 77 ; WX 889 ; N Mu ; B 28 0 887 673 ; C 78 ; WX 722 ; N Nu ; B 29 -8 720 673 ; C 79 ; WX 722 ; N Omicron ; B 41 -17 715 685 ; C 80 ; WX 768 ; N Pi ; B 25 0 745 673 ; C 81 ; WX 741 ; N Theta ; B 41 -17 715 685 ; C 82 ; WX 556 ; N Rho ; B 28 0 563 673 ; C 83 ; WX 592 ; N Sigma ; B 5 0 589 673 ; C 84 ; WX 611 ; N Tau ; B 33 0 607 673 ; C 85 ; WX 690 ; N Upsilon ; B -8 0 694 673 ; C 86 ; WX 439 ; N sigma1 ; B 40 -233 436 500 ; C 87 ; WX 768 ; N Omega ; B 34 0 736 688 ; C 88 ; WX 645 ; N Xi ; B 40 0 599 673 ; C 89 ; WX 795 ; N Psi ; B 15 0 781 684 ; C 90 ; WX 611 ; N Zeta ; B 44 0 636 673 ; C 91 ; WX 333 ; N bracketleft ; B 86 -155 299 674 ; C 92 ; WX 863 ; N therefore ; B 163 0 701 487 ; C 93 ; WX 333 ; N bracketright ; B 33 -155 246 674 ; C 94 ; WX 658 ; N perpendicular ; B 15 0 652 674 ; C 95 ; WX 500 ; N underscore ; B -2 -125 502 -75 ; C 96 ; WX 500 ; N radicalex ; B 480 881 1090 917 ; C 97 ; WX 631 ; N alpha ; B 41 -18 622 500 ; C 98 ; WX 549 ; N beta ; B 61 -223 515 741 ; C 99 ; WX 549 ; N chi ; B 12 -231 522 499 ; C 100 ; WX 494 ; N delta ; B 40 -19 481 740 ; C 101 ; WX 439 ; N epsilon ; B 22 -19 427 502 ; C 102 ; WX 521 ; N phi ; B 28 -224 492 673 ; C 103 ; WX 411 ; N gamma ; B 5 -225 484 499 ; C 104 ; WX 603 ; N eta ; B 0 -202 527 514 ; C 105 ; WX 329 ; N iota ; B 0 -17 301 503 ; C 106 ; WX 603 ; N phi1 ; B 36 -224 587 499 ; C 107 ; WX 549 ; N kappa ; B 33 0 558 501 ; C 108 ; WX 549 ; N lambda ; B 24 -17 548 739 ; C 109 ; WX 576 ; N mu ; B 33 -223 567 500 ; C 110 ; WX 521 ; N nu ; B -9 -16 475 507 ; C 111 ; WX 549 ; N omicron ; B 35 -19 501 499 ; C 112 ; WX 549 ; N pi ; B 10 -19 530 487 ; C 113 ; WX 521 ; N theta ; B 43 -17 485 690 ; C 114 ; WX 549 ; N rho ; B 50 -230 490 499 ; C 115 ; WX 603 ; N sigma ; B 30 -21 588 500 ; C 116 ; WX 439 ; N tau ; B 10 -19 418 500 ; C 117 ; WX 576 ; N upsilon ; B 7 -18 535 507 ; C 118 ; WX 713 ; N omega1 ; B 12 -18 671 583 ; C 119 ; WX 686 ; N omega ; B 42 -17 684 500 ; C 120 ; WX 493 ; N xi ; B 27 -224 469 766 ; C 121 ; WX 686 ; N psi ; B 12 -228 701 500 ; C 122 ; WX 494 ; N zeta ; B 60 -225 467 756 ; C 123 ; WX 480 ; N braceleft ; B 58 -183 397 673 ; C 124 ; WX 200 ; N bar ; B 65 -293 135 707 ; C 125 ; WX 480 ; N braceright ; B 79 -183 418 673 ; C 126 ; WX 549 ; N similar ; B 17 203 529 307 ; C 160 ; WX 750 ; N Euro ; B 20 -12 714 685 ; C 161 ; WX 620 ; N Upsilon1 ; B -2 0 610 685 ; C 162 ; WX 247 ; N minute ; B 27 459 228 735 ; C 163 ; WX 549 ; N lessequal ; B 29 0 526 639 ; C 164 ; WX 167 ; N fraction ; B -180 -12 340 677 ; C 165 ; WX 713 ; N infinity ; B 26 124 688 404 ; C 166 ; WX 500 ; N florin ; B 2 -193 494 686 ; C 167 ; WX 753 ; N club ; B 86 -26 660 533 ; C 168 ; WX 753 ; N diamond ; B 142 -36 600 550 ; C 169 ; WX 753 ; N heart ; B 117 -33 631 532 ; C 170 ; WX 753 ; N spade ; B 113 -36 629 548 ; C 171 ; WX 1042 ; N arrowboth ; B 24 -15 1024 511 ; C 172 ; WX 987 ; N arrowleft ; B 32 -15 942 511 ; C 173 ; WX 603 ; N arrowup ; B 45 0 571 910 ; C 174 ; WX 987 ; N arrowright ; B 49 -15 959 511 ; C 175 ; WX 603 ; N arrowdown ; B 45 -22 571 888 ; C 176 ; WX 400 ; N degree ; B 50 385 350 685 ; C 177 ; WX 549 ; N plusminus ; B 10 0 539 645 ; C 178 ; WX 411 ; N second ; B 20 459 413 737 ; C 179 ; WX 549 ; N greaterequal ; B 29 0 526 639 ; C 180 ; WX 549 ; N multiply ; B 17 8 533 524 ; C 181 ; WX 713 ; N proportional ; B 27 123 639 404 ; C 182 ; WX 494 ; N partialdiff ; B 26 -20 462 746 ; C 183 ; WX 460 ; N bullet ; B 50 113 410 473 ; C 184 ; WX 549 ; N divide ; B 10 71 536 456 ; C 185 ; WX 549 ; N notequal ; B 15 -25 540 549 ; C 186 ; WX 549 ; N equivalence ; B 14 82 538 443 ; C 187 ; WX 549 ; N approxequal ; B 14 135 527 394 ; C 188 ; WX 1000 ; N ellipsis ; B 111 -17 889 95 ; C 189 ; WX 603 ; N arrowvertex ; B 280 -120 336 1010 ; C 190 ; WX 1000 ; N arrowhorizex ; B -60 220 1050 276 ; C 191 ; WX 658 ; N carriagereturn ; B 15 -16 602 629 ; C 192 ; WX 823 ; N aleph ; B 175 -18 661 658 ; C 193 ; WX 686 ; N Ifraktur ; B 10 -53 578 740 ; C 194 ; WX 795 ; N Rfraktur ; B 26 -15 759 734 ; C 195 ; WX 987 ; N weierstrass ; B 159 -211 870 573 ; C 196 ; WX 768 ; N circlemultiply ; B 43 -17 733 673 ; C 197 ; WX 768 ; N circleplus ; B 43 -15 733 675 ; C 198 ; WX 823 ; N emptyset ; B 39 -24 781 719 ; C 199 ; WX 768 ; N intersection ; B 40 0 732 509 ; C 200 ; WX 768 ; N union ; B 40 -17 732 492 ; C 201 ; WX 713 ; N propersuperset ; B 20 0 673 470 ; C 202 ; WX 713 ; N reflexsuperset ; B 20 -125 673 470 ; C 203 ; WX 713 ; N notsubset ; B 36 -70 690 540 ; C 204 ; WX 713 ; N propersubset ; B 37 0 690 470 ; C 205 ; WX 713 ; N reflexsubset ; B 37 -125 690 470 ; C 206 ; WX 713 ; N element ; B 45 0 505 468 ; C 207 ; WX 713 ; N notelement ; B 45 -58 505 555 ; C 208 ; WX 768 ; N angle ; B 26 0 738 673 ; C 209 ; WX 713 ; N gradient ; B 36 -19 681 718 ; C 210 ; WX 790 ; N registerserif ; B 50 -17 740 673 ; C 211 ; WX 790 ; N copyrightserif ; B 51 -15 741 675 ; C 212 ; WX 890 ; N trademarkserif ; B 18 293 855 673 ; C 213 ; WX 823 ; N product ; B 25 -101 803 751 ; C 214 ; WX 549 ; N radical ; B 10 -38 515 917 ; C 215 ; WX 250 ; N dotmath ; B 69 210 169 310 ; C 216 ; WX 713 ; N logicalnot ; B 15 0 680 288 ; C 217 ; WX 603 ; N logicaland ; B 23 0 583 454 ; C 218 ; WX 603 ; N logicalor ; B 30 0 578 477 ; C 219 ; WX 1042 ; N arrowdblboth ; B 27 -20 1023 510 ; C 220 ; WX 987 ; N arrowdblleft ; B 30 -15 939 513 ; C 221 ; WX 603 ; N arrowdblup ; B 39 2 567 911 ; C 222 ; WX 987 ; N arrowdblright ; B 45 -20 954 508 ; C 223 ; WX 603 ; N arrowdbldown ; B 44 -19 572 890 ; C 224 ; WX 494 ; N lozenge ; B 18 0 466 745 ; C 225 ; WX 329 ; N angleleft ; B 25 -198 306 746 ; C 226 ; WX 790 ; N registersans ; B 50 -20 740 670 ; C 227 ; WX 790 ; N copyrightsans ; B 49 -15 739 675 ; C 228 ; WX 786 ; N trademarksans ; B 5 293 725 673 ; C 229 ; WX 713 ; N summation ; B 14 -108 695 752 ; C 230 ; WX 384 ; N parenlefttp ; B 24 -293 436 926 ; C 231 ; WX 384 ; N parenleftex ; B 24 -85 108 925 ; C 232 ; WX 384 ; N parenleftbt ; B 24 -293 436 926 ; C 233 ; WX 384 ; N bracketlefttp ; B 0 -80 349 926 ; C 234 ; WX 384 ; N bracketleftex ; B 0 -79 77 925 ; C 235 ; WX 384 ; N bracketleftbt ; B 0 -80 349 926 ; C 236 ; WX 494 ; N bracelefttp ; B 209 -85 445 925 ; C 237 ; WX 494 ; N braceleftmid ; B 20 -85 284 935 ; C 238 ; WX 494 ; N braceleftbt ; B 209 -75 445 935 ; C 239 ; WX 494 ; N braceex ; B 209 -85 284 935 ; C 241 ; WX 329 ; N angleright ; B 21 -198 302 746 ; C 242 ; WX 274 ; N integral ; B 2 -107 291 916 ; C 243 ; WX 686 ; N integraltp ; B 308 -88 675 920 ; C 244 ; WX 686 ; N integralex ; B 308 -88 378 975 ; C 245 ; WX 686 ; N integralbt ; B 11 -87 378 921 ; C 246 ; WX 384 ; N parenrighttp ; B 54 -293 466 926 ; C 247 ; WX 384 ; N parenrightex ; B 382 -85 466 925 ; C 248 ; WX 384 ; N parenrightbt ; B 54 -293 466 926 ; C 249 ; WX 384 ; N bracketrighttp ; B 22 -80 371 926 ; C 250 ; WX 384 ; N bracketrightex ; B 294 -79 371 925 ; C 251 ; WX 384 ; N bracketrightbt ; B 22 -80 371 926 ; C 252 ; WX 494 ; N bracerighttp ; B 48 -85 284 925 ; C 253 ; WX 494 ; N bracerightmid ; B 209 -85 473 935 ; C 254 ; WX 494 ; N bracerightbt ; B 48 -75 284 935 ; C -1 ; WX 790 ; N apple ; B 56 -3 733 808 ; EndCharMetrics EndFontMetrics pmw-5.22/fontmetrics/Palatino-Bold.afm0000644000222100022210000010517614541067540016022 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:25:14 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43075 Comment VMusage 51499 66524 FontName Palatino-Bold FullName Palatino Bold FamilyName Palatino Weight Bold ItalicAngle 0 IsFixedPitch false FontBBox -152 -266 1000 924 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 681 XHeight 471 Ascender 726 Descender -281 StdHW 55 StdVW 122 StartCharMetrics 359 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 278 ; N exclam ; B 63 -12 219 688 ; C 34 ; WX 402 ; N quotedbl ; B 22 376 380 695 ; C 35 ; WX 500 ; N numbersign ; B 4 0 496 673 ; C 36 ; WX 500 ; N dollar ; B 28 -114 472 721 ; C 37 ; WX 889 ; N percent ; B 61 -9 828 714 ; C 38 ; WX 833 ; N ampersand ; B 52 -17 813 684 ; C 39 ; WX 278 ; N quoteright ; B 29 405 249 695 ; C 40 ; WX 333 ; N parenleft ; B 65 -104 305 723 ; C 41 ; WX 333 ; N parenright ; B 28 -104 268 723 ; C 42 ; WX 444 ; N asterisk ; B 44 332 399 695 ; C 43 ; WX 606 ; N plus ; B 51 0 555 505 ; C 44 ; WX 250 ; N comma ; B -6 -166 227 141 ; C 45 ; WX 333 ; N hyphen ; B 16 195 317 305 ; C 46 ; WX 250 ; N period ; B 47 -12 203 144 ; C 47 ; WX 296 ; N slash ; B -9 -17 305 720 ; C 48 ; WX 500 ; N zero ; B 33 -17 468 660 ; C 49 ; WX 500 ; N one ; B 35 -3 455 670 ; C 50 ; WX 500 ; N two ; B 25 -3 472 660 ; C 51 ; WX 500 ; N three ; B 22 -17 458 660 ; C 52 ; WX 500 ; N four ; B 12 -3 473 672 ; C 53 ; WX 500 ; N five ; B 42 -17 472 656 ; C 54 ; WX 500 ; N six ; B 37 -17 469 660 ; C 55 ; WX 500 ; N seven ; B 46 -3 493 656 ; C 56 ; WX 500 ; N eight ; B 34 -17 467 660 ; C 57 ; WX 500 ; N nine ; B 31 -17 463 660 ; C 58 ; WX 250 ; N colon ; B 47 -12 203 454 ; C 59 ; WX 250 ; N semicolon ; B -6 -166 227 454 ; C 60 ; WX 606 ; N less ; B 49 -15 558 519 ; C 61 ; WX 606 ; N equal ; B 51 114 555 396 ; C 62 ; WX 606 ; N greater ; B 49 -15 558 519 ; C 63 ; WX 444 ; N question ; B 43 -12 411 687 ; C 64 ; WX 747 ; N at ; B 42 -12 704 681 ; C 65 ; WX 778 ; N A ; B 24 -3 757 686 ; C 66 ; WX 667 ; N B ; B 39 -3 611 681 ; C 67 ; WX 722 ; N C ; B 44 -17 695 695 ; C 68 ; WX 833 ; N D ; B 35 -3 786 681 ; C 69 ; WX 611 ; N E ; B 39 -4 577 681 ; C 70 ; WX 556 ; N F ; B 28 -3 539 681 ; C 71 ; WX 833 ; N G ; B 47 -17 776 695 ; C 72 ; WX 833 ; N H ; B 36 -3 796 681 ; C 73 ; WX 389 ; N I ; B 39 -3 350 681 ; C 74 ; WX 389 ; N J ; B -11 -213 350 681 ; C 75 ; WX 778 ; N K ; B 39 -3 763 681 ; C 76 ; WX 611 ; N L ; B 39 -4 577 681 ; C 77 ; WX 1000 ; N M ; B 32 -10 968 681 ; C 78 ; WX 833 ; N N ; B 35 -16 798 681 ; C 79 ; WX 833 ; N O ; B 47 -17 787 695 ; C 80 ; WX 611 ; N P ; B 39 -3 594 681 ; C 81 ; WX 833 ; N Q ; B 47 -184 787 695 ; C 82 ; WX 722 ; N R ; B 39 -3 708 681 ; C 83 ; WX 611 ; N S ; B 57 -17 559 695 ; C 84 ; WX 667 ; N T ; B 17 -3 650 681 ; C 85 ; WX 778 ; N U ; B 26 -17 760 681 ; C 86 ; WX 778 ; N V ; B 20 -3 763 681 ; C 87 ; WX 1000 ; N W ; B 17 -3 988 686 ; C 88 ; WX 667 ; N X ; B 17 -3 650 695 ; C 89 ; WX 667 ; N Y ; B 15 -3 660 695 ; C 90 ; WX 667 ; N Z ; B 24 -3 627 681 ; C 91 ; WX 333 ; N bracketleft ; B 73 -104 291 720 ; C 92 ; WX 606 ; N backslash ; B 72 0 534 720 ; C 93 ; WX 333 ; N bracketright ; B 42 -104 260 720 ; C 94 ; WX 606 ; N asciicircum ; B 52 275 554 678 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 278 ; N quoteleft ; B 29 405 249 695 ; C 97 ; WX 500 ; N a ; B 40 -17 478 471 ; C 98 ; WX 611 ; N b ; B 10 -17 556 720 ; C 99 ; WX 444 ; N c ; B 37 -17 414 471 ; C 100 ; WX 611 ; N d ; B 42 -17 577 720 ; C 101 ; WX 500 ; N e ; B 42 -17 461 471 ; C 102 ; WX 389 ; N f ; B 34 -3 381 720 ; L i fi ; L l fl ; C 103 ; WX 556 ; N g ; B 26 -266 535 471 ; C 104 ; WX 611 ; N h ; B 24 -3 587 720 ; C 105 ; WX 333 ; N i ; B 34 -3 298 706 ; C 106 ; WX 333 ; N j ; B 3 -266 241 706 ; C 107 ; WX 611 ; N k ; B 21 -3 597 720 ; C 108 ; WX 333 ; N l ; B 24 -3 296 720 ; C 109 ; WX 889 ; N m ; B 24 -3 864 471 ; C 110 ; WX 611 ; N n ; B 24 -3 587 471 ; C 111 ; WX 556 ; N o ; B 40 -17 517 471 ; C 112 ; WX 611 ; N p ; B 29 -258 567 471 ; C 113 ; WX 611 ; N q ; B 52 -258 589 471 ; C 114 ; WX 389 ; N r ; B 30 -3 389 471 ; C 115 ; WX 444 ; N s ; B 39 -17 405 471 ; C 116 ; WX 333 ; N t ; B 22 -17 324 632 ; C 117 ; WX 611 ; N u ; B 25 -17 583 471 ; C 118 ; WX 556 ; N v ; B 11 -3 545 459 ; C 119 ; WX 833 ; N w ; B 13 -3 820 471 ; C 120 ; WX 500 ; N x ; B 20 -3 483 471 ; C 121 ; WX 556 ; N y ; B 10 -266 546 459 ; C 122 ; WX 500 ; N z ; B 16 -3 464 459 ; C 123 ; WX 310 ; N braceleft ; B 5 -117 288 725 ; C 124 ; WX 606 ; N bar ; B 260 -250 346 750 ; C 125 ; WX 310 ; N braceright ; B 22 -117 305 725 ; C 126 ; WX 606 ; N asciitilde ; B 51 155 555 342 ; C 160 ; WX 250 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 278 ; N exclamdown ; B 59 -227 215 471 ; C 162 ; WX 500 ; N cent ; B 73 -106 450 554 ; C 163 ; WX 500 ; N sterling ; B -2 -19 501 676 ; C 164 ; WX 167 ; N fraction ; B -152 0 320 660 ; C 165 ; WX 500 ; N yen ; B 17 -3 483 695 ; C 166 ; WX 500 ; N florin ; B 11 -242 490 703 ; C 167 ; WX 500 ; N section ; B 30 -217 471 695 ; C 168 ; WX 500 ; N currency ; B 32 96 468 533 ; C 169 ; WX 227 ; N quotesingle ; B 45 376 181 695 ; C 170 ; WX 500 ; N quotedblleft ; B 34 405 466 695 ; C 171 ; WX 500 ; N guillemotleft ; B 36 44 463 438 ; C 172 ; WX 389 ; N guilsinglleft ; B 82 44 307 438 ; C 173 ; WX 389 ; N guilsinglright ; B 82 44 307 438 ; C 174 ; WX 611 ; N fi ; B 10 -3 595 720 ; C 175 ; WX 611 ; N fl ; B 17 -3 593 720 ; C 177 ; WX 500 ; N endash ; B 0 208 500 291 ; C 178 ; WX 500 ; N dagger ; B 29 -6 472 682 ; C 179 ; WX 500 ; N daggerdbl ; B 32 -245 468 682 ; C 180 ; WX 250 ; N periodcentered ; B 47 179 203 335 ; C 182 ; WX 641 ; N paragraph ; B 19 -161 599 683 ; C 183 ; WX 606 ; N bullet ; B 131 172 475 516 ; C 184 ; WX 333 ; N quotesinglbase ; B 56 -160 276 130 ; C 185 ; WX 500 ; N quotedblbase ; B 34 -160 466 130 ; C 186 ; WX 500 ; N quotedblright ; B 34 405 466 695 ; C 187 ; WX 500 ; N guillemotright ; B 37 44 464 438 ; C 188 ; WX 1000 ; N ellipsis ; B 89 -12 911 144 ; C 189 ; WX 1000 ; N perthousand ; B 33 -9 982 724 ; C 191 ; WX 444 ; N questiondown ; B 33 -231 401 471 ; C 193 ; WX 333 ; N grave ; B 18 506 256 691 ; C 194 ; WX 333 ; N acute ; B 78 506 316 691 ; C 195 ; WX 333 ; N circumflex ; B -2 506 335 681 ; C 196 ; WX 333 ; N tilde ; B -16 535 349 661 ; C 197 ; WX 333 ; N macron ; B 1 538 332 609 ; C 198 ; WX 333 ; N breve ; B 15 506 318 669 ; C 199 ; WX 333 ; N dotaccent ; B 92 556 242 706 ; C 200 ; WX 333 ; N dieresis ; B -8 556 341 690 ; C 202 ; WX 333 ; N ring ; B 67 500 267 700 ; C 203 ; WX 333 ; N cedilla ; B 73 -225 300 -7 ; C 205 ; WX 333 ; N hungarumlaut ; B -56 506 390 691 ; C 206 ; WX 333 ; N ogonek ; B 49 -225 287 -20 ; C 207 ; WX 333 ; N caron ; B -2 510 335 685 ; C 208 ; WX 1000 ; N emdash ; B 0 208 1000 291 ; C 225 ; WX 1000 ; N AE ; B 12 -4 954 681 ; C 227 ; WX 438 ; N ordfeminine ; B 77 367 361 660 ; C 232 ; WX 611 ; N Lslash ; B 16 -4 577 681 ; C 233 ; WX 833 ; N Oslash ; B 32 -20 808 698 ; C 234 ; WX 1000 ; N OE ; B 43 -17 985 695 ; C 235 ; WX 488 ; N ordmasculine ; B 89 367 399 660 ; C 241 ; WX 778 ; N ae ; B 46 -17 731 471 ; C 245 ; WX 333 ; N dotlessi ; B 34 -3 298 471 ; C 248 ; WX 333 ; N lslash ; B -4 -3 334 720 ; C 249 ; WX 556 ; N oslash ; B 23 -18 534 471 ; C 250 ; WX 833 ; N oe ; B 48 -17 799 471 ; C 251 ; WX 611 ; N germandbls ; B 30 -17 565 720 ; C -1 ; WX 389 ; N Idieresis ; B 20 -3 369 895 ; C -1 ; WX 500 ; N eacute ; B 42 -17 461 711 ; C -1 ; WX 500 ; N abreve ; B 40 -17 478 689 ; C -1 ; WX 611 ; N uhungarumlaut ; B 25 -17 583 711 ; C -1 ; WX 500 ; N ecaron ; B 42 -17 461 725 ; C -1 ; WX 667 ; N Ydieresis ; B 15 -3 660 895 ; C -1 ; WX 606 ; N divide ; B 51 0 555 510 ; C -1 ; WX 667 ; N Yacute ; B 15 -3 660 915 ; C -1 ; WX 778 ; N Acircumflex ; B 24 -3 757 905 ; C -1 ; WX 500 ; N aacute ; B 40 -17 478 711 ; C -1 ; WX 778 ; N Ucircumflex ; B 26 -17 760 905 ; C -1 ; WX 556 ; N yacute ; B 10 -266 546 711 ; C -1 ; WX 444 ; N scommaaccent ; B 39 -266 405 471 ; C -1 ; WX 500 ; N ecircumflex ; B 42 -17 461 721 ; C -1 ; WX 778 ; N Uring ; B 26 -17 760 924 ; C -1 ; WX 778 ; N Udieresis ; B 26 -17 760 895 ; C -1 ; WX 500 ; N aogonek ; B 40 -225 478 471 ; C -1 ; WX 778 ; N Uacute ; B 26 -17 760 915 ; C -1 ; WX 611 ; N uogonek ; B 25 -201 642 471 ; C -1 ; WX 611 ; N Edieresis ; B 39 -4 577 895 ; C -1 ; WX 833 ; N Dcroat ; B 10 -3 786 681 ; C -1 ; WX 250 ; N commaaccent ; B 48 -266 203 -50 ; C -1 ; WX 747 ; N copyright ; B 26 -17 720 695 ; C -1 ; WX 611 ; N Emacron ; B 39 -4 577 833 ; C -1 ; WX 444 ; N ccaron ; B 37 -17 421 705 ; C -1 ; WX 500 ; N aring ; B 40 -17 478 720 ; C -1 ; WX 833 ; N Ncommaaccent ; B 35 -266 798 681 ; C -1 ; WX 333 ; N lacute ; B 24 -3 336 924 ; C -1 ; WX 500 ; N agrave ; B 40 -17 478 711 ; C -1 ; WX 667 ; N Tcommaaccent ; B 17 -266 650 681 ; C -1 ; WX 722 ; N Cacute ; B 44 -17 695 915 ; C -1 ; WX 500 ; N atilde ; B 40 -17 478 693 ; C -1 ; WX 611 ; N Edotaccent ; B 39 -4 577 910 ; C -1 ; WX 444 ; N scaron ; B 39 -17 405 705 ; C -1 ; WX 444 ; N scedilla ; B 39 -225 405 471 ; C -1 ; WX 333 ; N iacute ; B 34 -3 316 711 ; C -1 ; WX 471 ; N lozenge ; B 7 0 465 732 ; C -1 ; WX 722 ; N Rcaron ; B 39 -3 708 909 ; C -1 ; WX 833 ; N Gcommaaccent ; B 47 -266 776 695 ; C -1 ; WX 611 ; N ucircumflex ; B 25 -17 583 701 ; C -1 ; WX 500 ; N acircumflex ; B 40 -17 478 701 ; C -1 ; WX 778 ; N Amacron ; B 24 -3 757 833 ; C -1 ; WX 389 ; N rcaron ; B 30 -3 389 705 ; C -1 ; WX 444 ; N ccedilla ; B 37 -225 414 471 ; C -1 ; WX 667 ; N Zdotaccent ; B 24 -3 627 910 ; C -1 ; WX 611 ; N Thorn ; B 39 -3 574 681 ; C -1 ; WX 833 ; N Omacron ; B 47 -17 787 833 ; C -1 ; WX 722 ; N Racute ; B 39 -3 708 915 ; C -1 ; WX 611 ; N Sacute ; B 57 -17 559 915 ; C -1 ; WX 675 ; N dcaron ; B 42 -17 698 724 ; C -1 ; WX 778 ; N Umacron ; B 26 -17 760 833 ; C -1 ; WX 611 ; N uring ; B 25 -17 583 720 ; C -1 ; WX 300 ; N threesuperior ; B 9 261 292 667 ; C -1 ; WX 833 ; N Ograve ; B 47 -17 787 915 ; C -1 ; WX 778 ; N Agrave ; B 24 -3 757 915 ; C -1 ; WX 778 ; N Abreve ; B 24 -3 757 893 ; C -1 ; WX 606 ; N multiply ; B 72 21 534 483 ; C -1 ; WX 611 ; N uacute ; B 25 -17 583 711 ; C -1 ; WX 667 ; N Tcaron ; B 17 -3 650 909 ; C -1 ; WX 476 ; N partialdiff ; B 9 -38 467 718 ; C -1 ; WX 556 ; N ydieresis ; B 10 -266 546 710 ; C -1 ; WX 833 ; N Nacute ; B 35 -16 798 915 ; C -1 ; WX 333 ; N icircumflex ; B -2 -3 335 701 ; C -1 ; WX 611 ; N Ecircumflex ; B 39 -4 577 905 ; C -1 ; WX 500 ; N adieresis ; B 40 -17 478 691 ; C -1 ; WX 500 ; N edieresis ; B 42 -17 461 691 ; C -1 ; WX 444 ; N cacute ; B 37 -17 414 731 ; C -1 ; WX 611 ; N nacute ; B 24 -3 587 711 ; C -1 ; WX 611 ; N umacron ; B 25 -17 583 609 ; C -1 ; WX 833 ; N Ncaron ; B 35 -16 798 909 ; C -1 ; WX 389 ; N Iacute ; B 39 -3 350 915 ; C -1 ; WX 606 ; N plusminus ; B 51 0 555 505 ; C -1 ; WX 606 ; N brokenbar ; B 260 -175 346 675 ; C -1 ; WX 747 ; N registered ; B 26 -17 720 695 ; C -1 ; WX 833 ; N Gbreve ; B 47 -17 776 893 ; C -1 ; WX 389 ; N Idotaccent ; B 39 -3 350 910 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 611 ; N Egrave ; B 39 -4 577 915 ; C -1 ; WX 389 ; N racute ; B 30 -3 404 711 ; C -1 ; WX 556 ; N omacron ; B 40 -17 517 609 ; C -1 ; WX 667 ; N Zacute ; B 24 -3 627 915 ; C -1 ; WX 667 ; N Zcaron ; B 24 -3 627 909 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 682 ; C -1 ; WX 833 ; N Eth ; B 10 -3 786 681 ; C -1 ; WX 722 ; N Ccedilla ; B 44 -225 695 695 ; C -1 ; WX 333 ; N lcommaaccent ; B 24 -266 296 720 ; C -1 ; WX 403 ; N tcaron ; B 22 -17 430 741 ; C -1 ; WX 500 ; N eogonek ; B 42 -215 461 471 ; C -1 ; WX 778 ; N Uogonek ; B 26 -225 760 681 ; C -1 ; WX 778 ; N Aacute ; B 24 -3 757 915 ; C -1 ; WX 778 ; N Adieresis ; B 24 -3 757 895 ; C -1 ; WX 500 ; N egrave ; B 42 -17 461 711 ; C -1 ; WX 500 ; N zacute ; B 16 -3 464 711 ; C -1 ; WX 333 ; N iogonek ; B 34 -225 300 706 ; C -1 ; WX 833 ; N Oacute ; B 47 -17 787 915 ; C -1 ; WX 556 ; N oacute ; B 40 -17 517 711 ; C -1 ; WX 500 ; N amacron ; B 40 -17 478 609 ; C -1 ; WX 444 ; N sacute ; B 39 -17 405 711 ; C -1 ; WX 333 ; N idieresis ; B -8 -3 341 710 ; C -1 ; WX 833 ; N Ocircumflex ; B 47 -17 787 905 ; C -1 ; WX 778 ; N Ugrave ; B 26 -17 760 915 ; C -1 ; WX 614 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 611 ; N thorn ; B 17 -258 563 720 ; C -1 ; WX 300 ; N twosuperior ; B 5 261 295 660 ; C -1 ; WX 833 ; N Odieresis ; B 47 -17 787 895 ; C -1 ; WX 611 ; N mu ; B 25 -225 583 471 ; C -1 ; WX 333 ; N igrave ; B 18 -3 298 711 ; C -1 ; WX 556 ; N ohungarumlaut ; B 40 -17 562 711 ; C -1 ; WX 611 ; N Eogonek ; B 39 -225 581 681 ; C -1 ; WX 611 ; N dcroat ; B 42 -17 607 720 ; C -1 ; WX 750 ; N threequarters ; B 15 -2 735 667 ; C -1 ; WX 611 ; N Scedilla ; B 57 -225 559 695 ; C -1 ; WX 393 ; N lcaron ; B 24 -3 415 724 ; C -1 ; WX 778 ; N Kcommaaccent ; B 39 -266 763 681 ; C -1 ; WX 611 ; N Lacute ; B 39 -4 577 915 ; C -1 ; WX 998 ; N trademark ; B 38 274 961 678 ; C -1 ; WX 500 ; N edotaccent ; B 42 -17 461 707 ; C -1 ; WX 389 ; N Igrave ; B 39 -3 350 915 ; C -1 ; WX 389 ; N Imacron ; B 29 -3 360 833 ; C -1 ; WX 611 ; N Lcaron ; B 39 -4 577 695 ; C -1 ; WX 750 ; N onehalf ; B 9 -2 745 665 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 682 ; C -1 ; WX 556 ; N ocircumflex ; B 40 -17 517 701 ; C -1 ; WX 611 ; N ntilde ; B 24 -3 587 693 ; C -1 ; WX 778 ; N Uhungarumlaut ; B 26 -17 760 915 ; C -1 ; WX 611 ; N Eacute ; B 39 -4 577 915 ; C -1 ; WX 500 ; N emacron ; B 42 -17 461 629 ; C -1 ; WX 556 ; N gbreve ; B 26 -266 535 689 ; C -1 ; WX 750 ; N onequarter ; B 19 -2 735 665 ; C -1 ; WX 611 ; N Scaron ; B 57 -17 559 909 ; C -1 ; WX 611 ; N Scommaaccent ; B 57 -266 559 695 ; C -1 ; WX 833 ; N Ohungarumlaut ; B 47 -17 787 915 ; C -1 ; WX 400 ; N degree ; B 50 360 350 660 ; C -1 ; WX 556 ; N ograve ; B 40 -17 517 711 ; C -1 ; WX 722 ; N Ccaron ; B 44 -17 695 909 ; C -1 ; WX 611 ; N ugrave ; B 25 -17 583 711 ; C -1 ; WX 453 ; N radical ; B -9 -91 463 765 ; C -1 ; WX 833 ; N Dcaron ; B 35 -3 786 909 ; C -1 ; WX 389 ; N rcommaaccent ; B 30 -266 389 471 ; C -1 ; WX 833 ; N Ntilde ; B 35 -16 798 885 ; C -1 ; WX 556 ; N otilde ; B 40 -17 517 693 ; C -1 ; WX 722 ; N Rcommaaccent ; B 39 -266 708 681 ; C -1 ; WX 611 ; N Lcommaaccent ; B 39 -266 577 681 ; C -1 ; WX 778 ; N Atilde ; B 24 -3 757 885 ; C -1 ; WX 778 ; N Aogonek ; B 24 -225 767 686 ; C -1 ; WX 778 ; N Aring ; B 24 -3 757 924 ; C -1 ; WX 833 ; N Otilde ; B 47 -17 787 885 ; C -1 ; WX 500 ; N zdotaccent ; B 16 -3 464 707 ; C -1 ; WX 611 ; N Ecaron ; B 39 -4 577 909 ; C -1 ; WX 389 ; N Iogonek ; B 39 -225 352 681 ; C -1 ; WX 611 ; N kcommaaccent ; B 21 -266 597 720 ; C -1 ; WX 606 ; N minus ; B 51 212 555 298 ; C -1 ; WX 389 ; N Icircumflex ; B 26 -3 363 905 ; C -1 ; WX 611 ; N ncaron ; B 24 -3 587 705 ; C -1 ; WX 333 ; N tcommaaccent ; B 22 -266 324 632 ; C -1 ; WX 606 ; N logicalnot ; B 51 114 555 396 ; C -1 ; WX 556 ; N odieresis ; B 40 -17 517 710 ; C -1 ; WX 611 ; N udieresis ; B 25 -17 583 710 ; C -1 ; WX 549 ; N notequal ; B 12 -40 537 554 ; C -1 ; WX 556 ; N gcommaaccent ; B 26 -266 535 740 ; C -1 ; WX 556 ; N eth ; B 40 -17 517 720 ; C -1 ; WX 500 ; N zcaron ; B 16 -3 464 705 ; C -1 ; WX 611 ; N ncommaaccent ; B 24 -266 587 471 ; C -1 ; WX 300 ; N onesuperior ; B 14 261 287 665 ; C -1 ; WX 333 ; N imacron ; B 34 -3 298 609 ; C -1 ; WX 500 ; N Euro ; B 1 -17 470 695 ; C -1 ; WX 722 ; N Ccircumflex ; B 44 -17 695 956 ; C -1 ; WX 444 ; N ccircumflex ; B 37 -17 414 746 ; C -1 ; WX 722 ; N Cdotaccent ; B 44 -17 695 915 ; C -1 ; WX 444 ; N cdotaccent ; B 37 -17 414 705 ; C -1 ; WX 611 ; N Ebreve ; B 39 -4 577 944 ; C -1 ; WX 500 ; N ebreve ; B 42 -17 461 734 ; C -1 ; WX 833 ; N Gcircumflex ; B 47 -17 776 956 ; C -1 ; WX 556 ; N gcircumflex ; B 26 -266 535 746 ; C -1 ; WX 833 ; N Gdotaccent ; B 47 -17 776 915 ; C -1 ; WX 556 ; N gdotaccent ; B 26 -266 535 705 ; C -1 ; WX 833 ; N Hcircumflex ; B 36 -3 796 956 ; C -1 ; WX 611 ; N hcircumflex ; B 24 -3 587 995 ; C -1 ; WX 833 ; N Hbar ; B 36 -3 796 681 ; C -1 ; WX 611 ; N hbar ; B 22 -3 587 720 ; C -1 ; WX 389 ; N Itilde ; B 12 -3 377 907 ; C -1 ; WX 333 ; N itilde ; B -16 -3 348 697 ; C -1 ; WX 389 ; N Ibreve ; B 39 -3 350 944 ; C -1 ; WX 333 ; N ibreve ; B 14 -3 318 734 ; C -1 ; WX 730 ; N IJ ; B 39 -213 705 681 ; C -1 ; WX 632 ; N ij ; B 34 -266 541 706 ; C -1 ; WX 389 ; N Jcircumflex ; B -11 -213 350 956 ; C -1 ; WX 333 ; N jcircumflex ; B -2 -266 335 681 ; C -1 ; WX 611 ; N kgreenlandic ; B 21 -3 597 471 ; C -1 ; WX 611 ; N Ldot ; B 39 -4 577 681 ; C -1 ; WX 494 ; N ldot ; B 24 -3 442 720 ; C -1 ; WX 611 ; N napostrophe ; B 24 -3 587 759 ; C -1 ; WX 833 ; N Obreve ; B 47 -17 787 944 ; C -1 ; WX 556 ; N obreve ; B 40 -17 517 734 ; C -1 ; WX 611 ; N Scircumflex ; B 57 -17 559 956 ; C -1 ; WX 444 ; N scircumflex ; B 39 -17 405 746 ; C -1 ; WX 667 ; N Tbar ; B 17 -3 650 681 ; C -1 ; WX 333 ; N tbar ; B 18 -17 324 632 ; C -1 ; WX 667 ; N Tcedilla ; B 17 -266 650 681 ; C -1 ; WX 333 ; N tcedilla ; B 22 -266 324 632 ; C -1 ; WX 778 ; N Utilde ; B 26 -17 760 907 ; C -1 ; WX 611 ; N utilde ; B 25 -17 583 697 ; C -1 ; WX 778 ; N Ubreve ; B 26 -17 760 944 ; C -1 ; WX 611 ; N ubreve ; B 25 -17 583 734 ; C -1 ; WX 1000 ; N Wcircumflex ; B 17 -3 988 956 ; C -1 ; WX 833 ; N wcircumflex ; B 13 -3 820 746 ; C -1 ; WX 667 ; N Ycircumflex ; B 15 -3 660 956 ; C -1 ; WX 556 ; N ycircumflex ; B 10 -266 546 746 ; C -1 ; WX 389 ; N longs ; B 34 -3 381 720 ; C -1 ; WX 648 ; N infinity ; B 9 40 633 432 ; EndCharMetrics StartKernData StartKernPairs 828 KPX A T -92 KPX A Tcaron -92 KPX A Tcommaaccent -92 KPX A V -129 KPX A W -90 KPX A Y -111 KPX A Yacute -111 KPX A Ydieresis -111 KPX A quoteright -92 KPX A space -18 KPX A v -70 KPX A w -70 KPX A y -70 KPX A yacute -70 KPX A ydieresis -70 KPX Aacute T -92 KPX Aacute Tcaron -92 KPX Aacute Tcommaaccent -92 KPX Aacute V -129 KPX Aacute W -90 KPX Aacute Y -111 KPX Aacute Yacute -111 KPX Aacute Ydieresis -111 KPX Aacute quoteright -92 KPX Aacute space -18 KPX Aacute v -70 KPX Aacute w -70 KPX Aacute y -70 KPX Aacute yacute -70 KPX Aacute ydieresis -70 KPX Abreve T -92 KPX Abreve Tcaron -92 KPX Abreve Tcommaaccent -92 KPX Abreve V -129 KPX Abreve W -90 KPX Abreve Y -111 KPX Abreve Yacute -111 KPX Abreve Ydieresis -111 KPX Abreve quoteright -92 KPX Abreve space -18 KPX Abreve v -70 KPX Abreve w -70 KPX Abreve y -70 KPX Abreve yacute -70 KPX Abreve ydieresis -70 KPX Acircumflex T -92 KPX Acircumflex Tcaron -92 KPX Acircumflex Tcommaaccent -92 KPX Acircumflex V -129 KPX Acircumflex W -90 KPX Acircumflex Y -111 KPX Acircumflex Yacute -111 KPX Acircumflex Ydieresis -111 KPX Acircumflex quoteright -92 KPX Acircumflex space -18 KPX Acircumflex v -70 KPX Acircumflex w -70 KPX Acircumflex y -70 KPX Acircumflex yacute -70 KPX Acircumflex ydieresis -70 KPX Adieresis T -92 KPX Adieresis Tcaron -92 KPX Adieresis Tcommaaccent -92 KPX Adieresis V -129 KPX Adieresis W -90 KPX Adieresis Y -111 KPX Adieresis Yacute -111 KPX Adieresis Ydieresis -111 KPX Adieresis quoteright -92 KPX Adieresis space -18 KPX Adieresis v -70 KPX Adieresis w -70 KPX Adieresis y -70 KPX Adieresis yacute -70 KPX Adieresis ydieresis -70 KPX Agrave T -92 KPX Agrave Tcaron -92 KPX Agrave Tcommaaccent -92 KPX Agrave V -129 KPX Agrave W -90 KPX Agrave Y -111 KPX Agrave Yacute -111 KPX Agrave Ydieresis -111 KPX Agrave quoteright -92 KPX Agrave space -18 KPX Agrave v -70 KPX Agrave w -70 KPX Agrave y -70 KPX Agrave yacute -70 KPX Agrave ydieresis -70 KPX Amacron T -92 KPX Amacron Tcaron -92 KPX Amacron Tcommaaccent -92 KPX Amacron V -129 KPX Amacron W -90 KPX Amacron Y -111 KPX Amacron Yacute -111 KPX Amacron Ydieresis -111 KPX Amacron quoteright -92 KPX Amacron space -18 KPX Amacron v -70 KPX Amacron w -70 KPX Amacron y -70 KPX Amacron yacute -70 KPX Amacron ydieresis -70 KPX Aogonek T -92 KPX Aogonek Tcaron -92 KPX Aogonek Tcommaaccent -92 KPX Aogonek V -129 KPX Aogonek W -90 KPX Aogonek Y -111 KPX Aogonek Yacute -111 KPX Aogonek Ydieresis -111 KPX Aogonek quoteright -92 KPX Aogonek space -18 KPX Aogonek v -70 KPX Aogonek w -70 KPX Aogonek y -70 KPX Aogonek yacute -70 KPX Aogonek ydieresis -70 KPX Aring T -92 KPX Aring Tcaron -92 KPX Aring Tcommaaccent -92 KPX Aring V -129 KPX Aring W -90 KPX Aring Y -111 KPX Aring Yacute -111 KPX Aring Ydieresis -111 KPX Aring quoteright -92 KPX Aring space -18 KPX Aring v -70 KPX Aring w -70 KPX Aring y -70 KPX Aring yacute -70 KPX Aring ydieresis -70 KPX Atilde T -92 KPX Atilde Tcaron -92 KPX Atilde Tcommaaccent -92 KPX Atilde V -129 KPX Atilde W -90 KPX Atilde Y -111 KPX Atilde Yacute -111 KPX Atilde Ydieresis -111 KPX Atilde quoteright -92 KPX Atilde space -18 KPX Atilde v -70 KPX Atilde w -70 KPX Atilde y -70 KPX Atilde yacute -70 KPX Atilde ydieresis -70 KPX F A -55 KPX F Aacute -55 KPX F Abreve -55 KPX F Acircumflex -55 KPX F Adieresis -55 KPX F Agrave -55 KPX F Amacron -55 KPX F Aogonek -55 KPX F Aring -55 KPX F Atilde -55 KPX F comma -111 KPX F period -111 KPX L T -74 KPX L Tcaron -74 KPX L Tcommaaccent -74 KPX L V -92 KPX L W -92 KPX L Y -92 KPX L Yacute -92 KPX L Ydieresis -92 KPX L quoteright -74 KPX L space -18 KPX L y -74 KPX L yacute -74 KPX L ydieresis -74 KPX Lacute T -74 KPX Lacute Tcaron -74 KPX Lacute Tcommaaccent -74 KPX Lacute V -92 KPX Lacute W -92 KPX Lacute Y -92 KPX Lacute Yacute -92 KPX Lacute Ydieresis -92 KPX Lacute quoteright -74 KPX Lacute space -18 KPX Lacute y -74 KPX Lacute yacute -74 KPX Lacute ydieresis -74 KPX Lcaron quoteright -74 KPX Lcaron space -18 KPX Lcaron y -74 KPX Lcaron yacute -74 KPX Lcaron ydieresis -74 KPX Lcommaaccent T -74 KPX Lcommaaccent Tcaron -74 KPX Lcommaaccent Tcommaaccent -74 KPX Lcommaaccent V -92 KPX Lcommaaccent W -92 KPX Lcommaaccent Y -92 KPX Lcommaaccent Yacute -92 KPX Lcommaaccent Ydieresis -92 KPX Lcommaaccent quoteright -74 KPX Lcommaaccent space -18 KPX Lcommaaccent y -74 KPX Lcommaaccent yacute -74 KPX Lcommaaccent ydieresis -74 KPX Lslash T -74 KPX Lslash Tcaron -74 KPX Lslash Tcommaaccent -74 KPX Lslash V -92 KPX Lslash W -92 KPX Lslash Y -92 KPX Lslash Yacute -92 KPX Lslash Ydieresis -92 KPX Lslash quoteright -74 KPX Lslash space -18 KPX Lslash y -74 KPX Lslash yacute -74 KPX Lslash ydieresis -74 KPX P A -74 KPX P Aacute -74 KPX P Abreve -74 KPX P Acircumflex -74 KPX P Adieresis -74 KPX P Agrave -74 KPX P Amacron -74 KPX P Aogonek -74 KPX P Aring -74 KPX P Atilde -74 KPX P comma -129 KPX P period -129 KPX R T -55 KPX R Tcaron -55 KPX R Tcommaaccent -55 KPX R V -74 KPX R W -37 KPX R Y -55 KPX R Yacute -55 KPX R Ydieresis -55 KPX R y -30 KPX R yacute -30 KPX R ydieresis -30 KPX Racute T -55 KPX Racute Tcaron -55 KPX Racute Tcommaaccent -55 KPX Racute V -74 KPX Racute W -37 KPX Racute Y -55 KPX Racute Yacute -55 KPX Racute Ydieresis -55 KPX Racute y -30 KPX Racute yacute -30 KPX Racute ydieresis -30 KPX Rcaron T -55 KPX Rcaron Tcaron -55 KPX Rcaron Tcommaaccent -55 KPX Rcaron V -74 KPX Rcaron W -37 KPX Rcaron Y -55 KPX Rcaron Yacute -55 KPX Rcaron Ydieresis -55 KPX Rcaron y -30 KPX Rcaron yacute -30 KPX Rcaron ydieresis -30 KPX Rcommaaccent T -55 KPX Rcommaaccent Tcaron -55 KPX Rcommaaccent Tcommaaccent -55 KPX Rcommaaccent V -74 KPX Rcommaaccent W -37 KPX Rcommaaccent Y -55 KPX Rcommaaccent Yacute -55 KPX Rcommaaccent Ydieresis -55 KPX Rcommaaccent y -30 KPX Rcommaaccent yacute -30 KPX Rcommaaccent ydieresis -30 KPX T A -92 KPX T Aacute -92 KPX T Abreve -92 KPX T Acircumflex -92 KPX T Adieresis -92 KPX T Agrave -92 KPX T Amacron -92 KPX T Aogonek -92 KPX T Aring -92 KPX T Atilde -92 KPX T a -111 KPX T aacute -111 KPX T abreve -71 KPX T acircumflex -71 KPX T adieresis -71 KPX T agrave -71 KPX T amacron -71 KPX T aogonek -111 KPX T aring -111 KPX T atilde -111 KPX T c -129 KPX T cacute -129 KPX T ccaron -129 KPX T ccedilla -129 KPX T colon -74 KPX T comma -92 KPX T e -111 KPX T eacute -111 KPX T ecaron -111 KPX T ecircumflex -71 KPX T edieresis -71 KPX T edotaccent -111 KPX T egrave -71 KPX T emacron -71 KPX T eogonek -111 KPX T hyphen -92 KPX T i -55 KPX T iacute -55 KPX T iogonek -55 KPX T o -111 KPX T oacute -111 KPX T ocircumflex -111 KPX T odieresis -111 KPX T ograve -111 KPX T ohungarumlaut -111 KPX T omacron -111 KPX T oslash -111 KPX T otilde -111 KPX T period -92 KPX T r -111 KPX T racute -111 KPX T rcaron -71 KPX T rcommaaccent -111 KPX T s -111 KPX T sacute -111 KPX T scaron -71 KPX T scedilla -111 KPX T scommaaccent -111 KPX T semicolon -74 KPX T u -129 KPX T uacute -129 KPX T ucircumflex -129 KPX T udieresis -129 KPX T ugrave -129 KPX T uhungarumlaut -129 KPX T umacron -129 KPX T uogonek -129 KPX T uring -129 KPX T w -90 KPX T y -90 KPX T yacute -90 KPX T ydieresis -90 KPX Tcaron A -92 KPX Tcaron Aacute -92 KPX Tcaron Abreve -92 KPX Tcaron Acircumflex -92 KPX Tcaron Adieresis -92 KPX Tcaron Agrave -92 KPX Tcaron Amacron -92 KPX Tcaron Aogonek -92 KPX Tcaron Aring -92 KPX Tcaron Atilde -92 KPX Tcaron a -111 KPX Tcaron aacute -111 KPX Tcaron abreve -71 KPX Tcaron acircumflex -71 KPX Tcaron adieresis -71 KPX Tcaron agrave -71 KPX Tcaron amacron -71 KPX Tcaron aogonek -111 KPX Tcaron aring -111 KPX Tcaron atilde -111 KPX Tcaron c -129 KPX Tcaron cacute -129 KPX Tcaron ccaron -129 KPX Tcaron ccedilla -129 KPX Tcaron colon -74 KPX Tcaron comma -92 KPX Tcaron e -111 KPX Tcaron eacute -111 KPX Tcaron ecaron -111 KPX Tcaron ecircumflex -71 KPX Tcaron edieresis -71 KPX Tcaron edotaccent -111 KPX Tcaron egrave -71 KPX Tcaron emacron -71 KPX Tcaron eogonek -111 KPX Tcaron hyphen -92 KPX Tcaron i -55 KPX Tcaron iacute -55 KPX Tcaron iogonek -55 KPX Tcaron o -111 KPX Tcaron oacute -111 KPX Tcaron ocircumflex -111 KPX Tcaron odieresis -111 KPX Tcaron ograve -111 KPX Tcaron ohungarumlaut -111 KPX Tcaron omacron -111 KPX Tcaron oslash -111 KPX Tcaron otilde -111 KPX Tcaron period -92 KPX Tcaron r -111 KPX Tcaron racute -111 KPX Tcaron rcaron -71 KPX Tcaron rcommaaccent -111 KPX Tcaron s -111 KPX Tcaron sacute -111 KPX Tcaron scaron -71 KPX Tcaron scedilla -111 KPX Tcaron scommaaccent -111 KPX Tcaron semicolon -74 KPX Tcaron u -129 KPX Tcaron uacute -129 KPX Tcaron ucircumflex -129 KPX Tcaron udieresis -129 KPX Tcaron ugrave -129 KPX Tcaron uhungarumlaut -129 KPX Tcaron umacron -129 KPX Tcaron uogonek -129 KPX Tcaron uring -129 KPX Tcaron w -90 KPX Tcaron y -90 KPX Tcaron yacute -90 KPX Tcaron ydieresis -90 KPX Tcommaaccent A -92 KPX Tcommaaccent Aacute -92 KPX Tcommaaccent Abreve -92 KPX Tcommaaccent Acircumflex -92 KPX Tcommaaccent Adieresis -92 KPX Tcommaaccent Agrave -92 KPX Tcommaaccent Amacron -92 KPX Tcommaaccent Aogonek -92 KPX Tcommaaccent Aring -92 KPX Tcommaaccent Atilde -92 KPX Tcommaaccent a -111 KPX Tcommaaccent aacute -111 KPX Tcommaaccent abreve -71 KPX Tcommaaccent acircumflex -71 KPX Tcommaaccent adieresis -71 KPX Tcommaaccent agrave -71 KPX Tcommaaccent amacron -71 KPX Tcommaaccent aogonek -111 KPX Tcommaaccent aring -111 KPX Tcommaaccent atilde -111 KPX Tcommaaccent c -129 KPX Tcommaaccent cacute -129 KPX Tcommaaccent ccaron -129 KPX Tcommaaccent ccedilla -129 KPX Tcommaaccent colon -74 KPX Tcommaaccent comma -92 KPX Tcommaaccent e -111 KPX Tcommaaccent eacute -111 KPX Tcommaaccent ecaron -111 KPX Tcommaaccent ecircumflex -71 KPX Tcommaaccent edieresis -71 KPX Tcommaaccent edotaccent -111 KPX Tcommaaccent egrave -71 KPX Tcommaaccent emacron -71 KPX Tcommaaccent eogonek -111 KPX Tcommaaccent hyphen -92 KPX Tcommaaccent i -55 KPX Tcommaaccent iacute -55 KPX Tcommaaccent iogonek -55 KPX Tcommaaccent o -111 KPX Tcommaaccent oacute -111 KPX Tcommaaccent ocircumflex -111 KPX Tcommaaccent odieresis -111 KPX Tcommaaccent ograve -111 KPX Tcommaaccent ohungarumlaut -111 KPX Tcommaaccent omacron -111 KPX Tcommaaccent oslash -111 KPX Tcommaaccent otilde -111 KPX Tcommaaccent period -92 KPX Tcommaaccent r -111 KPX Tcommaaccent racute -111 KPX Tcommaaccent rcaron -71 KPX Tcommaaccent rcommaaccent -111 KPX Tcommaaccent s -111 KPX Tcommaaccent sacute -111 KPX Tcommaaccent scaron -71 KPX Tcommaaccent scedilla -111 KPX Tcommaaccent scommaaccent -111 KPX Tcommaaccent semicolon -74 KPX Tcommaaccent u -129 KPX Tcommaaccent uacute -129 KPX Tcommaaccent ucircumflex -129 KPX Tcommaaccent udieresis -129 KPX Tcommaaccent ugrave -129 KPX Tcommaaccent uhungarumlaut -129 KPX Tcommaaccent umacron -129 KPX Tcommaaccent uogonek -129 KPX Tcommaaccent uring -129 KPX Tcommaaccent w -90 KPX Tcommaaccent y -90 KPX Tcommaaccent yacute -90 KPX Tcommaaccent ydieresis -90 KPX V A -129 KPX V Aacute -129 KPX V Abreve -129 KPX V Acircumflex -129 KPX V Adieresis -129 KPX V Agrave -129 KPX V Amacron -129 KPX V Aogonek -129 KPX V Aring -129 KPX V Atilde -129 KPX V a -111 KPX V aacute -111 KPX V abreve -71 KPX V acircumflex -111 KPX V adieresis -111 KPX V agrave -111 KPX V amacron -111 KPX V aogonek -111 KPX V aring -111 KPX V atilde -71 KPX V colon -74 KPX V comma -129 KPX V e -111 KPX V eacute -111 KPX V ecaron -111 KPX V ecircumflex -111 KPX V edieresis -111 KPX V edotaccent -111 KPX V egrave -111 KPX V emacron -111 KPX V eogonek -111 KPX V hyphen -92 KPX V i -55 KPX V iacute -55 KPX V iogonek -55 KPX V o -111 KPX V oacute -111 KPX V ocircumflex -111 KPX V odieresis -111 KPX V ograve -111 KPX V ohungarumlaut -111 KPX V omacron -111 KPX V oslash -111 KPX V otilde -111 KPX V period -129 KPX V r -111 KPX V racute -111 KPX V rcaron -71 KPX V rcommaaccent -111 KPX V semicolon -74 KPX V u -92 KPX V uacute -92 KPX V ucircumflex -92 KPX V udieresis -92 KPX V ugrave -92 KPX V uhungarumlaut -92 KPX V umacron -92 KPX V uogonek -92 KPX V uring -92 KPX V y -90 KPX V yacute -90 KPX V ydieresis -90 KPX W A -90 KPX W Aacute -90 KPX W Abreve -90 KPX W Acircumflex -90 KPX W Adieresis -90 KPX W Agrave -90 KPX W Amacron -90 KPX W Aogonek -90 KPX W Aring -90 KPX W Atilde -90 KPX W a -74 KPX W aacute -74 KPX W abreve -74 KPX W acircumflex -74 KPX W adieresis -74 KPX W agrave -74 KPX W amacron -74 KPX W aogonek -74 KPX W aring -74 KPX W atilde -74 KPX W colon -37 KPX W comma -92 KPX W e -74 KPX W eacute -74 KPX W ecaron -74 KPX W ecircumflex -74 KPX W edieresis -74 KPX W edotaccent -74 KPX W egrave -74 KPX W emacron -74 KPX W eogonek -74 KPX W hyphen -37 KPX W i -37 KPX W iacute -37 KPX W iogonek -37 KPX W o -74 KPX W oacute -74 KPX W ocircumflex -74 KPX W odieresis -74 KPX W ograve -74 KPX W ohungarumlaut -74 KPX W omacron -74 KPX W oslash -74 KPX W otilde -74 KPX W period -37 KPX W r -74 KPX W racute -74 KPX W rcaron -74 KPX W rcommaaccent -74 KPX W semicolon -37 KPX W u -74 KPX W uacute -74 KPX W ucircumflex -74 KPX W udieresis -74 KPX W ugrave -74 KPX W uhungarumlaut -74 KPX W umacron -74 KPX W uogonek -74 KPX W uring -74 KPX W y -74 KPX W yacute -74 KPX W ydieresis -74 KPX Y A -55 KPX Y Aacute -55 KPX Y Abreve -55 KPX Y Acircumflex -55 KPX Y Adieresis -55 KPX Y Agrave -55 KPX Y Amacron -55 KPX Y Aogonek -55 KPX Y Aring -55 KPX Y Atilde -55 KPX Y a -74 KPX Y aacute -74 KPX Y abreve -74 KPX Y acircumflex -74 KPX Y adieresis -74 KPX Y agrave -74 KPX Y amacron -74 KPX Y aogonek -74 KPX Y aring -74 KPX Y atilde -74 KPX Y colon -55 KPX Y comma -74 KPX Y e -74 KPX Y eacute -74 KPX Y ecaron -74 KPX Y ecircumflex -74 KPX Y edieresis -74 KPX Y edotaccent -74 KPX Y egrave -74 KPX Y emacron -74 KPX Y eogonek -74 KPX Y hyphen -74 KPX Y i -55 KPX Y iacute -55 KPX Y iogonek -55 KPX Y o -74 KPX Y oacute -74 KPX Y ocircumflex -74 KPX Y odieresis -74 KPX Y ograve -74 KPX Y ohungarumlaut -74 KPX Y omacron -74 KPX Y oslash -74 KPX Y otilde -74 KPX Y p -74 KPX Y period -74 KPX Y q -92 KPX Y semicolon -55 KPX Y u -74 KPX Y uacute -74 KPX Y ucircumflex -74 KPX Y udieresis -74 KPX Y ugrave -74 KPX Y uhungarumlaut -74 KPX Y umacron -74 KPX Y uogonek -74 KPX Y uring -74 KPX Y v -74 KPX Yacute A -55 KPX Yacute Aacute -55 KPX Yacute Abreve -55 KPX Yacute Acircumflex -55 KPX Yacute Adieresis -55 KPX Yacute Agrave -55 KPX Yacute Amacron -55 KPX Yacute Aogonek -55 KPX Yacute Aring -55 KPX Yacute Atilde -55 KPX Yacute a -74 KPX Yacute aacute -74 KPX Yacute abreve -74 KPX Yacute acircumflex -74 KPX Yacute adieresis -74 KPX Yacute agrave -74 KPX Yacute amacron -74 KPX Yacute aogonek -74 KPX Yacute aring -74 KPX Yacute atilde -74 KPX Yacute colon -55 KPX Yacute comma -74 KPX Yacute e -74 KPX Yacute eacute -74 KPX Yacute ecaron -74 KPX Yacute ecircumflex -74 KPX Yacute edieresis -74 KPX Yacute edotaccent -74 KPX Yacute egrave -74 KPX Yacute emacron -74 KPX Yacute eogonek -74 KPX Yacute hyphen -74 KPX Yacute i -55 KPX Yacute iacute -55 KPX Yacute iogonek -55 KPX Yacute o -74 KPX Yacute oacute -74 KPX Yacute ocircumflex -74 KPX Yacute odieresis -74 KPX Yacute ograve -74 KPX Yacute ohungarumlaut -74 KPX Yacute omacron -74 KPX Yacute oslash -74 KPX Yacute otilde -74 KPX Yacute p -74 KPX Yacute period -74 KPX Yacute q -92 KPX Yacute semicolon -55 KPX Yacute u -74 KPX Yacute uacute -74 KPX Yacute ucircumflex -74 KPX Yacute udieresis -74 KPX Yacute ugrave -74 KPX Yacute uhungarumlaut -74 KPX Yacute umacron -74 KPX Yacute uogonek -74 KPX Yacute uring -74 KPX Yacute v -74 KPX Ydieresis A -55 KPX Ydieresis Aacute -55 KPX Ydieresis Abreve -55 KPX Ydieresis Acircumflex -55 KPX Ydieresis Adieresis -55 KPX Ydieresis Agrave -55 KPX Ydieresis Amacron -55 KPX Ydieresis Aogonek -55 KPX Ydieresis Aring -55 KPX Ydieresis Atilde -55 KPX Ydieresis a -74 KPX Ydieresis aacute -74 KPX Ydieresis abreve -74 KPX Ydieresis acircumflex -74 KPX Ydieresis adieresis -74 KPX Ydieresis agrave -74 KPX Ydieresis amacron -74 KPX Ydieresis aogonek -74 KPX Ydieresis aring -74 KPX Ydieresis atilde -74 KPX Ydieresis colon -55 KPX Ydieresis comma -74 KPX Ydieresis e -74 KPX Ydieresis eacute -74 KPX Ydieresis ecaron -74 KPX Ydieresis ecircumflex -74 KPX Ydieresis edieresis -74 KPX Ydieresis edotaccent -74 KPX Ydieresis egrave -74 KPX Ydieresis emacron -74 KPX Ydieresis eogonek -74 KPX Ydieresis hyphen -74 KPX Ydieresis i -55 KPX Ydieresis iacute -55 KPX Ydieresis iogonek -55 KPX Ydieresis o -74 KPX Ydieresis oacute -74 KPX Ydieresis ocircumflex -74 KPX Ydieresis odieresis -74 KPX Ydieresis ograve -74 KPX Ydieresis ohungarumlaut -74 KPX Ydieresis omacron -74 KPX Ydieresis oslash -74 KPX Ydieresis otilde -74 KPX Ydieresis p -74 KPX Ydieresis period -74 KPX Ydieresis q -92 KPX Ydieresis semicolon -55 KPX Ydieresis u -74 KPX Ydieresis uacute -74 KPX Ydieresis ucircumflex -74 KPX Ydieresis udieresis -74 KPX Ydieresis ugrave -74 KPX Ydieresis uhungarumlaut -74 KPX Ydieresis umacron -74 KPX Ydieresis uogonek -74 KPX Ydieresis uring -74 KPX Ydieresis v -74 KPX f f -18 KPX f quoteright 37 KPX one one -37 KPX quoteleft quoteleft -55 KPX quoteright quoteright -55 KPX quoteright s -55 KPX quoteright sacute -55 KPX quoteright scaron -55 KPX quoteright scedilla -55 KPX quoteright scommaaccent -55 KPX quoteright space -55 KPX quoteright t -18 KPX quoteright tcommaaccent -18 KPX r comma -55 KPX r hyphen -18 KPX r period -55 KPX r quoteright 55 KPX racute comma -55 KPX racute hyphen -18 KPX racute period -55 KPX racute quoteright 55 KPX rcaron comma -55 KPX rcaron hyphen -18 KPX rcaron period -55 KPX rcaron quoteright 55 KPX rcommaaccent comma -55 KPX rcommaaccent hyphen -18 KPX rcommaaccent period -55 KPX rcommaaccent quoteright 55 KPX v comma -111 KPX v period -111 KPX w comma -92 KPX w period -92 KPX y comma -92 KPX y period -92 KPX yacute comma -92 KPX yacute period -92 KPX ydieresis comma -92 KPX ydieresis period -92 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Times-BoldItalic.afm0000644000222100022210000017102514541067540016456 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:04:06 1997 Comment PH added entry for Euro character, copied from a different version, 19 July 2009. Comment PH added additional characters (after Euro) 17 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43066 Comment VMusage 45874 56899 FontName Times-BoldItalic FullName Times Bold Italic FamilyName Times Weight Bold ItalicAngle -15 IsFixedPitch false FontBBox -200 -218 996 921 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 669 XHeight 462 Ascender 683 Descender -217 StdHW 42 StdVW 121 StartCharMetrics 359 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 389 ; N exclam ; B 67 -13 370 684 ; C 34 ; WX 555 ; N quotedbl ; B 136 398 536 685 ; C 35 ; WX 500 ; N numbersign ; B -33 0 533 700 ; C 36 ; WX 500 ; N dollar ; B -20 -100 497 733 ; C 37 ; WX 833 ; N percent ; B 39 -10 793 692 ; C 38 ; WX 778 ; N ampersand ; B 5 -19 699 682 ; C 39 ; WX 333 ; N quoteright ; B 98 369 302 685 ; C 40 ; WX 333 ; N parenleft ; B 28 -179 344 685 ; C 41 ; WX 333 ; N parenright ; B -44 -179 271 685 ; C 42 ; WX 500 ; N asterisk ; B 65 249 456 685 ; C 43 ; WX 570 ; N plus ; B 33 0 537 506 ; C 44 ; WX 250 ; N comma ; B -60 -182 144 134 ; C 45 ; WX 333 ; N hyphen ; B 2 166 271 282 ; C 46 ; WX 250 ; N period ; B -9 -13 139 135 ; C 47 ; WX 278 ; N slash ; B -64 -18 342 685 ; C 48 ; WX 500 ; N zero ; B 17 -14 477 683 ; C 49 ; WX 500 ; N one ; B 5 0 419 683 ; C 50 ; WX 500 ; N two ; B -27 0 446 683 ; C 51 ; WX 500 ; N three ; B -15 -13 450 683 ; C 52 ; WX 500 ; N four ; B -15 0 503 683 ; C 53 ; WX 500 ; N five ; B -11 -13 487 669 ; C 54 ; WX 500 ; N six ; B 23 -15 509 679 ; C 55 ; WX 500 ; N seven ; B 52 0 525 669 ; C 56 ; WX 500 ; N eight ; B 3 -13 476 683 ; C 57 ; WX 500 ; N nine ; B -12 -10 475 683 ; C 58 ; WX 333 ; N colon ; B 23 -13 264 459 ; C 59 ; WX 333 ; N semicolon ; B -25 -183 264 459 ; C 60 ; WX 570 ; N less ; B 31 -8 539 514 ; C 61 ; WX 570 ; N equal ; B 33 107 537 399 ; C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ; C 63 ; WX 500 ; N question ; B 79 -13 470 684 ; C 64 ; WX 832 ; N at ; B 63 -18 770 685 ; C 65 ; WX 667 ; N A ; B -67 0 593 683 ; C 66 ; WX 667 ; N B ; B -24 0 624 669 ; C 67 ; WX 667 ; N C ; B 32 -18 677 685 ; C 68 ; WX 722 ; N D ; B -46 0 685 669 ; C 69 ; WX 667 ; N E ; B -27 0 653 669 ; C 70 ; WX 667 ; N F ; B -13 0 660 669 ; C 71 ; WX 722 ; N G ; B 21 -18 706 685 ; C 72 ; WX 778 ; N H ; B -24 0 799 669 ; C 73 ; WX 389 ; N I ; B -32 0 406 669 ; C 74 ; WX 500 ; N J ; B -46 -99 524 669 ; C 75 ; WX 667 ; N K ; B -21 0 702 669 ; C 76 ; WX 611 ; N L ; B -22 0 590 669 ; C 77 ; WX 889 ; N M ; B -29 -12 917 669 ; C 78 ; WX 722 ; N N ; B -27 -15 748 669 ; C 79 ; WX 722 ; N O ; B 27 -18 691 685 ; C 80 ; WX 611 ; N P ; B -27 0 613 669 ; C 81 ; WX 722 ; N Q ; B 27 -208 691 685 ; C 82 ; WX 667 ; N R ; B -29 0 623 669 ; C 83 ; WX 556 ; N S ; B 2 -18 526 685 ; C 84 ; WX 611 ; N T ; B 50 0 650 669 ; C 85 ; WX 722 ; N U ; B 67 -18 744 669 ; C 86 ; WX 667 ; N V ; B 65 -18 715 669 ; C 87 ; WX 889 ; N W ; B 65 -18 940 669 ; C 88 ; WX 667 ; N X ; B -24 0 694 669 ; C 89 ; WX 611 ; N Y ; B 73 0 659 669 ; C 90 ; WX 611 ; N Z ; B -11 0 590 669 ; C 91 ; WX 333 ; N bracketleft ; B -37 -159 362 674 ; C 92 ; WX 278 ; N backslash ; B -1 -18 279 685 ; C 93 ; WX 333 ; N bracketright ; B -56 -157 343 674 ; C 94 ; WX 570 ; N asciicircum ; B 67 304 503 669 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 333 ; N quoteleft ; B 128 369 332 685 ; C 97 ; WX 500 ; N a ; B -21 -14 455 462 ; C 98 ; WX 500 ; N b ; B -14 -13 444 699 ; C 99 ; WX 444 ; N c ; B -5 -13 392 462 ; C 100 ; WX 500 ; N d ; B -21 -13 517 699 ; C 101 ; WX 444 ; N e ; B 5 -13 398 462 ; C 102 ; WX 333 ; N f ; B -169 -205 446 698 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B -52 -203 478 462 ; C 104 ; WX 556 ; N h ; B -13 -9 498 699 ; C 105 ; WX 278 ; N i ; B 2 -9 263 684 ; C 106 ; WX 278 ; N j ; B -189 -207 279 684 ; C 107 ; WX 500 ; N k ; B -23 -8 483 699 ; C 108 ; WX 278 ; N l ; B 2 -9 290 699 ; C 109 ; WX 778 ; N m ; B -14 -9 722 462 ; C 110 ; WX 556 ; N n ; B -6 -9 493 462 ; C 111 ; WX 500 ; N o ; B -3 -13 441 462 ; C 112 ; WX 500 ; N p ; B -120 -205 446 462 ; C 113 ; WX 500 ; N q ; B 1 -205 471 462 ; C 114 ; WX 389 ; N r ; B -21 0 389 462 ; C 115 ; WX 389 ; N s ; B -19 -13 333 462 ; C 116 ; WX 278 ; N t ; B -11 -9 281 594 ; C 117 ; WX 556 ; N u ; B 15 -9 492 462 ; C 118 ; WX 444 ; N v ; B 16 -13 401 462 ; C 119 ; WX 667 ; N w ; B 16 -13 614 462 ; C 120 ; WX 500 ; N x ; B -46 -13 469 462 ; C 121 ; WX 444 ; N y ; B -94 -205 392 462 ; C 122 ; WX 389 ; N z ; B -43 -78 368 449 ; C 123 ; WX 348 ; N braceleft ; B 5 -187 436 686 ; C 124 ; WX 220 ; N bar ; B 66 -218 154 782 ; C 125 ; WX 348 ; N braceright ; B -129 -187 302 686 ; C 126 ; WX 570 ; N asciitilde ; B 54 173 516 333 ; C 160 ; WX 250 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 389 ; N exclamdown ; B 19 -205 322 492 ; C 162 ; WX 500 ; N cent ; B 42 -143 439 576 ; C 163 ; WX 500 ; N sterling ; B -32 -12 510 683 ; C 164 ; WX 167 ; N fraction ; B -169 -14 324 683 ; C 165 ; WX 500 ; N yen ; B 33 0 628 669 ; C 166 ; WX 500 ; N florin ; B -87 -156 537 707 ; C 167 ; WX 500 ; N section ; B 36 -143 459 685 ; C 168 ; WX 500 ; N currency ; B -26 34 526 586 ; C 169 ; WX 278 ; N quotesingle ; B 128 398 268 685 ; C 170 ; WX 500 ; N quotedblleft ; B 53 369 513 685 ; C 171 ; WX 500 ; N guillemotleft ; B 12 32 468 415 ; C 172 ; WX 333 ; N guilsinglleft ; B 32 32 303 415 ; C 173 ; WX 333 ; N guilsinglright ; B 10 32 281 415 ; C 174 ; WX 556 ; N fi ; B -188 -205 514 703 ; C 175 ; WX 556 ; N fl ; B -186 -205 553 704 ; C 177 ; WX 500 ; N endash ; B -40 178 477 269 ; C 178 ; WX 500 ; N dagger ; B 91 -145 494 685 ; C 179 ; WX 500 ; N daggerdbl ; B 10 -139 493 685 ; C 180 ; WX 250 ; N periodcentered ; B 51 257 199 405 ; C 182 ; WX 500 ; N paragraph ; B -57 -193 562 669 ; C 183 ; WX 350 ; N bullet ; B 0 175 350 525 ; C 184 ; WX 333 ; N quotesinglbase ; B -5 -182 199 134 ; C 185 ; WX 500 ; N quotedblbase ; B -57 -182 403 134 ; C 186 ; WX 500 ; N quotedblright ; B 53 369 513 685 ; C 187 ; WX 500 ; N guillemotright ; B 12 32 468 415 ; C 188 ; WX 1000 ; N ellipsis ; B 40 -13 852 135 ; C 189 ; WX 1000 ; N perthousand ; B 7 -29 996 706 ; C 191 ; WX 500 ; N questiondown ; B 30 -205 421 492 ; C 193 ; WX 333 ; N grave ; B 85 516 297 697 ; C 194 ; WX 333 ; N acute ; B 139 516 379 697 ; C 195 ; WX 333 ; N circumflex ; B 40 516 367 690 ; C 196 ; WX 333 ; N tilde ; B 48 536 407 655 ; C 197 ; WX 333 ; N macron ; B 51 553 393 623 ; C 198 ; WX 333 ; N breve ; B 71 516 387 678 ; C 199 ; WX 333 ; N dotaccent ; B 163 550 298 684 ; C 200 ; WX 333 ; N dieresis ; B 55 550 402 684 ; C 202 ; WX 333 ; N ring ; B 127 516 340 729 ; C 203 ; WX 333 ; N cedilla ; B -80 -218 156 5 ; C 205 ; WX 333 ; N hungarumlaut ; B 69 516 498 697 ; C 206 ; WX 333 ; N ogonek ; B 15 -183 244 34 ; C 207 ; WX 333 ; N caron ; B 79 516 411 690 ; C 208 ; WX 1000 ; N emdash ; B -40 178 977 269 ; C 225 ; WX 944 ; N AE ; B -64 0 918 669 ; C 227 ; WX 266 ; N ordfeminine ; B 16 399 330 685 ; C 232 ; WX 611 ; N Lslash ; B -22 0 590 669 ; C 233 ; WX 722 ; N Oslash ; B 27 -125 691 764 ; C 234 ; WX 944 ; N OE ; B 23 -8 946 677 ; C 235 ; WX 300 ; N ordmasculine ; B 56 400 347 685 ; C 241 ; WX 722 ; N ae ; B -5 -13 673 462 ; C 245 ; WX 278 ; N dotlessi ; B 2 -9 238 462 ; C 248 ; WX 278 ; N lslash ; B -7 -9 307 699 ; C 249 ; WX 500 ; N oslash ; B -3 -119 441 560 ; C 250 ; WX 722 ; N oe ; B 6 -13 674 462 ; C 251 ; WX 500 ; N germandbls ; B -200 -200 473 705 ; C -1 ; WX 389 ; N Idieresis ; B -32 0 450 862 ; C -1 ; WX 444 ; N eacute ; B 5 -13 435 697 ; C -1 ; WX 500 ; N abreve ; B -21 -14 471 678 ; C -1 ; WX 556 ; N uhungarumlaut ; B 15 -9 610 697 ; C -1 ; WX 444 ; N ecaron ; B 5 -13 467 690 ; C -1 ; WX 611 ; N Ydieresis ; B 73 0 659 862 ; C -1 ; WX 570 ; N divide ; B 33 -29 537 535 ; C -1 ; WX 611 ; N Yacute ; B 73 0 659 904 ; C -1 ; WX 667 ; N Acircumflex ; B -67 0 593 897 ; C -1 ; WX 500 ; N aacute ; B -21 -14 463 697 ; C -1 ; WX 722 ; N Ucircumflex ; B 67 -18 744 897 ; C -1 ; WX 444 ; N yacute ; B -94 -205 435 697 ; C -1 ; WX 389 ; N scommaaccent ; B -19 -218 333 462 ; C -1 ; WX 444 ; N ecircumflex ; B 5 -13 423 690 ; C -1 ; WX 722 ; N Uring ; B 67 -18 744 921 ; C -1 ; WX 722 ; N Udieresis ; B 67 -18 744 862 ; C -1 ; WX 500 ; N aogonek ; B -21 -183 455 462 ; C -1 ; WX 722 ; N Uacute ; B 67 -18 744 904 ; C -1 ; WX 556 ; N uogonek ; B 15 -183 492 462 ; C -1 ; WX 667 ; N Edieresis ; B -27 0 653 862 ; C -1 ; WX 722 ; N Dcroat ; B -31 0 700 669 ; C -1 ; WX 250 ; N commaaccent ; B -36 -218 131 -50 ; C -1 ; WX 747 ; N copyright ; B 30 -18 718 685 ; C -1 ; WX 667 ; N Emacron ; B -27 0 653 830 ; C -1 ; WX 444 ; N ccaron ; B -5 -13 467 690 ; C -1 ; WX 500 ; N aring ; B -21 -14 455 729 ; C -1 ; WX 722 ; N Ncommaaccent ; B -27 -218 748 669 ; C -1 ; WX 278 ; N lacute ; B 2 -9 392 904 ; C -1 ; WX 500 ; N agrave ; B -21 -14 455 697 ; C -1 ; WX 611 ; N Tcommaaccent ; B 50 -218 650 669 ; C -1 ; WX 667 ; N Cacute ; B 32 -18 677 904 ; C -1 ; WX 500 ; N atilde ; B -21 -14 491 655 ; C -1 ; WX 667 ; N Edotaccent ; B -27 0 653 862 ; C -1 ; WX 389 ; N scaron ; B -19 -13 424 690 ; C -1 ; WX 389 ; N scedilla ; B -19 -218 333 462 ; C -1 ; WX 278 ; N iacute ; B 2 -9 352 697 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 667 ; N Rcaron ; B -29 0 623 897 ; C -1 ; WX 722 ; N Gcommaaccent ; B 21 -218 706 685 ; C -1 ; WX 556 ; N ucircumflex ; B 15 -9 492 690 ; C -1 ; WX 500 ; N acircumflex ; B -21 -14 455 690 ; C -1 ; WX 667 ; N Amacron ; B -67 0 593 830 ; C -1 ; WX 389 ; N rcaron ; B -21 0 424 690 ; C -1 ; WX 444 ; N ccedilla ; B -5 -218 392 462 ; C -1 ; WX 611 ; N Zdotaccent ; B -11 0 590 862 ; C -1 ; WX 611 ; N Thorn ; B -27 0 573 669 ; C -1 ; WX 722 ; N Omacron ; B 27 -18 691 830 ; C -1 ; WX 667 ; N Racute ; B -29 0 623 904 ; C -1 ; WX 556 ; N Sacute ; B 2 -18 531 904 ; C -1 ; WX 608 ; N dcaron ; B -21 -13 675 708 ; C -1 ; WX 722 ; N Umacron ; B 67 -18 744 830 ; C -1 ; WX 556 ; N uring ; B 15 -9 492 729 ; C -1 ; WX 300 ; N threesuperior ; B 17 265 321 683 ; C -1 ; WX 722 ; N Ograve ; B 27 -18 691 904 ; C -1 ; WX 667 ; N Agrave ; B -67 0 593 904 ; C -1 ; WX 667 ; N Abreve ; B -67 0 593 885 ; C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ; C -1 ; WX 556 ; N uacute ; B 15 -9 492 697 ; C -1 ; WX 611 ; N Tcaron ; B 50 0 650 897 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 444 ; N ydieresis ; B -94 -205 443 655 ; C -1 ; WX 722 ; N Nacute ; B -27 -15 748 904 ; C -1 ; WX 278 ; N icircumflex ; B -3 -9 324 690 ; C -1 ; WX 667 ; N Ecircumflex ; B -27 0 653 897 ; C -1 ; WX 500 ; N adieresis ; B -21 -14 476 655 ; C -1 ; WX 444 ; N edieresis ; B 5 -13 448 655 ; C -1 ; WX 444 ; N cacute ; B -5 -13 435 697 ; C -1 ; WX 556 ; N nacute ; B -6 -9 493 697 ; C -1 ; WX 556 ; N umacron ; B 15 -9 492 623 ; C -1 ; WX 722 ; N Ncaron ; B -27 -15 748 897 ; C -1 ; WX 389 ; N Iacute ; B -32 0 432 904 ; C -1 ; WX 570 ; N plusminus ; B 33 0 537 506 ; C -1 ; WX 220 ; N brokenbar ; B 66 -143 154 707 ; C -1 ; WX 747 ; N registered ; B 30 -18 718 685 ; C -1 ; WX 722 ; N Gbreve ; B 21 -18 706 885 ; C -1 ; WX 389 ; N Idotaccent ; B -32 0 406 862 ; C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 667 ; N Egrave ; B -27 0 653 904 ; C -1 ; WX 389 ; N racute ; B -21 0 407 697 ; C -1 ; WX 500 ; N omacron ; B -3 -13 462 623 ; C -1 ; WX 611 ; N Zacute ; B -11 0 590 904 ; C -1 ; WX 611 ; N Zcaron ; B -11 0 590 897 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 722 ; N Eth ; B -31 0 700 669 ; C -1 ; WX 667 ; N Ccedilla ; B 32 -218 677 685 ; C -1 ; WX 278 ; N lcommaaccent ; B -42 -218 290 699 ; C -1 ; WX 366 ; N tcaron ; B -11 -9 434 754 ; C -1 ; WX 444 ; N eogonek ; B 5 -183 398 462 ; C -1 ; WX 722 ; N Uogonek ; B 67 -183 744 669 ; C -1 ; WX 667 ; N Aacute ; B -67 0 593 904 ; C -1 ; WX 667 ; N Adieresis ; B -67 0 593 862 ; C -1 ; WX 444 ; N egrave ; B 5 -13 398 697 ; C -1 ; WX 389 ; N zacute ; B -43 -78 407 697 ; C -1 ; WX 278 ; N iogonek ; B -20 -183 263 684 ; C -1 ; WX 722 ; N Oacute ; B 27 -18 691 904 ; C -1 ; WX 500 ; N oacute ; B -3 -13 463 697 ; C -1 ; WX 500 ; N amacron ; B -21 -14 467 623 ; C -1 ; WX 389 ; N sacute ; B -19 -13 407 697 ; C -1 ; WX 278 ; N idieresis ; B 2 -9 364 655 ; C -1 ; WX 722 ; N Ocircumflex ; B 27 -18 691 897 ; C -1 ; WX 722 ; N Ugrave ; B 67 -18 744 904 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 500 ; N thorn ; B -120 -205 446 699 ; C -1 ; WX 300 ; N twosuperior ; B 2 274 313 683 ; C -1 ; WX 722 ; N Odieresis ; B 27 -18 691 862 ; C -1 ; WX 576 ; N mu ; B -60 -207 516 449 ; C -1 ; WX 278 ; N igrave ; B 2 -9 259 697 ; C -1 ; WX 500 ; N ohungarumlaut ; B -3 -13 582 697 ; C -1 ; WX 667 ; N Eogonek ; B -27 -183 653 669 ; C -1 ; WX 500 ; N dcroat ; B -21 -13 552 699 ; C -1 ; WX 750 ; N threequarters ; B 7 -14 726 683 ; C -1 ; WX 556 ; N Scedilla ; B 2 -218 526 685 ; C -1 ; WX 382 ; N lcaron ; B 2 -9 448 708 ; C -1 ; WX 667 ; N Kcommaaccent ; B -21 -218 702 669 ; C -1 ; WX 611 ; N Lacute ; B -22 0 590 904 ; C -1 ; WX 1000 ; N trademark ; B 32 263 968 669 ; C -1 ; WX 444 ; N edotaccent ; B 5 -13 398 655 ; C -1 ; WX 389 ; N Igrave ; B -32 0 406 904 ; C -1 ; WX 389 ; N Imacron ; B -32 0 461 830 ; C -1 ; WX 611 ; N Lcaron ; B -22 0 671 718 ; C -1 ; WX 750 ; N onehalf ; B -9 -14 723 683 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 500 ; N ocircumflex ; B -3 -13 451 690 ; C -1 ; WX 556 ; N ntilde ; B -6 -9 504 655 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 67 -18 744 904 ; C -1 ; WX 667 ; N Eacute ; B -27 0 653 904 ; C -1 ; WX 444 ; N emacron ; B 5 -13 439 623 ; C -1 ; WX 500 ; N gbreve ; B -52 -203 478 678 ; C -1 ; WX 750 ; N onequarter ; B 7 -14 721 683 ; C -1 ; WX 556 ; N Scaron ; B 2 -18 553 897 ; C -1 ; WX 556 ; N Scommaaccent ; B 2 -218 526 685 ; C -1 ; WX 722 ; N Ohungarumlaut ; B 27 -18 723 904 ; C -1 ; WX 400 ; N degree ; B 83 397 369 683 ; C -1 ; WX 500 ; N ograve ; B -3 -13 441 697 ; C -1 ; WX 667 ; N Ccaron ; B 32 -18 677 897 ; C -1 ; WX 556 ; N ugrave ; B 15 -9 492 697 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 722 ; N Dcaron ; B -46 0 685 897 ; C -1 ; WX 389 ; N rcommaaccent ; B -67 -218 389 462 ; C -1 ; WX 722 ; N Ntilde ; B -27 -15 748 862 ; C -1 ; WX 500 ; N otilde ; B -3 -13 491 655 ; C -1 ; WX 667 ; N Rcommaaccent ; B -29 -218 623 669 ; C -1 ; WX 611 ; N Lcommaaccent ; B -22 -218 590 669 ; C -1 ; WX 667 ; N Atilde ; B -67 0 593 862 ; C -1 ; WX 667 ; N Aogonek ; B -67 -183 604 683 ; C -1 ; WX 667 ; N Aring ; B -67 0 593 921 ; C -1 ; WX 722 ; N Otilde ; B 27 -18 691 862 ; C -1 ; WX 389 ; N zdotaccent ; B -43 -78 368 655 ; C -1 ; WX 667 ; N Ecaron ; B -27 0 653 897 ; C -1 ; WX 389 ; N Iogonek ; B -32 -183 406 669 ; C -1 ; WX 500 ; N kcommaaccent ; B -23 -218 483 699 ; C -1 ; WX 606 ; N minus ; B 51 209 555 297 ; C -1 ; WX 389 ; N Icircumflex ; B -32 0 450 897 ; C -1 ; WX 556 ; N ncaron ; B -6 -9 523 690 ; C -1 ; WX 278 ; N tcommaaccent ; B -62 -218 281 594 ; C -1 ; WX 606 ; N logicalnot ; B 51 108 555 399 ; C -1 ; WX 500 ; N odieresis ; B -3 -13 471 655 ; C -1 ; WX 556 ; N udieresis ; B 15 -9 499 655 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 500 ; N gcommaaccent ; B -52 -203 478 767 ; C -1 ; WX 500 ; N eth ; B -3 -13 454 699 ; C -1 ; WX 389 ; N zcaron ; B -43 -78 424 690 ; C -1 ; WX 556 ; N ncommaaccent ; B -6 -218 493 462 ; C -1 ; WX 300 ; N onesuperior ; B 30 274 301 683 ; C -1 ; WX 278 ; N imacron ; B 2 -9 294 623 ; C -1 ; WX 500 ; N Euro ; B 0 0 0 0 ; C -1 ; WX 667 ; N Ccircumflex ; B 32 -18 677 893 ; C -1 ; WX 444 ; N ccircumflex ; B -5 -13 439 686 ; C -1 ; WX 667 ; N Cdotaccent ; B 32 -18 677 849 ; C -1 ; WX 444 ; N cdotaccent ; B -5 -13 392 642 ; C -1 ; WX 667 ; N Ebreve ; B -24 0 656 881 ; C -1 ; WX 444 ; N ebreve ; B 5 -13 483 674 ; C -1 ; WX 722 ; N Gcircumflex ; B 21 -18 706 893 ; C -1 ; WX 500 ; N gcircumflex ; B -52 -203 478 686 ; C -1 ; WX 722 ; N Gdotaccent ; B 21 -18 706 849 ; C -1 ; WX 500 ; N gdotaccent ; B -52 -203 478 642 ; C -1 ; WX 778 ; N Hcircumflex ; B -24 0 799 893 ; C -1 ; WX 556 ; N hcircumflex ; B -13 -9 498 923 ; C -1 ; WX 778 ; N Hbar ; B -24 0 799 669 ; C -1 ; WX 556 ; N hbar ; B -13 -9 498 699 ; C -1 ; WX 389 ; N Itilde ; B -24 0 495 838 ; C -1 ; WX 278 ; N itilde ; B 2 -9 389 631 ; C -1 ; WX 389 ; N Ibreve ; B -24 0 502 881 ; C -1 ; WX 278 ; N ibreve ; B 2 -9 395 674 ; C -1 ; WX 826 ; N IJ ; B -24 -99 858 669 ; C -1 ; WX 525 ; N ij ; B 2 -207 519 685 ; C -1 ; WX 500 ; N Jcircumflex ; B -46 -99 524 893 ; C -1 ; WX 278 ; N jcircumflex ; B -189 -207 343 769 ; C -1 ; WX 534 ; N kgreenlandic ; B -6 0 514 470 ; C -1 ; WX 611 ; N Ldot ; B -24 0 588 669 ; C -1 ; WX 528 ; N ldot ; B 2 -9 477 699 ; C -1 ; WX 556 ; N napostrophe ; B -6 -9 493 786 ; C -1 ; WX 722 ; N Obreve ; B 27 -18 691 881 ; C -1 ; WX 500 ; N obreve ; B -3 -13 501 674 ; C -1 ; WX 556 ; N Scircumflex ; B 2 -18 553 893 ; C -1 ; WX 389 ; N scircumflex ; B -19 -13 405 686 ; C -1 ; WX 611 ; N Tbar ; B 50 0 650 669 ; C -1 ; WX 278 ; N tbar ; B -15 -9 281 594 ; C -1 ; WX 611 ; N Tcedilla ; B 50 -218 650 669 ; C -1 ; WX 278 ; N tcedilla ; B -62 -218 281 594 ; C -1 ; WX 722 ; N Utilde ; B 67 -18 744 838 ; C -1 ; WX 556 ; N utilde ; B 15 -9 523 631 ; C -1 ; WX 722 ; N Ubreve ; B 67 -18 744 881 ; C -1 ; WX 556 ; N ubreve ; B 15 -9 530 674 ; C -1 ; WX 889 ; N Wcircumflex ; B 65 -18 940 893 ; C -1 ; WX 667 ; N wcircumflex ; B 16 -13 614 686 ; C -1 ; WX 611 ; N Ycircumflex ; B 73 0 659 893 ; C -1 ; WX 444 ; N ycircumflex ; B -94 -205 392 686 ; C -1 ; WX 333 ; N longs ; B -169 -205 446 698 ; C -1 ; WX 752 ; N infinity ; B 14 42 734 456 ; EndCharMetrics StartKernData StartKernPairs 2038 KPX A C -65 KPX A Cacute -65 KPX A Ccaron -65 KPX A Ccedilla -65 KPX A G -60 KPX A Gbreve -60 KPX A Gcommaaccent -60 KPX A O -50 KPX A Oacute -50 KPX A Ocircumflex -50 KPX A Odieresis -50 KPX A Ograve -50 KPX A Ohungarumlaut -50 KPX A Omacron -50 KPX A Oslash -50 KPX A Otilde -50 KPX A Q -55 KPX A T -55 KPX A Tcaron -55 KPX A Tcommaaccent -55 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -95 KPX A W -100 KPX A Y -70 KPX A Yacute -70 KPX A Ydieresis -70 KPX A quoteright -74 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -74 KPX A w -74 KPX A y -74 KPX A yacute -74 KPX A ydieresis -74 KPX Aacute C -65 KPX Aacute Cacute -65 KPX Aacute Ccaron -65 KPX Aacute Ccedilla -65 KPX Aacute G -60 KPX Aacute Gbreve -60 KPX Aacute Gcommaaccent -60 KPX Aacute O -50 KPX Aacute Oacute -50 KPX Aacute Ocircumflex -50 KPX Aacute Odieresis -50 KPX Aacute Ograve -50 KPX Aacute Ohungarumlaut -50 KPX Aacute Omacron -50 KPX Aacute Oslash -50 KPX Aacute Otilde -50 KPX Aacute Q -55 KPX Aacute T -55 KPX Aacute Tcaron -55 KPX Aacute Tcommaaccent -55 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -95 KPX Aacute W -100 KPX Aacute Y -70 KPX Aacute Yacute -70 KPX Aacute Ydieresis -70 KPX Aacute quoteright -74 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -74 KPX Aacute w -74 KPX Aacute y -74 KPX Aacute yacute -74 KPX Aacute ydieresis -74 KPX Abreve C -65 KPX Abreve Cacute -65 KPX Abreve Ccaron -65 KPX Abreve Ccedilla -65 KPX Abreve G -60 KPX Abreve Gbreve -60 KPX Abreve Gcommaaccent -60 KPX Abreve O -50 KPX Abreve Oacute -50 KPX Abreve Ocircumflex -50 KPX Abreve Odieresis -50 KPX Abreve Ograve -50 KPX Abreve Ohungarumlaut -50 KPX Abreve Omacron -50 KPX Abreve Oslash -50 KPX Abreve Otilde -50 KPX Abreve Q -55 KPX Abreve T -55 KPX Abreve Tcaron -55 KPX Abreve Tcommaaccent -55 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -95 KPX Abreve W -100 KPX Abreve Y -70 KPX Abreve Yacute -70 KPX Abreve Ydieresis -70 KPX Abreve quoteright -74 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -74 KPX Abreve w -74 KPX Abreve y -74 KPX Abreve yacute -74 KPX Abreve ydieresis -74 KPX Acircumflex C -65 KPX Acircumflex Cacute -65 KPX Acircumflex Ccaron -65 KPX Acircumflex Ccedilla -65 KPX Acircumflex G -60 KPX Acircumflex Gbreve -60 KPX Acircumflex Gcommaaccent -60 KPX Acircumflex O -50 KPX Acircumflex Oacute -50 KPX Acircumflex Ocircumflex -50 KPX Acircumflex Odieresis -50 KPX Acircumflex Ograve -50 KPX Acircumflex Ohungarumlaut -50 KPX Acircumflex Omacron -50 KPX Acircumflex Oslash -50 KPX Acircumflex Otilde -50 KPX Acircumflex Q -55 KPX Acircumflex T -55 KPX Acircumflex Tcaron -55 KPX Acircumflex Tcommaaccent -55 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -95 KPX Acircumflex W -100 KPX Acircumflex Y -70 KPX Acircumflex Yacute -70 KPX Acircumflex Ydieresis -70 KPX Acircumflex quoteright -74 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -74 KPX Acircumflex w -74 KPX Acircumflex y -74 KPX Acircumflex yacute -74 KPX Acircumflex ydieresis -74 KPX Adieresis C -65 KPX Adieresis Cacute -65 KPX Adieresis Ccaron -65 KPX Adieresis Ccedilla -65 KPX Adieresis G -60 KPX Adieresis Gbreve -60 KPX Adieresis Gcommaaccent -60 KPX Adieresis O -50 KPX Adieresis Oacute -50 KPX Adieresis Ocircumflex -50 KPX Adieresis Odieresis -50 KPX Adieresis Ograve -50 KPX Adieresis Ohungarumlaut -50 KPX Adieresis Omacron -50 KPX Adieresis Oslash -50 KPX Adieresis Otilde -50 KPX Adieresis Q -55 KPX Adieresis T -55 KPX Adieresis Tcaron -55 KPX Adieresis Tcommaaccent -55 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -95 KPX Adieresis W -100 KPX Adieresis Y -70 KPX Adieresis Yacute -70 KPX Adieresis Ydieresis -70 KPX Adieresis quoteright -74 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -74 KPX Adieresis w -74 KPX Adieresis y -74 KPX Adieresis yacute -74 KPX Adieresis ydieresis -74 KPX Agrave C -65 KPX Agrave Cacute -65 KPX Agrave Ccaron -65 KPX Agrave Ccedilla -65 KPX Agrave G -60 KPX Agrave Gbreve -60 KPX Agrave Gcommaaccent -60 KPX Agrave O -50 KPX Agrave Oacute -50 KPX Agrave Ocircumflex -50 KPX Agrave Odieresis -50 KPX Agrave Ograve -50 KPX Agrave Ohungarumlaut -50 KPX Agrave Omacron -50 KPX Agrave Oslash -50 KPX Agrave Otilde -50 KPX Agrave Q -55 KPX Agrave T -55 KPX Agrave Tcaron -55 KPX Agrave Tcommaaccent -55 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -95 KPX Agrave W -100 KPX Agrave Y -70 KPX Agrave Yacute -70 KPX Agrave Ydieresis -70 KPX Agrave quoteright -74 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -74 KPX Agrave w -74 KPX Agrave y -74 KPX Agrave yacute -74 KPX Agrave ydieresis -74 KPX Amacron C -65 KPX Amacron Cacute -65 KPX Amacron Ccaron -65 KPX Amacron Ccedilla -65 KPX Amacron G -60 KPX Amacron Gbreve -60 KPX Amacron Gcommaaccent -60 KPX Amacron O -50 KPX Amacron Oacute -50 KPX Amacron Ocircumflex -50 KPX Amacron Odieresis -50 KPX Amacron Ograve -50 KPX Amacron Ohungarumlaut -50 KPX Amacron Omacron -50 KPX Amacron Oslash -50 KPX Amacron Otilde -50 KPX Amacron Q -55 KPX Amacron T -55 KPX Amacron Tcaron -55 KPX Amacron Tcommaaccent -55 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -95 KPX Amacron W -100 KPX Amacron Y -70 KPX Amacron Yacute -70 KPX Amacron Ydieresis -70 KPX Amacron quoteright -74 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -74 KPX Amacron w -74 KPX Amacron y -74 KPX Amacron yacute -74 KPX Amacron ydieresis -74 KPX Aogonek C -65 KPX Aogonek Cacute -65 KPX Aogonek Ccaron -65 KPX Aogonek Ccedilla -65 KPX Aogonek G -60 KPX Aogonek Gbreve -60 KPX Aogonek Gcommaaccent -60 KPX Aogonek O -50 KPX Aogonek Oacute -50 KPX Aogonek Ocircumflex -50 KPX Aogonek Odieresis -50 KPX Aogonek Ograve -50 KPX Aogonek Ohungarumlaut -50 KPX Aogonek Omacron -50 KPX Aogonek Oslash -50 KPX Aogonek Otilde -50 KPX Aogonek Q -55 KPX Aogonek T -55 KPX Aogonek Tcaron -55 KPX Aogonek Tcommaaccent -55 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -95 KPX Aogonek W -100 KPX Aogonek Y -70 KPX Aogonek Yacute -70 KPX Aogonek Ydieresis -70 KPX Aogonek quoteright -74 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -74 KPX Aogonek w -74 KPX Aogonek y -34 KPX Aogonek yacute -34 KPX Aogonek ydieresis -34 KPX Aring C -65 KPX Aring Cacute -65 KPX Aring Ccaron -65 KPX Aring Ccedilla -65 KPX Aring G -60 KPX Aring Gbreve -60 KPX Aring Gcommaaccent -60 KPX Aring O -50 KPX Aring Oacute -50 KPX Aring Ocircumflex -50 KPX Aring Odieresis -50 KPX Aring Ograve -50 KPX Aring Ohungarumlaut -50 KPX Aring Omacron -50 KPX Aring Oslash -50 KPX Aring Otilde -50 KPX Aring Q -55 KPX Aring T -55 KPX Aring Tcaron -55 KPX Aring Tcommaaccent -55 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -95 KPX Aring W -100 KPX Aring Y -70 KPX Aring Yacute -70 KPX Aring Ydieresis -70 KPX Aring quoteright -74 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -74 KPX Aring w -74 KPX Aring y -74 KPX Aring yacute -74 KPX Aring ydieresis -74 KPX Atilde C -65 KPX Atilde Cacute -65 KPX Atilde Ccaron -65 KPX Atilde Ccedilla -65 KPX Atilde G -60 KPX Atilde Gbreve -60 KPX Atilde Gcommaaccent -60 KPX Atilde O -50 KPX Atilde Oacute -50 KPX Atilde Ocircumflex -50 KPX Atilde Odieresis -50 KPX Atilde Ograve -50 KPX Atilde Ohungarumlaut -50 KPX Atilde Omacron -50 KPX Atilde Oslash -50 KPX Atilde Otilde -50 KPX Atilde Q -55 KPX Atilde T -55 KPX Atilde Tcaron -55 KPX Atilde Tcommaaccent -55 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -95 KPX Atilde W -100 KPX Atilde Y -70 KPX Atilde Yacute -70 KPX Atilde Ydieresis -70 KPX Atilde quoteright -74 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -74 KPX Atilde w -74 KPX Atilde y -74 KPX Atilde yacute -74 KPX Atilde ydieresis -74 KPX B A -25 KPX B Aacute -25 KPX B Abreve -25 KPX B Acircumflex -25 KPX B Adieresis -25 KPX B Agrave -25 KPX B Amacron -25 KPX B Aogonek -25 KPX B Aring -25 KPX B Atilde -25 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -25 KPX D Aacute -25 KPX D Abreve -25 KPX D Acircumflex -25 KPX D Adieresis -25 KPX D Agrave -25 KPX D Amacron -25 KPX D Aogonek -25 KPX D Aring -25 KPX D Atilde -25 KPX D V -50 KPX D W -40 KPX D Y -50 KPX D Yacute -50 KPX D Ydieresis -50 KPX Dcaron A -25 KPX Dcaron Aacute -25 KPX Dcaron Abreve -25 KPX Dcaron Acircumflex -25 KPX Dcaron Adieresis -25 KPX Dcaron Agrave -25 KPX Dcaron Amacron -25 KPX Dcaron Aogonek -25 KPX Dcaron Aring -25 KPX Dcaron Atilde -25 KPX Dcaron V -50 KPX Dcaron W -40 KPX Dcaron Y -50 KPX Dcaron Yacute -50 KPX Dcaron Ydieresis -50 KPX Dcroat A -25 KPX Dcroat Aacute -25 KPX Dcroat Abreve -25 KPX Dcroat Acircumflex -25 KPX Dcroat Adieresis -25 KPX Dcroat Agrave -25 KPX Dcroat Amacron -25 KPX Dcroat Aogonek -25 KPX Dcroat Aring -25 KPX Dcroat Atilde -25 KPX Dcroat V -50 KPX Dcroat W -40 KPX Dcroat Y -50 KPX Dcroat Yacute -50 KPX Dcroat Ydieresis -50 KPX F A -100 KPX F Aacute -100 KPX F Abreve -100 KPX F Acircumflex -100 KPX F Adieresis -100 KPX F Agrave -100 KPX F Amacron -100 KPX F Aogonek -100 KPX F Aring -100 KPX F Atilde -100 KPX F a -95 KPX F aacute -95 KPX F abreve -95 KPX F acircumflex -95 KPX F adieresis -95 KPX F agrave -95 KPX F amacron -95 KPX F aogonek -95 KPX F aring -95 KPX F atilde -95 KPX F comma -129 KPX F e -100 KPX F eacute -100 KPX F ecaron -100 KPX F ecircumflex -100 KPX F edieresis -100 KPX F edotaccent -100 KPX F egrave -100 KPX F emacron -100 KPX F eogonek -100 KPX F i -40 KPX F iacute -40 KPX F icircumflex -40 KPX F idieresis -40 KPX F igrave -40 KPX F imacron -40 KPX F iogonek -40 KPX F o -70 KPX F oacute -70 KPX F ocircumflex -70 KPX F odieresis -70 KPX F ograve -70 KPX F ohungarumlaut -70 KPX F omacron -70 KPX F oslash -70 KPX F otilde -70 KPX F period -129 KPX F r -50 KPX F racute -50 KPX F rcaron -50 KPX F rcommaaccent -50 KPX J A -25 KPX J Aacute -25 KPX J Abreve -25 KPX J Acircumflex -25 KPX J Adieresis -25 KPX J Agrave -25 KPX J Amacron -25 KPX J Aogonek -25 KPX J Aring -25 KPX J Atilde -25 KPX J a -40 KPX J aacute -40 KPX J abreve -40 KPX J acircumflex -40 KPX J adieresis -40 KPX J agrave -40 KPX J amacron -40 KPX J aogonek -40 KPX J aring -40 KPX J atilde -40 KPX J comma -10 KPX J e -40 KPX J eacute -40 KPX J ecaron -40 KPX J ecircumflex -40 KPX J edieresis -40 KPX J edotaccent -40 KPX J egrave -40 KPX J emacron -40 KPX J eogonek -40 KPX J o -40 KPX J oacute -40 KPX J ocircumflex -40 KPX J odieresis -40 KPX J ograve -40 KPX J ohungarumlaut -40 KPX J omacron -40 KPX J oslash -40 KPX J otilde -40 KPX J period -10 KPX J u -40 KPX J uacute -40 KPX J ucircumflex -40 KPX J udieresis -40 KPX J ugrave -40 KPX J uhungarumlaut -40 KPX J umacron -40 KPX J uogonek -40 KPX J uring -40 KPX K O -30 KPX K Oacute -30 KPX K Ocircumflex -30 KPX K Odieresis -30 KPX K Ograve -30 KPX K Ohungarumlaut -30 KPX K Omacron -30 KPX K Oslash -30 KPX K Otilde -30 KPX K e -25 KPX K eacute -25 KPX K ecaron -25 KPX K ecircumflex -25 KPX K edieresis -25 KPX K edotaccent -25 KPX K egrave -25 KPX K emacron -25 KPX K eogonek -25 KPX K o -25 KPX K oacute -25 KPX K ocircumflex -25 KPX K odieresis -25 KPX K ograve -25 KPX K ohungarumlaut -25 KPX K omacron -25 KPX K oslash -25 KPX K otilde -25 KPX K u -20 KPX K uacute -20 KPX K ucircumflex -20 KPX K udieresis -20 KPX K ugrave -20 KPX K uhungarumlaut -20 KPX K umacron -20 KPX K uogonek -20 KPX K uring -20 KPX K y -20 KPX K yacute -20 KPX K ydieresis -20 KPX Kcommaaccent O -30 KPX Kcommaaccent Oacute -30 KPX Kcommaaccent Ocircumflex -30 KPX Kcommaaccent Odieresis -30 KPX Kcommaaccent Ograve -30 KPX Kcommaaccent Ohungarumlaut -30 KPX Kcommaaccent Omacron -30 KPX Kcommaaccent Oslash -30 KPX Kcommaaccent Otilde -30 KPX Kcommaaccent e -25 KPX Kcommaaccent eacute -25 KPX Kcommaaccent ecaron -25 KPX Kcommaaccent ecircumflex -25 KPX Kcommaaccent edieresis -25 KPX Kcommaaccent edotaccent -25 KPX Kcommaaccent egrave -25 KPX Kcommaaccent emacron -25 KPX Kcommaaccent eogonek -25 KPX Kcommaaccent o -25 KPX Kcommaaccent oacute -25 KPX Kcommaaccent ocircumflex -25 KPX Kcommaaccent odieresis -25 KPX Kcommaaccent ograve -25 KPX Kcommaaccent ohungarumlaut -25 KPX Kcommaaccent omacron -25 KPX Kcommaaccent oslash -25 KPX Kcommaaccent otilde -25 KPX Kcommaaccent u -20 KPX Kcommaaccent uacute -20 KPX Kcommaaccent ucircumflex -20 KPX Kcommaaccent udieresis -20 KPX Kcommaaccent ugrave -20 KPX Kcommaaccent uhungarumlaut -20 KPX Kcommaaccent umacron -20 KPX Kcommaaccent uogonek -20 KPX Kcommaaccent uring -20 KPX Kcommaaccent y -20 KPX Kcommaaccent yacute -20 KPX Kcommaaccent ydieresis -20 KPX L T -18 KPX L Tcaron -18 KPX L Tcommaaccent -18 KPX L V -37 KPX L W -37 KPX L Y -37 KPX L Yacute -37 KPX L Ydieresis -37 KPX L quoteright -55 KPX L y -37 KPX L yacute -37 KPX L ydieresis -37 KPX Lacute T -18 KPX Lacute Tcaron -18 KPX Lacute Tcommaaccent -18 KPX Lacute V -37 KPX Lacute W -37 KPX Lacute Y -37 KPX Lacute Yacute -37 KPX Lacute Ydieresis -37 KPX Lacute quoteright -55 KPX Lacute y -37 KPX Lacute yacute -37 KPX Lacute ydieresis -37 KPX Lcommaaccent T -18 KPX Lcommaaccent Tcaron -18 KPX Lcommaaccent Tcommaaccent -18 KPX Lcommaaccent V -37 KPX Lcommaaccent W -37 KPX Lcommaaccent Y -37 KPX Lcommaaccent Yacute -37 KPX Lcommaaccent Ydieresis -37 KPX Lcommaaccent quoteright -55 KPX Lcommaaccent y -37 KPX Lcommaaccent yacute -37 KPX Lcommaaccent ydieresis -37 KPX Lslash T -18 KPX Lslash Tcaron -18 KPX Lslash Tcommaaccent -18 KPX Lslash V -37 KPX Lslash W -37 KPX Lslash Y -37 KPX Lslash Yacute -37 KPX Lslash Ydieresis -37 KPX Lslash quoteright -55 KPX Lslash y -37 KPX Lslash yacute -37 KPX Lslash ydieresis -37 KPX N A -30 KPX N Aacute -30 KPX N Abreve -30 KPX N Acircumflex -30 KPX N Adieresis -30 KPX N Agrave -30 KPX N Amacron -30 KPX N Aogonek -30 KPX N Aring -30 KPX N Atilde -30 KPX Nacute A -30 KPX Nacute Aacute -30 KPX Nacute Abreve -30 KPX Nacute Acircumflex -30 KPX Nacute Adieresis -30 KPX Nacute Agrave -30 KPX Nacute Amacron -30 KPX Nacute Aogonek -30 KPX Nacute Aring -30 KPX Nacute Atilde -30 KPX Ncaron A -30 KPX Ncaron Aacute -30 KPX Ncaron Abreve -30 KPX Ncaron Acircumflex -30 KPX Ncaron Adieresis -30 KPX Ncaron Agrave -30 KPX Ncaron Amacron -30 KPX Ncaron Aogonek -30 KPX Ncaron Aring -30 KPX Ncaron Atilde -30 KPX Ncommaaccent A -30 KPX Ncommaaccent Aacute -30 KPX Ncommaaccent Abreve -30 KPX Ncommaaccent Acircumflex -30 KPX Ncommaaccent Adieresis -30 KPX Ncommaaccent Agrave -30 KPX Ncommaaccent Amacron -30 KPX Ncommaaccent Aogonek -30 KPX Ncommaaccent Aring -30 KPX Ncommaaccent Atilde -30 KPX Ntilde A -30 KPX Ntilde Aacute -30 KPX Ntilde Abreve -30 KPX Ntilde Acircumflex -30 KPX Ntilde Adieresis -30 KPX Ntilde Agrave -30 KPX Ntilde Amacron -30 KPX Ntilde Aogonek -30 KPX Ntilde Aring -30 KPX Ntilde Atilde -30 KPX O A -40 KPX O Aacute -40 KPX O Abreve -40 KPX O Acircumflex -40 KPX O Adieresis -40 KPX O Agrave -40 KPX O Amacron -40 KPX O Aogonek -40 KPX O Aring -40 KPX O Atilde -40 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -50 KPX O X -40 KPX O Y -50 KPX O Yacute -50 KPX O Ydieresis -50 KPX Oacute A -40 KPX Oacute Aacute -40 KPX Oacute Abreve -40 KPX Oacute Acircumflex -40 KPX Oacute Adieresis -40 KPX Oacute Agrave -40 KPX Oacute Amacron -40 KPX Oacute Aogonek -40 KPX Oacute Aring -40 KPX Oacute Atilde -40 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -50 KPX Oacute X -40 KPX Oacute Y -50 KPX Oacute Yacute -50 KPX Oacute Ydieresis -50 KPX Ocircumflex A -40 KPX Ocircumflex Aacute -40 KPX Ocircumflex Abreve -40 KPX Ocircumflex Acircumflex -40 KPX Ocircumflex Adieresis -40 KPX Ocircumflex Agrave -40 KPX Ocircumflex Amacron -40 KPX Ocircumflex Aogonek -40 KPX Ocircumflex Aring -40 KPX Ocircumflex Atilde -40 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -50 KPX Ocircumflex X -40 KPX Ocircumflex Y -50 KPX Ocircumflex Yacute -50 KPX Ocircumflex Ydieresis -50 KPX Odieresis A -40 KPX Odieresis Aacute -40 KPX Odieresis Abreve -40 KPX Odieresis Acircumflex -40 KPX Odieresis Adieresis -40 KPX Odieresis Agrave -40 KPX Odieresis Amacron -40 KPX Odieresis Aogonek -40 KPX Odieresis Aring -40 KPX Odieresis Atilde -40 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -50 KPX Odieresis X -40 KPX Odieresis Y -50 KPX Odieresis Yacute -50 KPX Odieresis Ydieresis -50 KPX Ograve A -40 KPX Ograve Aacute -40 KPX Ograve Abreve -40 KPX Ograve Acircumflex -40 KPX Ograve Adieresis -40 KPX Ograve Agrave -40 KPX Ograve Amacron -40 KPX Ograve Aogonek -40 KPX Ograve Aring -40 KPX Ograve Atilde -40 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -50 KPX Ograve X -40 KPX Ograve Y -50 KPX Ograve Yacute -50 KPX Ograve Ydieresis -50 KPX Ohungarumlaut A -40 KPX Ohungarumlaut Aacute -40 KPX Ohungarumlaut Abreve -40 KPX Ohungarumlaut Acircumflex -40 KPX Ohungarumlaut Adieresis -40 KPX Ohungarumlaut Agrave -40 KPX Ohungarumlaut Amacron -40 KPX Ohungarumlaut Aogonek -40 KPX Ohungarumlaut Aring -40 KPX Ohungarumlaut Atilde -40 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -50 KPX Ohungarumlaut X -40 KPX Ohungarumlaut Y -50 KPX Ohungarumlaut Yacute -50 KPX Ohungarumlaut Ydieresis -50 KPX Omacron A -40 KPX Omacron Aacute -40 KPX Omacron Abreve -40 KPX Omacron Acircumflex -40 KPX Omacron Adieresis -40 KPX Omacron Agrave -40 KPX Omacron Amacron -40 KPX Omacron Aogonek -40 KPX Omacron Aring -40 KPX Omacron Atilde -40 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -50 KPX Omacron X -40 KPX Omacron Y -50 KPX Omacron Yacute -50 KPX Omacron Ydieresis -50 KPX Oslash A -40 KPX Oslash Aacute -40 KPX Oslash Abreve -40 KPX Oslash Acircumflex -40 KPX Oslash Adieresis -40 KPX Oslash Agrave -40 KPX Oslash Amacron -40 KPX Oslash Aogonek -40 KPX Oslash Aring -40 KPX Oslash Atilde -40 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -50 KPX Oslash X -40 KPX Oslash Y -50 KPX Oslash Yacute -50 KPX Oslash Ydieresis -50 KPX Otilde A -40 KPX Otilde Aacute -40 KPX Otilde Abreve -40 KPX Otilde Acircumflex -40 KPX Otilde Adieresis -40 KPX Otilde Agrave -40 KPX Otilde Amacron -40 KPX Otilde Aogonek -40 KPX Otilde Aring -40 KPX Otilde Atilde -40 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -50 KPX Otilde X -40 KPX Otilde Y -50 KPX Otilde Yacute -50 KPX Otilde Ydieresis -50 KPX P A -85 KPX P Aacute -85 KPX P Abreve -85 KPX P Acircumflex -85 KPX P Adieresis -85 KPX P Agrave -85 KPX P Amacron -85 KPX P Aogonek -85 KPX P Aring -85 KPX P Atilde -85 KPX P a -40 KPX P aacute -40 KPX P abreve -40 KPX P acircumflex -40 KPX P adieresis -40 KPX P agrave -40 KPX P amacron -40 KPX P aogonek -40 KPX P aring -40 KPX P atilde -40 KPX P comma -129 KPX P e -50 KPX P eacute -50 KPX P ecaron -50 KPX P ecircumflex -50 KPX P edieresis -50 KPX P edotaccent -50 KPX P egrave -50 KPX P emacron -50 KPX P eogonek -50 KPX P o -55 KPX P oacute -55 KPX P ocircumflex -55 KPX P odieresis -55 KPX P ograve -55 KPX P ohungarumlaut -55 KPX P omacron -55 KPX P oslash -55 KPX P otilde -55 KPX P period -129 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R O -40 KPX R Oacute -40 KPX R Ocircumflex -40 KPX R Odieresis -40 KPX R Ograve -40 KPX R Ohungarumlaut -40 KPX R Omacron -40 KPX R Oslash -40 KPX R Otilde -40 KPX R T -30 KPX R Tcaron -30 KPX R Tcommaaccent -30 KPX R U -40 KPX R Uacute -40 KPX R Ucircumflex -40 KPX R Udieresis -40 KPX R Ugrave -40 KPX R Uhungarumlaut -40 KPX R Umacron -40 KPX R Uogonek -40 KPX R Uring -40 KPX R V -18 KPX R W -18 KPX R Y -18 KPX R Yacute -18 KPX R Ydieresis -18 KPX Racute O -40 KPX Racute Oacute -40 KPX Racute Ocircumflex -40 KPX Racute Odieresis -40 KPX Racute Ograve -40 KPX Racute Ohungarumlaut -40 KPX Racute Omacron -40 KPX Racute Oslash -40 KPX Racute Otilde -40 KPX Racute T -30 KPX Racute Tcaron -30 KPX Racute Tcommaaccent -30 KPX Racute U -40 KPX Racute Uacute -40 KPX Racute Ucircumflex -40 KPX Racute Udieresis -40 KPX Racute Ugrave -40 KPX Racute Uhungarumlaut -40 KPX Racute Umacron -40 KPX Racute Uogonek -40 KPX Racute Uring -40 KPX Racute V -18 KPX Racute W -18 KPX Racute Y -18 KPX Racute Yacute -18 KPX Racute Ydieresis -18 KPX Rcaron O -40 KPX Rcaron Oacute -40 KPX Rcaron Ocircumflex -40 KPX Rcaron Odieresis -40 KPX Rcaron Ograve -40 KPX Rcaron Ohungarumlaut -40 KPX Rcaron Omacron -40 KPX Rcaron Oslash -40 KPX Rcaron Otilde -40 KPX Rcaron T -30 KPX Rcaron Tcaron -30 KPX Rcaron Tcommaaccent -30 KPX Rcaron U -40 KPX Rcaron Uacute -40 KPX Rcaron Ucircumflex -40 KPX Rcaron Udieresis -40 KPX Rcaron Ugrave -40 KPX Rcaron Uhungarumlaut -40 KPX Rcaron Umacron -40 KPX Rcaron Uogonek -40 KPX Rcaron Uring -40 KPX Rcaron V -18 KPX Rcaron W -18 KPX Rcaron Y -18 KPX Rcaron Yacute -18 KPX Rcaron Ydieresis -18 KPX Rcommaaccent O -40 KPX Rcommaaccent Oacute -40 KPX Rcommaaccent Ocircumflex -40 KPX Rcommaaccent Odieresis -40 KPX Rcommaaccent Ograve -40 KPX Rcommaaccent Ohungarumlaut -40 KPX Rcommaaccent Omacron -40 KPX Rcommaaccent Oslash -40 KPX Rcommaaccent Otilde -40 KPX Rcommaaccent T -30 KPX Rcommaaccent Tcaron -30 KPX Rcommaaccent Tcommaaccent -30 KPX Rcommaaccent U -40 KPX Rcommaaccent Uacute -40 KPX Rcommaaccent Ucircumflex -40 KPX Rcommaaccent Udieresis -40 KPX Rcommaaccent Ugrave -40 KPX Rcommaaccent Uhungarumlaut -40 KPX Rcommaaccent Umacron -40 KPX Rcommaaccent Uogonek -40 KPX Rcommaaccent Uring -40 KPX Rcommaaccent V -18 KPX Rcommaaccent W -18 KPX Rcommaaccent Y -18 KPX Rcommaaccent Yacute -18 KPX Rcommaaccent Ydieresis -18 KPX T A -55 KPX T Aacute -55 KPX T Abreve -55 KPX T Acircumflex -55 KPX T Adieresis -55 KPX T Agrave -55 KPX T Amacron -55 KPX T Aogonek -55 KPX T Aring -55 KPX T Atilde -55 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -92 KPX T aacute -92 KPX T abreve -92 KPX T acircumflex -92 KPX T adieresis -92 KPX T agrave -92 KPX T amacron -92 KPX T aogonek -92 KPX T aring -92 KPX T atilde -92 KPX T colon -74 KPX T comma -92 KPX T e -92 KPX T eacute -92 KPX T ecaron -92 KPX T ecircumflex -92 KPX T edieresis -52 KPX T edotaccent -92 KPX T egrave -52 KPX T emacron -52 KPX T eogonek -92 KPX T hyphen -92 KPX T i -37 KPX T iacute -37 KPX T iogonek -37 KPX T o -95 KPX T oacute -95 KPX T ocircumflex -95 KPX T odieresis -95 KPX T ograve -95 KPX T ohungarumlaut -95 KPX T omacron -95 KPX T oslash -95 KPX T otilde -95 KPX T period -92 KPX T r -37 KPX T racute -37 KPX T rcaron -37 KPX T rcommaaccent -37 KPX T semicolon -74 KPX T u -37 KPX T uacute -37 KPX T ucircumflex -37 KPX T udieresis -37 KPX T ugrave -37 KPX T uhungarumlaut -37 KPX T umacron -37 KPX T uogonek -37 KPX T uring -37 KPX T w -37 KPX T y -37 KPX T yacute -37 KPX T ydieresis -37 KPX Tcaron A -55 KPX Tcaron Aacute -55 KPX Tcaron Abreve -55 KPX Tcaron Acircumflex -55 KPX Tcaron Adieresis -55 KPX Tcaron Agrave -55 KPX Tcaron Amacron -55 KPX Tcaron Aogonek -55 KPX Tcaron Aring -55 KPX Tcaron Atilde -55 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -92 KPX Tcaron aacute -92 KPX Tcaron abreve -92 KPX Tcaron acircumflex -92 KPX Tcaron adieresis -92 KPX Tcaron agrave -92 KPX Tcaron amacron -92 KPX Tcaron aogonek -92 KPX Tcaron aring -92 KPX Tcaron atilde -92 KPX Tcaron colon -74 KPX Tcaron comma -92 KPX Tcaron e -92 KPX Tcaron eacute -92 KPX Tcaron ecaron -92 KPX Tcaron ecircumflex -92 KPX Tcaron edieresis -52 KPX Tcaron edotaccent -92 KPX Tcaron egrave -52 KPX Tcaron emacron -52 KPX Tcaron eogonek -92 KPX Tcaron hyphen -92 KPX Tcaron i -37 KPX Tcaron iacute -37 KPX Tcaron iogonek -37 KPX Tcaron o -95 KPX Tcaron oacute -95 KPX Tcaron ocircumflex -95 KPX Tcaron odieresis -95 KPX Tcaron ograve -95 KPX Tcaron ohungarumlaut -95 KPX Tcaron omacron -95 KPX Tcaron oslash -95 KPX Tcaron otilde -95 KPX Tcaron period -92 KPX Tcaron r -37 KPX Tcaron racute -37 KPX Tcaron rcaron -37 KPX Tcaron rcommaaccent -37 KPX Tcaron semicolon -74 KPX Tcaron u -37 KPX Tcaron uacute -37 KPX Tcaron ucircumflex -37 KPX Tcaron udieresis -37 KPX Tcaron ugrave -37 KPX Tcaron uhungarumlaut -37 KPX Tcaron umacron -37 KPX Tcaron uogonek -37 KPX Tcaron uring -37 KPX Tcaron w -37 KPX Tcaron y -37 KPX Tcaron yacute -37 KPX Tcaron ydieresis -37 KPX Tcommaaccent A -55 KPX Tcommaaccent Aacute -55 KPX Tcommaaccent Abreve -55 KPX Tcommaaccent Acircumflex -55 KPX Tcommaaccent Adieresis -55 KPX Tcommaaccent Agrave -55 KPX Tcommaaccent Amacron -55 KPX Tcommaaccent Aogonek -55 KPX Tcommaaccent Aring -55 KPX Tcommaaccent Atilde -55 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -92 KPX Tcommaaccent aacute -92 KPX Tcommaaccent abreve -92 KPX Tcommaaccent acircumflex -92 KPX Tcommaaccent adieresis -92 KPX Tcommaaccent agrave -92 KPX Tcommaaccent amacron -92 KPX Tcommaaccent aogonek -92 KPX Tcommaaccent aring -92 KPX Tcommaaccent atilde -92 KPX Tcommaaccent colon -74 KPX Tcommaaccent comma -92 KPX Tcommaaccent e -92 KPX Tcommaaccent eacute -92 KPX Tcommaaccent ecaron -92 KPX Tcommaaccent ecircumflex -92 KPX Tcommaaccent edieresis -52 KPX Tcommaaccent edotaccent -92 KPX Tcommaaccent egrave -52 KPX Tcommaaccent emacron -52 KPX Tcommaaccent eogonek -92 KPX Tcommaaccent hyphen -92 KPX Tcommaaccent i -37 KPX Tcommaaccent iacute -37 KPX Tcommaaccent iogonek -37 KPX Tcommaaccent o -95 KPX Tcommaaccent oacute -95 KPX Tcommaaccent ocircumflex -95 KPX Tcommaaccent odieresis -95 KPX Tcommaaccent ograve -95 KPX Tcommaaccent ohungarumlaut -95 KPX Tcommaaccent omacron -95 KPX Tcommaaccent oslash -95 KPX Tcommaaccent otilde -95 KPX Tcommaaccent period -92 KPX Tcommaaccent r -37 KPX Tcommaaccent racute -37 KPX Tcommaaccent rcaron -37 KPX Tcommaaccent rcommaaccent -37 KPX Tcommaaccent semicolon -74 KPX Tcommaaccent u -37 KPX Tcommaaccent uacute -37 KPX Tcommaaccent ucircumflex -37 KPX Tcommaaccent udieresis -37 KPX Tcommaaccent ugrave -37 KPX Tcommaaccent uhungarumlaut -37 KPX Tcommaaccent umacron -37 KPX Tcommaaccent uogonek -37 KPX Tcommaaccent uring -37 KPX Tcommaaccent w -37 KPX Tcommaaccent y -37 KPX Tcommaaccent yacute -37 KPX Tcommaaccent ydieresis -37 KPX U A -45 KPX U Aacute -45 KPX U Abreve -45 KPX U Acircumflex -45 KPX U Adieresis -45 KPX U Agrave -45 KPX U Amacron -45 KPX U Aogonek -45 KPX U Aring -45 KPX U Atilde -45 KPX Uacute A -45 KPX Uacute Aacute -45 KPX Uacute Abreve -45 KPX Uacute Acircumflex -45 KPX Uacute Adieresis -45 KPX Uacute Agrave -45 KPX Uacute Amacron -45 KPX Uacute Aogonek -45 KPX Uacute Aring -45 KPX Uacute Atilde -45 KPX Ucircumflex A -45 KPX Ucircumflex Aacute -45 KPX Ucircumflex Abreve -45 KPX Ucircumflex Acircumflex -45 KPX Ucircumflex Adieresis -45 KPX Ucircumflex Agrave -45 KPX Ucircumflex Amacron -45 KPX Ucircumflex Aogonek -45 KPX Ucircumflex Aring -45 KPX Ucircumflex Atilde -45 KPX Udieresis A -45 KPX Udieresis Aacute -45 KPX Udieresis Abreve -45 KPX Udieresis Acircumflex -45 KPX Udieresis Adieresis -45 KPX Udieresis Agrave -45 KPX Udieresis Amacron -45 KPX Udieresis Aogonek -45 KPX Udieresis Aring -45 KPX Udieresis Atilde -45 KPX Ugrave A -45 KPX Ugrave Aacute -45 KPX Ugrave Abreve -45 KPX Ugrave Acircumflex -45 KPX Ugrave Adieresis -45 KPX Ugrave Agrave -45 KPX Ugrave Amacron -45 KPX Ugrave Aogonek -45 KPX Ugrave Aring -45 KPX Ugrave Atilde -45 KPX Uhungarumlaut A -45 KPX Uhungarumlaut Aacute -45 KPX Uhungarumlaut Abreve -45 KPX Uhungarumlaut Acircumflex -45 KPX Uhungarumlaut Adieresis -45 KPX Uhungarumlaut Agrave -45 KPX Uhungarumlaut Amacron -45 KPX Uhungarumlaut Aogonek -45 KPX Uhungarumlaut Aring -45 KPX Uhungarumlaut Atilde -45 KPX Umacron A -45 KPX Umacron Aacute -45 KPX Umacron Abreve -45 KPX Umacron Acircumflex -45 KPX Umacron Adieresis -45 KPX Umacron Agrave -45 KPX Umacron Amacron -45 KPX Umacron Aogonek -45 KPX Umacron Aring -45 KPX Umacron Atilde -45 KPX Uogonek A -45 KPX Uogonek Aacute -45 KPX Uogonek Abreve -45 KPX Uogonek Acircumflex -45 KPX Uogonek Adieresis -45 KPX Uogonek Agrave -45 KPX Uogonek Amacron -45 KPX Uogonek Aogonek -45 KPX Uogonek Aring -45 KPX Uogonek Atilde -45 KPX Uring A -45 KPX Uring Aacute -45 KPX Uring Abreve -45 KPX Uring Acircumflex -45 KPX Uring Adieresis -45 KPX Uring Agrave -45 KPX Uring Amacron -45 KPX Uring Aogonek -45 KPX Uring Aring -45 KPX Uring Atilde -45 KPX V A -85 KPX V Aacute -85 KPX V Abreve -85 KPX V Acircumflex -85 KPX V Adieresis -85 KPX V Agrave -85 KPX V Amacron -85 KPX V Aogonek -85 KPX V Aring -85 KPX V Atilde -85 KPX V G -10 KPX V Gbreve -10 KPX V Gcommaaccent -10 KPX V O -30 KPX V Oacute -30 KPX V Ocircumflex -30 KPX V Odieresis -30 KPX V Ograve -30 KPX V Ohungarumlaut -30 KPX V Omacron -30 KPX V Oslash -30 KPX V Otilde -30 KPX V a -111 KPX V aacute -111 KPX V abreve -111 KPX V acircumflex -111 KPX V adieresis -111 KPX V agrave -111 KPX V amacron -111 KPX V aogonek -111 KPX V aring -111 KPX V atilde -111 KPX V colon -74 KPX V comma -129 KPX V e -111 KPX V eacute -111 KPX V ecaron -111 KPX V ecircumflex -111 KPX V edieresis -71 KPX V edotaccent -111 KPX V egrave -71 KPX V emacron -71 KPX V eogonek -111 KPX V hyphen -70 KPX V i -55 KPX V iacute -55 KPX V iogonek -55 KPX V o -111 KPX V oacute -111 KPX V ocircumflex -111 KPX V odieresis -111 KPX V ograve -111 KPX V ohungarumlaut -111 KPX V omacron -111 KPX V oslash -111 KPX V otilde -111 KPX V period -129 KPX V semicolon -74 KPX V u -55 KPX V uacute -55 KPX V ucircumflex -55 KPX V udieresis -55 KPX V ugrave -55 KPX V uhungarumlaut -55 KPX V umacron -55 KPX V uogonek -55 KPX V uring -55 KPX W A -74 KPX W Aacute -74 KPX W Abreve -74 KPX W Acircumflex -74 KPX W Adieresis -74 KPX W Agrave -74 KPX W Amacron -74 KPX W Aogonek -74 KPX W Aring -74 KPX W Atilde -74 KPX W O -15 KPX W Oacute -15 KPX W Ocircumflex -15 KPX W Odieresis -15 KPX W Ograve -15 KPX W Ohungarumlaut -15 KPX W Omacron -15 KPX W Oslash -15 KPX W Otilde -15 KPX W a -85 KPX W aacute -85 KPX W abreve -85 KPX W acircumflex -85 KPX W adieresis -85 KPX W agrave -85 KPX W amacron -85 KPX W aogonek -85 KPX W aring -85 KPX W atilde -85 KPX W colon -55 KPX W comma -74 KPX W e -90 KPX W eacute -90 KPX W ecaron -90 KPX W ecircumflex -90 KPX W edieresis -50 KPX W edotaccent -90 KPX W egrave -50 KPX W emacron -50 KPX W eogonek -90 KPX W hyphen -50 KPX W i -37 KPX W iacute -37 KPX W iogonek -37 KPX W o -80 KPX W oacute -80 KPX W ocircumflex -80 KPX W odieresis -80 KPX W ograve -80 KPX W ohungarumlaut -80 KPX W omacron -80 KPX W oslash -80 KPX W otilde -80 KPX W period -74 KPX W semicolon -55 KPX W u -55 KPX W uacute -55 KPX W ucircumflex -55 KPX W udieresis -55 KPX W ugrave -55 KPX W uhungarumlaut -55 KPX W umacron -55 KPX W uogonek -55 KPX W uring -55 KPX W y -55 KPX W yacute -55 KPX W ydieresis -55 KPX Y A -74 KPX Y Aacute -74 KPX Y Abreve -74 KPX Y Acircumflex -74 KPX Y Adieresis -74 KPX Y Agrave -74 KPX Y Amacron -74 KPX Y Aogonek -74 KPX Y Aring -74 KPX Y Atilde -74 KPX Y O -25 KPX Y Oacute -25 KPX Y Ocircumflex -25 KPX Y Odieresis -25 KPX Y Ograve -25 KPX Y Ohungarumlaut -25 KPX Y Omacron -25 KPX Y Oslash -25 KPX Y Otilde -25 KPX Y a -92 KPX Y aacute -92 KPX Y abreve -92 KPX Y acircumflex -92 KPX Y adieresis -92 KPX Y agrave -92 KPX Y amacron -92 KPX Y aogonek -92 KPX Y aring -92 KPX Y atilde -92 KPX Y colon -92 KPX Y comma -92 KPX Y e -111 KPX Y eacute -111 KPX Y ecaron -111 KPX Y ecircumflex -71 KPX Y edieresis -71 KPX Y edotaccent -111 KPX Y egrave -71 KPX Y emacron -71 KPX Y eogonek -111 KPX Y hyphen -92 KPX Y i -55 KPX Y iacute -55 KPX Y iogonek -55 KPX Y o -111 KPX Y oacute -111 KPX Y ocircumflex -111 KPX Y odieresis -111 KPX Y ograve -111 KPX Y ohungarumlaut -111 KPX Y omacron -111 KPX Y oslash -111 KPX Y otilde -111 KPX Y period -74 KPX Y semicolon -92 KPX Y u -92 KPX Y uacute -92 KPX Y ucircumflex -92 KPX Y udieresis -92 KPX Y ugrave -92 KPX Y uhungarumlaut -92 KPX Y umacron -92 KPX Y uogonek -92 KPX Y uring -92 KPX Yacute A -74 KPX Yacute Aacute -74 KPX Yacute Abreve -74 KPX Yacute Acircumflex -74 KPX Yacute Adieresis -74 KPX Yacute Agrave -74 KPX Yacute Amacron -74 KPX Yacute Aogonek -74 KPX Yacute Aring -74 KPX Yacute Atilde -74 KPX Yacute O -25 KPX Yacute Oacute -25 KPX Yacute Ocircumflex -25 KPX Yacute Odieresis -25 KPX Yacute Ograve -25 KPX Yacute Ohungarumlaut -25 KPX Yacute Omacron -25 KPX Yacute Oslash -25 KPX Yacute Otilde -25 KPX Yacute a -92 KPX Yacute aacute -92 KPX Yacute abreve -92 KPX Yacute acircumflex -92 KPX Yacute adieresis -92 KPX Yacute agrave -92 KPX Yacute amacron -92 KPX Yacute aogonek -92 KPX Yacute aring -92 KPX Yacute atilde -92 KPX Yacute colon -92 KPX Yacute comma -92 KPX Yacute e -111 KPX Yacute eacute -111 KPX Yacute ecaron -111 KPX Yacute ecircumflex -71 KPX Yacute edieresis -71 KPX Yacute edotaccent -111 KPX Yacute egrave -71 KPX Yacute emacron -71 KPX Yacute eogonek -111 KPX Yacute hyphen -92 KPX Yacute i -55 KPX Yacute iacute -55 KPX Yacute iogonek -55 KPX Yacute o -111 KPX Yacute oacute -111 KPX Yacute ocircumflex -111 KPX Yacute odieresis -111 KPX Yacute ograve -111 KPX Yacute ohungarumlaut -111 KPX Yacute omacron -111 KPX Yacute oslash -111 KPX Yacute otilde -111 KPX Yacute period -74 KPX Yacute semicolon -92 KPX Yacute u -92 KPX Yacute uacute -92 KPX Yacute ucircumflex -92 KPX Yacute udieresis -92 KPX Yacute ugrave -92 KPX Yacute uhungarumlaut -92 KPX Yacute umacron -92 KPX Yacute uogonek -92 KPX Yacute uring -92 KPX Ydieresis A -74 KPX Ydieresis Aacute -74 KPX Ydieresis Abreve -74 KPX Ydieresis Acircumflex -74 KPX Ydieresis Adieresis -74 KPX Ydieresis Agrave -74 KPX Ydieresis Amacron -74 KPX Ydieresis Aogonek -74 KPX Ydieresis Aring -74 KPX Ydieresis Atilde -74 KPX Ydieresis O -25 KPX Ydieresis Oacute -25 KPX Ydieresis Ocircumflex -25 KPX Ydieresis Odieresis -25 KPX Ydieresis Ograve -25 KPX Ydieresis Ohungarumlaut -25 KPX Ydieresis Omacron -25 KPX Ydieresis Oslash -25 KPX Ydieresis Otilde -25 KPX Ydieresis a -92 KPX Ydieresis aacute -92 KPX Ydieresis abreve -92 KPX Ydieresis acircumflex -92 KPX Ydieresis adieresis -92 KPX Ydieresis agrave -92 KPX Ydieresis amacron -92 KPX Ydieresis aogonek -92 KPX Ydieresis aring -92 KPX Ydieresis atilde -92 KPX Ydieresis colon -92 KPX Ydieresis comma -92 KPX Ydieresis e -111 KPX Ydieresis eacute -111 KPX Ydieresis ecaron -111 KPX Ydieresis ecircumflex -71 KPX Ydieresis edieresis -71 KPX Ydieresis edotaccent -111 KPX Ydieresis egrave -71 KPX Ydieresis emacron -71 KPX Ydieresis eogonek -111 KPX Ydieresis hyphen -92 KPX Ydieresis i -55 KPX Ydieresis iacute -55 KPX Ydieresis iogonek -55 KPX Ydieresis o -111 KPX Ydieresis oacute -111 KPX Ydieresis ocircumflex -111 KPX Ydieresis odieresis -111 KPX Ydieresis ograve -111 KPX Ydieresis ohungarumlaut -111 KPX Ydieresis omacron -111 KPX Ydieresis oslash -111 KPX Ydieresis otilde -111 KPX Ydieresis period -74 KPX Ydieresis semicolon -92 KPX Ydieresis u -92 KPX Ydieresis uacute -92 KPX Ydieresis ucircumflex -92 KPX Ydieresis udieresis -92 KPX Ydieresis ugrave -92 KPX Ydieresis uhungarumlaut -92 KPX Ydieresis umacron -92 KPX Ydieresis uogonek -92 KPX Ydieresis uring -92 KPX b b -10 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX c h -10 KPX c k -10 KPX c kcommaaccent -10 KPX cacute h -10 KPX cacute k -10 KPX cacute kcommaaccent -10 KPX ccaron h -10 KPX ccaron k -10 KPX ccaron kcommaaccent -10 KPX ccedilla h -10 KPX ccedilla k -10 KPX ccedilla kcommaaccent -10 KPX comma quotedblright -95 KPX comma quoteright -95 KPX e b -10 KPX eacute b -10 KPX ecaron b -10 KPX ecircumflex b -10 KPX edieresis b -10 KPX edotaccent b -10 KPX egrave b -10 KPX emacron b -10 KPX eogonek b -10 KPX f comma -10 KPX f dotlessi -30 KPX f e -10 KPX f eacute -10 KPX f edotaccent -10 KPX f eogonek -10 KPX f f -18 KPX f o -10 KPX f oacute -10 KPX f ocircumflex -10 KPX f ograve -10 KPX f ohungarumlaut -10 KPX f oslash -10 KPX f otilde -10 KPX f period -10 KPX f quoteright 55 KPX k e -30 KPX k eacute -30 KPX k ecaron -30 KPX k ecircumflex -30 KPX k edieresis -30 KPX k edotaccent -30 KPX k egrave -30 KPX k emacron -30 KPX k eogonek -30 KPX k o -10 KPX k oacute -10 KPX k ocircumflex -10 KPX k odieresis -10 KPX k ograve -10 KPX k ohungarumlaut -10 KPX k omacron -10 KPX k oslash -10 KPX k otilde -10 KPX kcommaaccent e -30 KPX kcommaaccent eacute -30 KPX kcommaaccent ecaron -30 KPX kcommaaccent ecircumflex -30 KPX kcommaaccent edieresis -30 KPX kcommaaccent edotaccent -30 KPX kcommaaccent egrave -30 KPX kcommaaccent emacron -30 KPX kcommaaccent eogonek -30 KPX kcommaaccent o -10 KPX kcommaaccent oacute -10 KPX kcommaaccent ocircumflex -10 KPX kcommaaccent odieresis -10 KPX kcommaaccent ograve -10 KPX kcommaaccent ohungarumlaut -10 KPX kcommaaccent omacron -10 KPX kcommaaccent oslash -10 KPX kcommaaccent otilde -10 KPX n v -40 KPX nacute v -40 KPX ncaron v -40 KPX ncommaaccent v -40 KPX ntilde v -40 KPX o v -15 KPX o w -25 KPX o x -10 KPX o y -10 KPX o yacute -10 KPX o ydieresis -10 KPX oacute v -15 KPX oacute w -25 KPX oacute x -10 KPX oacute y -10 KPX oacute yacute -10 KPX oacute ydieresis -10 KPX ocircumflex v -15 KPX ocircumflex w -25 KPX ocircumflex x -10 KPX ocircumflex y -10 KPX ocircumflex yacute -10 KPX ocircumflex ydieresis -10 KPX odieresis v -15 KPX odieresis w -25 KPX odieresis x -10 KPX odieresis y -10 KPX odieresis yacute -10 KPX odieresis ydieresis -10 KPX ograve v -15 KPX ograve w -25 KPX ograve x -10 KPX ograve y -10 KPX ograve yacute -10 KPX ograve ydieresis -10 KPX ohungarumlaut v -15 KPX ohungarumlaut w -25 KPX ohungarumlaut x -10 KPX ohungarumlaut y -10 KPX ohungarumlaut yacute -10 KPX ohungarumlaut ydieresis -10 KPX omacron v -15 KPX omacron w -25 KPX omacron x -10 KPX omacron y -10 KPX omacron yacute -10 KPX omacron ydieresis -10 KPX oslash v -15 KPX oslash w -25 KPX oslash x -10 KPX oslash y -10 KPX oslash yacute -10 KPX oslash ydieresis -10 KPX otilde v -15 KPX otilde w -25 KPX otilde x -10 KPX otilde y -10 KPX otilde yacute -10 KPX otilde ydieresis -10 KPX period quotedblright -95 KPX period quoteright -95 KPX quoteleft quoteleft -74 KPX quoteright d -15 KPX quoteright dcroat -15 KPX quoteright quoteright -74 KPX quoteright r -15 KPX quoteright racute -15 KPX quoteright rcaron -15 KPX quoteright rcommaaccent -15 KPX quoteright s -74 KPX quoteright sacute -74 KPX quoteright scaron -74 KPX quoteright scedilla -74 KPX quoteright scommaaccent -74 KPX quoteright space -74 KPX quoteright t -37 KPX quoteright tcommaaccent -37 KPX quoteright v -15 KPX r comma -65 KPX r period -65 KPX racute comma -65 KPX racute period -65 KPX rcaron comma -65 KPX rcaron period -65 KPX rcommaaccent comma -65 KPX rcommaaccent period -65 KPX space A -37 KPX space Aacute -37 KPX space Abreve -37 KPX space Acircumflex -37 KPX space Adieresis -37 KPX space Agrave -37 KPX space Amacron -37 KPX space Aogonek -37 KPX space Aring -37 KPX space Atilde -37 KPX space V -70 KPX space W -70 KPX space Y -70 KPX space Yacute -70 KPX space Ydieresis -70 KPX v comma -37 KPX v e -15 KPX v eacute -15 KPX v ecaron -15 KPX v ecircumflex -15 KPX v edieresis -15 KPX v edotaccent -15 KPX v egrave -15 KPX v emacron -15 KPX v eogonek -15 KPX v o -15 KPX v oacute -15 KPX v ocircumflex -15 KPX v odieresis -15 KPX v ograve -15 KPX v ohungarumlaut -15 KPX v omacron -15 KPX v oslash -15 KPX v otilde -15 KPX v period -37 KPX w a -10 KPX w aacute -10 KPX w abreve -10 KPX w acircumflex -10 KPX w adieresis -10 KPX w agrave -10 KPX w amacron -10 KPX w aogonek -10 KPX w aring -10 KPX w atilde -10 KPX w comma -37 KPX w e -10 KPX w eacute -10 KPX w ecaron -10 KPX w ecircumflex -10 KPX w edieresis -10 KPX w edotaccent -10 KPX w egrave -10 KPX w emacron -10 KPX w eogonek -10 KPX w o -15 KPX w oacute -15 KPX w ocircumflex -15 KPX w odieresis -15 KPX w ograve -15 KPX w ohungarumlaut -15 KPX w omacron -15 KPX w oslash -15 KPX w otilde -15 KPX w period -37 KPX x e -10 KPX x eacute -10 KPX x ecaron -10 KPX x ecircumflex -10 KPX x edieresis -10 KPX x edotaccent -10 KPX x egrave -10 KPX x emacron -10 KPX x eogonek -10 KPX y comma -37 KPX y period -37 KPX yacute comma -37 KPX yacute period -37 KPX ydieresis comma -37 KPX ydieresis period -37 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Helvetica.afm0000644000222100022210000022562514541067540015303 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:38:23 1997 Comment PH added entry for Euro character, copied from a different version, 19 July 2009. Comment PH added additional characters (after Euro) 18 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43054 Comment VMusage 37069 48094 FontName Helvetica FullName Helvetica FamilyName Helvetica Weight Medium ItalicAngle 0 IsFixedPitch false FontBBox -166 -225 1000 931 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 718 XHeight 523 Ascender 718 Descender -207 StdHW 76 StdVW 88 StartCharMetrics 361 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 278 ; N exclam ; B 90 0 187 718 ; C 34 ; WX 355 ; N quotedbl ; B 70 463 285 718 ; C 35 ; WX 556 ; N numbersign ; B 28 0 529 688 ; C 36 ; WX 556 ; N dollar ; B 32 -115 520 775 ; C 37 ; WX 889 ; N percent ; B 39 -19 850 703 ; C 38 ; WX 667 ; N ampersand ; B 44 -15 645 718 ; C 39 ; WX 222 ; N quoteright ; B 53 463 157 718 ; C 40 ; WX 333 ; N parenleft ; B 68 -207 299 733 ; C 41 ; WX 333 ; N parenright ; B 34 -207 265 733 ; C 42 ; WX 389 ; N asterisk ; B 39 431 349 718 ; C 43 ; WX 584 ; N plus ; B 39 0 545 505 ; C 44 ; WX 278 ; N comma ; B 87 -147 191 106 ; C 45 ; WX 333 ; N hyphen ; B 44 232 289 322 ; C 46 ; WX 278 ; N period ; B 87 0 191 106 ; C 47 ; WX 278 ; N slash ; B -17 -19 295 737 ; C 48 ; WX 556 ; N zero ; B 37 -19 519 703 ; C 49 ; WX 556 ; N one ; B 101 0 359 703 ; C 50 ; WX 556 ; N two ; B 26 0 507 703 ; C 51 ; WX 556 ; N three ; B 34 -19 522 703 ; C 52 ; WX 556 ; N four ; B 25 0 523 703 ; C 53 ; WX 556 ; N five ; B 32 -19 514 688 ; C 54 ; WX 556 ; N six ; B 38 -19 518 703 ; C 55 ; WX 556 ; N seven ; B 37 0 523 688 ; C 56 ; WX 556 ; N eight ; B 38 -19 517 703 ; C 57 ; WX 556 ; N nine ; B 42 -19 514 703 ; C 58 ; WX 278 ; N colon ; B 87 0 191 516 ; C 59 ; WX 278 ; N semicolon ; B 87 -147 191 516 ; C 60 ; WX 584 ; N less ; B 48 11 536 495 ; C 61 ; WX 584 ; N equal ; B 39 115 545 390 ; C 62 ; WX 584 ; N greater ; B 48 11 536 495 ; C 63 ; WX 556 ; N question ; B 56 0 492 727 ; C 64 ; WX 1015 ; N at ; B 147 -19 868 737 ; C 65 ; WX 667 ; N A ; B 14 0 654 718 ; C 66 ; WX 667 ; N B ; B 74 0 627 718 ; C 67 ; WX 722 ; N C ; B 44 -19 681 737 ; C 68 ; WX 722 ; N D ; B 81 0 674 718 ; C 69 ; WX 667 ; N E ; B 86 0 616 718 ; C 70 ; WX 611 ; N F ; B 86 0 583 718 ; C 71 ; WX 778 ; N G ; B 48 -19 704 737 ; C 72 ; WX 722 ; N H ; B 77 0 646 718 ; C 73 ; WX 278 ; N I ; B 91 0 188 718 ; C 74 ; WX 500 ; N J ; B 17 -19 428 718 ; C 75 ; WX 667 ; N K ; B 76 0 663 718 ; C 76 ; WX 556 ; N L ; B 76 0 537 718 ; C 77 ; WX 833 ; N M ; B 73 0 761 718 ; C 78 ; WX 722 ; N N ; B 76 0 646 718 ; C 79 ; WX 778 ; N O ; B 39 -19 739 737 ; C 80 ; WX 667 ; N P ; B 86 0 622 718 ; C 81 ; WX 778 ; N Q ; B 39 -56 739 737 ; C 82 ; WX 722 ; N R ; B 88 0 684 718 ; C 83 ; WX 667 ; N S ; B 49 -19 620 737 ; C 84 ; WX 611 ; N T ; B 14 0 597 718 ; C 85 ; WX 722 ; N U ; B 79 -19 644 718 ; C 86 ; WX 667 ; N V ; B 20 0 647 718 ; C 87 ; WX 944 ; N W ; B 16 0 928 718 ; C 88 ; WX 667 ; N X ; B 19 0 648 718 ; C 89 ; WX 667 ; N Y ; B 14 0 653 718 ; C 90 ; WX 611 ; N Z ; B 23 0 588 718 ; C 91 ; WX 278 ; N bracketleft ; B 63 -196 250 722 ; C 92 ; WX 278 ; N backslash ; B -17 -19 295 737 ; C 93 ; WX 278 ; N bracketright ; B 28 -196 215 722 ; C 94 ; WX 469 ; N asciicircum ; B -14 264 483 688 ; C 95 ; WX 556 ; N underscore ; B 0 -125 556 -75 ; C 96 ; WX 222 ; N quoteleft ; B 65 470 169 725 ; C 97 ; WX 556 ; N a ; B 36 -15 530 538 ; C 98 ; WX 556 ; N b ; B 58 -15 517 718 ; C 99 ; WX 500 ; N c ; B 30 -15 477 538 ; C 100 ; WX 556 ; N d ; B 35 -15 499 718 ; C 101 ; WX 556 ; N e ; B 40 -15 516 538 ; C 102 ; WX 278 ; N f ; B 14 0 262 728 ; L i fi ; L l fl ; C 103 ; WX 556 ; N g ; B 40 -220 499 538 ; C 104 ; WX 556 ; N h ; B 65 0 491 718 ; C 105 ; WX 222 ; N i ; B 67 0 155 718 ; C 106 ; WX 222 ; N j ; B -16 -210 155 718 ; C 107 ; WX 500 ; N k ; B 67 0 501 718 ; C 108 ; WX 222 ; N l ; B 67 0 155 718 ; C 109 ; WX 833 ; N m ; B 65 0 769 538 ; C 110 ; WX 556 ; N n ; B 65 0 491 538 ; C 111 ; WX 556 ; N o ; B 35 -14 521 538 ; C 112 ; WX 556 ; N p ; B 58 -207 517 538 ; C 113 ; WX 556 ; N q ; B 35 -207 494 538 ; C 114 ; WX 333 ; N r ; B 77 0 332 538 ; C 115 ; WX 500 ; N s ; B 32 -15 464 538 ; C 116 ; WX 278 ; N t ; B 14 -7 257 669 ; C 117 ; WX 556 ; N u ; B 68 -15 489 523 ; C 118 ; WX 500 ; N v ; B 8 0 492 523 ; C 119 ; WX 722 ; N w ; B 14 0 709 523 ; C 120 ; WX 500 ; N x ; B 11 0 490 523 ; C 121 ; WX 500 ; N y ; B 11 -214 489 523 ; C 122 ; WX 500 ; N z ; B 31 0 469 523 ; C 123 ; WX 334 ; N braceleft ; B 42 -196 292 722 ; C 124 ; WX 260 ; N bar ; B 94 -225 167 775 ; C 125 ; WX 334 ; N braceright ; B 42 -196 292 722 ; C 126 ; WX 584 ; N asciitilde ; B 61 180 523 326 ; C 160 ; WX 278 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 333 ; N exclamdown ; B 118 -195 215 523 ; C 162 ; WX 556 ; N cent ; B 51 -115 513 623 ; C 163 ; WX 556 ; N sterling ; B 33 -16 539 718 ; C 164 ; WX 167 ; N fraction ; B -166 -19 333 703 ; C 165 ; WX 556 ; N yen ; B 3 0 553 688 ; C 166 ; WX 556 ; N florin ; B -11 -207 501 737 ; C 167 ; WX 556 ; N section ; B 43 -191 512 737 ; C 168 ; WX 556 ; N currency ; B 28 99 528 603 ; C 169 ; WX 191 ; N quotesingle ; B 59 463 132 718 ; C 170 ; WX 333 ; N quotedblleft ; B 38 470 307 725 ; C 171 ; WX 556 ; N guillemotleft ; B 97 108 459 446 ; C 172 ; WX 333 ; N guilsinglleft ; B 88 108 245 446 ; C 173 ; WX 333 ; N guilsinglright ; B 88 108 245 446 ; C 174 ; WX 500 ; N fi ; B 14 0 434 728 ; C 175 ; WX 500 ; N fl ; B 14 0 432 728 ; C 177 ; WX 556 ; N endash ; B 0 240 556 313 ; C 178 ; WX 556 ; N dagger ; B 43 -159 514 718 ; C 179 ; WX 556 ; N daggerdbl ; B 43 -159 514 718 ; C 180 ; WX 278 ; N periodcentered ; B 77 190 202 315 ; C 182 ; WX 537 ; N paragraph ; B 18 -173 497 718 ; C 183 ; WX 350 ; N bullet ; B 18 202 333 517 ; C 184 ; WX 222 ; N quotesinglbase ; B 53 -149 157 106 ; C 185 ; WX 333 ; N quotedblbase ; B 26 -149 295 106 ; C 186 ; WX 333 ; N quotedblright ; B 26 463 295 718 ; C 187 ; WX 556 ; N guillemotright ; B 97 108 459 446 ; C 188 ; WX 1000 ; N ellipsis ; B 115 0 885 106 ; C 189 ; WX 1000 ; N perthousand ; B 7 -19 994 703 ; C 191 ; WX 611 ; N questiondown ; B 91 -201 527 525 ; C 193 ; WX 333 ; N grave ; B 14 593 211 734 ; C 194 ; WX 333 ; N acute ; B 122 593 319 734 ; C 195 ; WX 333 ; N circumflex ; B 21 593 312 734 ; C 196 ; WX 333 ; N tilde ; B -4 606 337 722 ; C 197 ; WX 333 ; N macron ; B 10 627 323 684 ; C 198 ; WX 333 ; N breve ; B 13 595 321 731 ; C 199 ; WX 333 ; N dotaccent ; B 121 604 212 706 ; C 200 ; WX 333 ; N dieresis ; B 40 604 293 706 ; C 202 ; WX 333 ; N ring ; B 75 572 259 756 ; C 203 ; WX 333 ; N cedilla ; B 45 -225 259 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 31 593 409 734 ; C 206 ; WX 333 ; N ogonek ; B 73 -225 287 0 ; C 207 ; WX 333 ; N caron ; B 21 593 312 734 ; C 208 ; WX 1000 ; N emdash ; B 0 240 1000 313 ; C 225 ; WX 1000 ; N AE ; B 8 0 951 718 ; C 227 ; WX 370 ; N ordfeminine ; B 24 405 346 737 ; C 232 ; WX 556 ; N Lslash ; B -20 0 537 718 ; C 233 ; WX 778 ; N Oslash ; B 39 -19 740 737 ; C 234 ; WX 1000 ; N OE ; B 36 -19 965 737 ; C 235 ; WX 365 ; N ordmasculine ; B 25 405 341 737 ; C 241 ; WX 889 ; N ae ; B 36 -15 847 538 ; C 245 ; WX 278 ; N dotlessi ; B 95 0 183 523 ; C 248 ; WX 222 ; N lslash ; B -20 0 242 718 ; C 249 ; WX 611 ; N oslash ; B 28 -22 537 545 ; C 250 ; WX 944 ; N oe ; B 35 -15 902 538 ; C 251 ; WX 611 ; N germandbls ; B 67 -15 571 728 ; C -1 ; WX 278 ; N Idieresis ; B 13 0 266 901 ; C -1 ; WX 556 ; N eacute ; B 40 -15 516 734 ; C -1 ; WX 556 ; N abreve ; B 36 -15 530 731 ; C -1 ; WX 556 ; N uhungarumlaut ; B 68 -15 521 734 ; C -1 ; WX 556 ; N ecaron ; B 40 -15 516 734 ; C -1 ; WX 667 ; N Ydieresis ; B 14 0 653 901 ; C -1 ; WX 584 ; N divide ; B 39 -19 545 524 ; C -1 ; WX 667 ; N Yacute ; B 14 0 653 929 ; C -1 ; WX 667 ; N Acircumflex ; B 14 0 654 929 ; C -1 ; WX 556 ; N aacute ; B 36 -15 530 734 ; C -1 ; WX 722 ; N Ucircumflex ; B 79 -19 644 929 ; C -1 ; WX 500 ; N yacute ; B 11 -214 489 734 ; C -1 ; WX 500 ; N scommaaccent ; B 32 -225 464 538 ; C -1 ; WX 556 ; N ecircumflex ; B 40 -15 516 734 ; C -1 ; WX 722 ; N Uring ; B 79 -19 644 931 ; C -1 ; WX 722 ; N Udieresis ; B 79 -19 644 901 ; C -1 ; WX 556 ; N aogonek ; B 36 -220 547 538 ; C -1 ; WX 722 ; N Uacute ; B 79 -19 644 929 ; C -1 ; WX 556 ; N uogonek ; B 68 -225 519 523 ; C -1 ; WX 667 ; N Edieresis ; B 86 0 616 901 ; C -1 ; WX 722 ; N Dcroat ; B 0 0 674 718 ; C -1 ; WX 250 ; N commaaccent ; B 87 -225 181 -40 ; C -1 ; WX 737 ; N copyright ; B -14 -19 752 737 ; C -1 ; WX 667 ; N Emacron ; B 86 0 616 879 ; C -1 ; WX 500 ; N ccaron ; B 30 -15 477 734 ; C -1 ; WX 556 ; N aring ; B 36 -15 530 756 ; C -1 ; WX 722 ; N Ncommaaccent ; B 76 -225 646 718 ; C -1 ; WX 222 ; N lacute ; B 67 0 264 929 ; C -1 ; WX 556 ; N agrave ; B 36 -15 530 734 ; C -1 ; WX 611 ; N Tcommaaccent ; B 14 -225 597 718 ; C -1 ; WX 722 ; N Cacute ; B 44 -19 681 929 ; C -1 ; WX 556 ; N atilde ; B 36 -15 530 722 ; C -1 ; WX 667 ; N Edotaccent ; B 86 0 616 901 ; C -1 ; WX 500 ; N scaron ; B 32 -15 464 734 ; C -1 ; WX 500 ; N scedilla ; B 32 -225 464 538 ; C -1 ; WX 278 ; N iacute ; B 95 0 292 734 ; C -1 ; WX 471 ; N lozenge ; B 10 0 462 728 ; C -1 ; WX 722 ; N Rcaron ; B 88 0 684 929 ; C -1 ; WX 778 ; N Gcommaaccent ; B 48 -225 704 737 ; C -1 ; WX 556 ; N ucircumflex ; B 68 -15 489 734 ; C -1 ; WX 556 ; N acircumflex ; B 36 -15 530 734 ; C -1 ; WX 667 ; N Amacron ; B 14 0 654 879 ; C -1 ; WX 333 ; N rcaron ; B 61 0 352 734 ; C -1 ; WX 500 ; N ccedilla ; B 30 -225 477 538 ; C -1 ; WX 611 ; N Zdotaccent ; B 23 0 588 901 ; C -1 ; WX 667 ; N Thorn ; B 86 0 622 718 ; C -1 ; WX 778 ; N Omacron ; B 39 -19 739 879 ; C -1 ; WX 722 ; N Racute ; B 88 0 684 929 ; C -1 ; WX 667 ; N Sacute ; B 49 -19 620 929 ; C -1 ; WX 643 ; N dcaron ; B 35 -15 655 718 ; C -1 ; WX 722 ; N Umacron ; B 79 -19 644 879 ; C -1 ; WX 556 ; N uring ; B 68 -15 489 756 ; C -1 ; WX 333 ; N threesuperior ; B 5 270 325 703 ; C -1 ; WX 778 ; N Ograve ; B 39 -19 739 929 ; C -1 ; WX 667 ; N Agrave ; B 14 0 654 929 ; C -1 ; WX 667 ; N Abreve ; B 14 0 654 926 ; C -1 ; WX 584 ; N multiply ; B 39 0 545 506 ; C -1 ; WX 556 ; N uacute ; B 68 -15 489 734 ; C -1 ; WX 611 ; N Tcaron ; B 14 0 597 929 ; C -1 ; WX 476 ; N partialdiff ; B 13 -38 463 714 ; C -1 ; WX 500 ; N ydieresis ; B 11 -214 489 706 ; C -1 ; WX 722 ; N Nacute ; B 76 0 646 929 ; C -1 ; WX 278 ; N icircumflex ; B -6 0 285 734 ; C -1 ; WX 667 ; N Ecircumflex ; B 86 0 616 929 ; C -1 ; WX 556 ; N adieresis ; B 36 -15 530 706 ; C -1 ; WX 556 ; N edieresis ; B 40 -15 516 706 ; C -1 ; WX 500 ; N cacute ; B 30 -15 477 734 ; C -1 ; WX 556 ; N nacute ; B 65 0 491 734 ; C -1 ; WX 556 ; N umacron ; B 68 -15 489 684 ; C -1 ; WX 722 ; N Ncaron ; B 76 0 646 929 ; C -1 ; WX 278 ; N Iacute ; B 91 0 292 929 ; C -1 ; WX 584 ; N plusminus ; B 39 0 545 506 ; C -1 ; WX 260 ; N brokenbar ; B 94 -150 167 700 ; C -1 ; WX 737 ; N registered ; B -14 -19 752 737 ; C -1 ; WX 778 ; N Gbreve ; B 48 -19 704 926 ; C -1 ; WX 278 ; N Idotaccent ; B 91 0 188 901 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 667 ; N Egrave ; B 86 0 616 929 ; C -1 ; WX 333 ; N racute ; B 77 0 332 734 ; C -1 ; WX 556 ; N omacron ; B 35 -14 521 684 ; C -1 ; WX 611 ; N Zacute ; B 23 0 588 929 ; C -1 ; WX 611 ; N Zcaron ; B 23 0 588 929 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 674 ; C -1 ; WX 722 ; N Eth ; B 0 0 674 718 ; C -1 ; WX 722 ; N Ccedilla ; B 44 -225 681 737 ; C -1 ; WX 222 ; N lcommaaccent ; B 67 -225 167 718 ; C -1 ; WX 317 ; N tcaron ; B 14 -7 329 808 ; C -1 ; WX 556 ; N eogonek ; B 40 -225 516 538 ; C -1 ; WX 722 ; N Uogonek ; B 79 -225 644 718 ; C -1 ; WX 667 ; N Aacute ; B 14 0 654 929 ; C -1 ; WX 667 ; N Adieresis ; B 14 0 654 901 ; C -1 ; WX 556 ; N egrave ; B 40 -15 516 734 ; C -1 ; WX 500 ; N zacute ; B 31 0 469 734 ; C -1 ; WX 222 ; N iogonek ; B -31 -225 183 718 ; C -1 ; WX 778 ; N Oacute ; B 39 -19 739 929 ; C -1 ; WX 556 ; N oacute ; B 35 -14 521 734 ; C -1 ; WX 556 ; N amacron ; B 36 -15 530 684 ; C -1 ; WX 500 ; N sacute ; B 32 -15 464 734 ; C -1 ; WX 278 ; N idieresis ; B 13 0 266 706 ; C -1 ; WX 778 ; N Ocircumflex ; B 39 -19 739 929 ; C -1 ; WX 722 ; N Ugrave ; B 79 -19 644 929 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 556 ; N thorn ; B 58 -207 517 718 ; C -1 ; WX 333 ; N twosuperior ; B 4 281 323 703 ; C -1 ; WX 778 ; N Odieresis ; B 39 -19 739 901 ; C -1 ; WX 556 ; N mu ; B 68 -207 489 523 ; C -1 ; WX 278 ; N igrave ; B -13 0 184 734 ; C -1 ; WX 556 ; N ohungarumlaut ; B 35 -14 521 734 ; C -1 ; WX 667 ; N Eogonek ; B 86 -220 633 718 ; C -1 ; WX 556 ; N dcroat ; B 35 -15 550 718 ; C -1 ; WX 834 ; N threequarters ; B 45 -19 810 703 ; C -1 ; WX 667 ; N Scedilla ; B 49 -225 620 737 ; C -1 ; WX 299 ; N lcaron ; B 67 0 311 718 ; C -1 ; WX 667 ; N Kcommaaccent ; B 76 -225 663 718 ; C -1 ; WX 556 ; N Lacute ; B 76 0 537 929 ; C -1 ; WX 1000 ; N trademark ; B 46 306 903 718 ; C -1 ; WX 556 ; N edotaccent ; B 40 -15 516 706 ; C -1 ; WX 278 ; N Igrave ; B -13 0 188 929 ; C -1 ; WX 278 ; N Imacron ; B -17 0 296 879 ; C -1 ; WX 556 ; N Lcaron ; B 76 0 537 718 ; C -1 ; WX 834 ; N onehalf ; B 43 -19 773 703 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 674 ; C -1 ; WX 556 ; N ocircumflex ; B 35 -14 521 734 ; C -1 ; WX 556 ; N ntilde ; B 65 0 491 722 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 79 -19 644 929 ; C -1 ; WX 667 ; N Eacute ; B 86 0 616 929 ; C -1 ; WX 556 ; N emacron ; B 40 -15 516 684 ; C -1 ; WX 556 ; N gbreve ; B 40 -220 499 731 ; C -1 ; WX 834 ; N onequarter ; B 73 -19 756 703 ; C -1 ; WX 667 ; N Scaron ; B 49 -19 620 929 ; C -1 ; WX 667 ; N Scommaaccent ; B 49 -225 620 737 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 39 -19 739 929 ; C -1 ; WX 400 ; N degree ; B 54 411 346 703 ; C -1 ; WX 556 ; N ograve ; B 35 -14 521 734 ; C -1 ; WX 722 ; N Ccaron ; B 44 -19 681 929 ; C -1 ; WX 556 ; N ugrave ; B 68 -15 489 734 ; C -1 ; WX 453 ; N radical ; B -4 -80 458 762 ; C -1 ; WX 722 ; N Dcaron ; B 81 0 674 929 ; C -1 ; WX 333 ; N rcommaaccent ; B 77 -225 332 538 ; C -1 ; WX 722 ; N Ntilde ; B 76 0 646 917 ; C -1 ; WX 556 ; N otilde ; B 35 -14 521 722 ; C -1 ; WX 722 ; N Rcommaaccent ; B 88 -225 684 718 ; C -1 ; WX 556 ; N Lcommaaccent ; B 76 -225 537 718 ; C -1 ; WX 667 ; N Atilde ; B 14 0 654 917 ; C -1 ; WX 667 ; N Aogonek ; B 14 -225 654 718 ; C -1 ; WX 667 ; N Aring ; B 14 0 654 931 ; C -1 ; WX 778 ; N Otilde ; B 39 -19 739 917 ; C -1 ; WX 500 ; N zdotaccent ; B 31 0 469 706 ; C -1 ; WX 667 ; N Ecaron ; B 86 0 616 929 ; C -1 ; WX 278 ; N Iogonek ; B -3 -225 211 718 ; C -1 ; WX 500 ; N kcommaaccent ; B 67 -225 501 718 ; C -1 ; WX 584 ; N minus ; B 39 216 545 289 ; C -1 ; WX 278 ; N Icircumflex ; B -6 0 285 929 ; C -1 ; WX 556 ; N ncaron ; B 65 0 491 734 ; C -1 ; WX 278 ; N tcommaaccent ; B 14 -225 257 669 ; C -1 ; WX 584 ; N logicalnot ; B 39 108 545 390 ; C -1 ; WX 556 ; N odieresis ; B 35 -14 521 706 ; C -1 ; WX 556 ; N udieresis ; B 68 -15 489 706 ; C -1 ; WX 549 ; N notequal ; B 12 -35 537 551 ; C -1 ; WX 556 ; N gcommaaccent ; B 40 -220 499 822 ; C -1 ; WX 556 ; N eth ; B 35 -15 522 737 ; C -1 ; WX 500 ; N zcaron ; B 31 0 469 734 ; C -1 ; WX 556 ; N ncommaaccent ; B 65 -225 491 538 ; C -1 ; WX 333 ; N onesuperior ; B 43 281 222 703 ; C -1 ; WX 278 ; N imacron ; B 5 0 272 684 ; C -1 ; WX 556 ; N Euro ; B 0 0 0 0 ; C -1 ; WX 722 ; N Ccircumflex ; B 48 -23 677 929 ; C -1 ; WX 500 ; N ccircumflex ; B 31 -23 477 714 ; C -1 ; WX 722 ; N Cdotaccent ; B 48 -23 677 893 ; C -1 ; WX 500 ; N cdotaccent ; B 31 -23 477 668 ; C -1 ; WX 667 ; N Ebreve ; B 90 0 613 904 ; C -1 ; WX 556 ; N ebreve ; B 40 -23 513 699 ; C -1 ; WX 778 ; N Gcircumflex ; B 44 -23 709 939 ; C -1 ; WX 556 ; N gcircumflex ; B 29 -218 489 734 ; C -1 ; WX 778 ; N Gdotaccent ; B 44 -23 709 893 ; C -1 ; WX 556 ; N gdotaccent ; B 29 -218 489 698 ; C -1 ; WX 722 ; N Hcircumflex ; B 83 0 644 919 ; C -1 ; WX 556 ; N hcircumflex ; B -32 0 486 919 ; C -1 ; WX 785 ; N Hbar ; B 38 0 752 729 ; C -1 ; WX 556 ; N hbar ; B 22 0 486 729 ; C -1 ; WX 278 ; N Itilde ; B -10 0 304 873 ; C -1 ; WX 278 ; N itilde ; B -21 0 293 668 ; C -1 ; WX 278 ; N Ibreve ; B -4 0 297 904 ; C -1 ; WX 278 ; N ibreve ; B -14 0 287 699 ; C -1 ; WX 700 ; N IJ ; B 100 -23 626 729 ; C -1 ; WX 374 ; N ij ; B 66 -218 305 729 ; C -1 ; WX 500 ; N Jcircumflex ; B 17 -23 523 919 ; C -1 ; WX 222 ; N jcircumflex ; B -32 -218 255 785 ; C -1 ; WX 500 ; N kgreenlandic ; B 58 0 502 524 ; C -1 ; WX 556 ; N Ldot ; B 80 0 533 729 ; C -1 ; WX 404 ; N ldot ; B 68 0 357 729 ; C -1 ; WX 556 ; N napostrophe ; B 64 0 487 789 ; C -1 ; WX 722 ; N Eng ; B 76 -174 646 729 ; C -1 ; WX 556 ; N eng ; B 70 -143 487 539 ; C -1 ; WX 778 ; N Obreve ; B 38 -23 742 904 ; C -1 ; WX 556 ; N obreve ; B 36 -23 510 699 ; C -1 ; WX 667 ; N Scircumflex ; B 48 -23 621 919 ; C -1 ; WX 500 ; N scircumflex ; B 34 -23 459 714 ; C -1 ; WX 611 ; N Tbar ; B 21 0 593 729 ; C -1 ; WX 278 ; N tbar ; B 13 -23 253 668 ; C -1 ; WX 611 ; N Tcedilla ; B 14 -225 597 718 ; C -1 ; WX 278 ; N tcedilla ; B 14 -225 257 669 ; C -1 ; WX 722 ; N Utilde ; B 85 -23 645 873 ; C -1 ; WX 556 ; N utilde ; B 65 -23 482 668 ; C -1 ; WX 722 ; N Ubreve ; B 85 -23 645 904 ; C -1 ; WX 556 ; N ubreve ; B 65 -23 482 699 ; C -1 ; WX 944 ; N Wcircumflex ; B 22 0 929 919 ; C -1 ; WX 722 ; N wcircumflex ; B 6 0 708 714 ; C -1 ; WX 667 ; N Ycircumflex ; B 13 0 661 919 ; C -1 ; WX 500 ; N ycircumflex ; B 20 -218 478 714 ; C -1 ; WX 278 ; N longs ; B 18 0 258 732 ; C -1 ; WX 756 ; N infinity ; B 38 114 710 500 ; EndCharMetrics StartKernData StartKernPairs 2705 KPX A C -30 KPX A Cacute -30 KPX A Ccaron -30 KPX A Ccedilla -30 KPX A G -30 KPX A Gbreve -30 KPX A Gcommaaccent -30 KPX A O -30 KPX A Oacute -30 KPX A Ocircumflex -30 KPX A Odieresis -30 KPX A Ograve -30 KPX A Ohungarumlaut -30 KPX A Omacron -30 KPX A Oslash -30 KPX A Otilde -30 KPX A Q -30 KPX A T -120 KPX A Tcaron -120 KPX A Tcommaaccent -120 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -70 KPX A W -50 KPX A Y -100 KPX A Yacute -100 KPX A Ydieresis -100 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -40 KPX A w -40 KPX A y -40 KPX A yacute -40 KPX A ydieresis -40 KPX Aacute C -30 KPX Aacute Cacute -30 KPX Aacute Ccaron -30 KPX Aacute Ccedilla -30 KPX Aacute G -30 KPX Aacute Gbreve -30 KPX Aacute Gcommaaccent -30 KPX Aacute O -30 KPX Aacute Oacute -30 KPX Aacute Ocircumflex -30 KPX Aacute Odieresis -30 KPX Aacute Ograve -30 KPX Aacute Ohungarumlaut -30 KPX Aacute Omacron -30 KPX Aacute Oslash -30 KPX Aacute Otilde -30 KPX Aacute Q -30 KPX Aacute T -120 KPX Aacute Tcaron -120 KPX Aacute Tcommaaccent -120 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -70 KPX Aacute W -50 KPX Aacute Y -100 KPX Aacute Yacute -100 KPX Aacute Ydieresis -100 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -40 KPX Aacute w -40 KPX Aacute y -40 KPX Aacute yacute -40 KPX Aacute ydieresis -40 KPX Abreve C -30 KPX Abreve Cacute -30 KPX Abreve Ccaron -30 KPX Abreve Ccedilla -30 KPX Abreve G -30 KPX Abreve Gbreve -30 KPX Abreve Gcommaaccent -30 KPX Abreve O -30 KPX Abreve Oacute -30 KPX Abreve Ocircumflex -30 KPX Abreve Odieresis -30 KPX Abreve Ograve -30 KPX Abreve Ohungarumlaut -30 KPX Abreve Omacron -30 KPX Abreve Oslash -30 KPX Abreve Otilde -30 KPX Abreve Q -30 KPX Abreve T -120 KPX Abreve Tcaron -120 KPX Abreve Tcommaaccent -120 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -70 KPX Abreve W -50 KPX Abreve Y -100 KPX Abreve Yacute -100 KPX Abreve Ydieresis -100 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -40 KPX Abreve w -40 KPX Abreve y -40 KPX Abreve yacute -40 KPX Abreve ydieresis -40 KPX Acircumflex C -30 KPX Acircumflex Cacute -30 KPX Acircumflex Ccaron -30 KPX Acircumflex Ccedilla -30 KPX Acircumflex G -30 KPX Acircumflex Gbreve -30 KPX Acircumflex Gcommaaccent -30 KPX Acircumflex O -30 KPX Acircumflex Oacute -30 KPX Acircumflex Ocircumflex -30 KPX Acircumflex Odieresis -30 KPX Acircumflex Ograve -30 KPX Acircumflex Ohungarumlaut -30 KPX Acircumflex Omacron -30 KPX Acircumflex Oslash -30 KPX Acircumflex Otilde -30 KPX Acircumflex Q -30 KPX Acircumflex T -120 KPX Acircumflex Tcaron -120 KPX Acircumflex Tcommaaccent -120 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -70 KPX Acircumflex W -50 KPX Acircumflex Y -100 KPX Acircumflex Yacute -100 KPX Acircumflex Ydieresis -100 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -40 KPX Acircumflex w -40 KPX Acircumflex y -40 KPX Acircumflex yacute -40 KPX Acircumflex ydieresis -40 KPX Adieresis C -30 KPX Adieresis Cacute -30 KPX Adieresis Ccaron -30 KPX Adieresis Ccedilla -30 KPX Adieresis G -30 KPX Adieresis Gbreve -30 KPX Adieresis Gcommaaccent -30 KPX Adieresis O -30 KPX Adieresis Oacute -30 KPX Adieresis Ocircumflex -30 KPX Adieresis Odieresis -30 KPX Adieresis Ograve -30 KPX Adieresis Ohungarumlaut -30 KPX Adieresis Omacron -30 KPX Adieresis Oslash -30 KPX Adieresis Otilde -30 KPX Adieresis Q -30 KPX Adieresis T -120 KPX Adieresis Tcaron -120 KPX Adieresis Tcommaaccent -120 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -70 KPX Adieresis W -50 KPX Adieresis Y -100 KPX Adieresis Yacute -100 KPX Adieresis Ydieresis -100 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -40 KPX Adieresis w -40 KPX Adieresis y -40 KPX Adieresis yacute -40 KPX Adieresis ydieresis -40 KPX Agrave C -30 KPX Agrave Cacute -30 KPX Agrave Ccaron -30 KPX Agrave Ccedilla -30 KPX Agrave G -30 KPX Agrave Gbreve -30 KPX Agrave Gcommaaccent -30 KPX Agrave O -30 KPX Agrave Oacute -30 KPX Agrave Ocircumflex -30 KPX Agrave Odieresis -30 KPX Agrave Ograve -30 KPX Agrave Ohungarumlaut -30 KPX Agrave Omacron -30 KPX Agrave Oslash -30 KPX Agrave Otilde -30 KPX Agrave Q -30 KPX Agrave T -120 KPX Agrave Tcaron -120 KPX Agrave Tcommaaccent -120 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -70 KPX Agrave W -50 KPX Agrave Y -100 KPX Agrave Yacute -100 KPX Agrave Ydieresis -100 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -40 KPX Agrave w -40 KPX Agrave y -40 KPX Agrave yacute -40 KPX Agrave ydieresis -40 KPX Amacron C -30 KPX Amacron Cacute -30 KPX Amacron Ccaron -30 KPX Amacron Ccedilla -30 KPX Amacron G -30 KPX Amacron Gbreve -30 KPX Amacron Gcommaaccent -30 KPX Amacron O -30 KPX Amacron Oacute -30 KPX Amacron Ocircumflex -30 KPX Amacron Odieresis -30 KPX Amacron Ograve -30 KPX Amacron Ohungarumlaut -30 KPX Amacron Omacron -30 KPX Amacron Oslash -30 KPX Amacron Otilde -30 KPX Amacron Q -30 KPX Amacron T -120 KPX Amacron Tcaron -120 KPX Amacron Tcommaaccent -120 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -70 KPX Amacron W -50 KPX Amacron Y -100 KPX Amacron Yacute -100 KPX Amacron Ydieresis -100 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -40 KPX Amacron w -40 KPX Amacron y -40 KPX Amacron yacute -40 KPX Amacron ydieresis -40 KPX Aogonek C -30 KPX Aogonek Cacute -30 KPX Aogonek Ccaron -30 KPX Aogonek Ccedilla -30 KPX Aogonek G -30 KPX Aogonek Gbreve -30 KPX Aogonek Gcommaaccent -30 KPX Aogonek O -30 KPX Aogonek Oacute -30 KPX Aogonek Ocircumflex -30 KPX Aogonek Odieresis -30 KPX Aogonek Ograve -30 KPX Aogonek Ohungarumlaut -30 KPX Aogonek Omacron -30 KPX Aogonek Oslash -30 KPX Aogonek Otilde -30 KPX Aogonek Q -30 KPX Aogonek T -120 KPX Aogonek Tcaron -120 KPX Aogonek Tcommaaccent -120 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -70 KPX Aogonek W -50 KPX Aogonek Y -100 KPX Aogonek Yacute -100 KPX Aogonek Ydieresis -100 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -40 KPX Aogonek w -40 KPX Aogonek y -40 KPX Aogonek yacute -40 KPX Aogonek ydieresis -40 KPX Aring C -30 KPX Aring Cacute -30 KPX Aring Ccaron -30 KPX Aring Ccedilla -30 KPX Aring G -30 KPX Aring Gbreve -30 KPX Aring Gcommaaccent -30 KPX Aring O -30 KPX Aring Oacute -30 KPX Aring Ocircumflex -30 KPX Aring Odieresis -30 KPX Aring Ograve -30 KPX Aring Ohungarumlaut -30 KPX Aring Omacron -30 KPX Aring Oslash -30 KPX Aring Otilde -30 KPX Aring Q -30 KPX Aring T -120 KPX Aring Tcaron -120 KPX Aring Tcommaaccent -120 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -70 KPX Aring W -50 KPX Aring Y -100 KPX Aring Yacute -100 KPX Aring Ydieresis -100 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -40 KPX Aring w -40 KPX Aring y -40 KPX Aring yacute -40 KPX Aring ydieresis -40 KPX Atilde C -30 KPX Atilde Cacute -30 KPX Atilde Ccaron -30 KPX Atilde Ccedilla -30 KPX Atilde G -30 KPX Atilde Gbreve -30 KPX Atilde Gcommaaccent -30 KPX Atilde O -30 KPX Atilde Oacute -30 KPX Atilde Ocircumflex -30 KPX Atilde Odieresis -30 KPX Atilde Ograve -30 KPX Atilde Ohungarumlaut -30 KPX Atilde Omacron -30 KPX Atilde Oslash -30 KPX Atilde Otilde -30 KPX Atilde Q -30 KPX Atilde T -120 KPX Atilde Tcaron -120 KPX Atilde Tcommaaccent -120 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -70 KPX Atilde W -50 KPX Atilde Y -100 KPX Atilde Yacute -100 KPX Atilde Ydieresis -100 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -40 KPX Atilde w -40 KPX Atilde y -40 KPX Atilde yacute -40 KPX Atilde ydieresis -40 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX B comma -20 KPX B period -20 KPX C comma -30 KPX C period -30 KPX Cacute comma -30 KPX Cacute period -30 KPX Ccaron comma -30 KPX Ccaron period -30 KPX Ccedilla comma -30 KPX Ccedilla period -30 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -70 KPX D W -40 KPX D Y -90 KPX D Yacute -90 KPX D Ydieresis -90 KPX D comma -70 KPX D period -70 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -70 KPX Dcaron W -40 KPX Dcaron Y -90 KPX Dcaron Yacute -90 KPX Dcaron Ydieresis -90 KPX Dcaron comma -70 KPX Dcaron period -70 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -70 KPX Dcroat W -40 KPX Dcroat Y -90 KPX Dcroat Yacute -90 KPX Dcroat Ydieresis -90 KPX Dcroat comma -70 KPX Dcroat period -70 KPX F A -80 KPX F Aacute -80 KPX F Abreve -80 KPX F Acircumflex -80 KPX F Adieresis -80 KPX F Agrave -80 KPX F Amacron -80 KPX F Aogonek -80 KPX F Aring -80 KPX F Atilde -80 KPX F a -50 KPX F aacute -50 KPX F abreve -50 KPX F acircumflex -50 KPX F adieresis -50 KPX F agrave -50 KPX F amacron -50 KPX F aogonek -50 KPX F aring -50 KPX F atilde -50 KPX F comma -150 KPX F e -30 KPX F eacute -30 KPX F ecaron -30 KPX F ecircumflex -30 KPX F edieresis -30 KPX F edotaccent -30 KPX F egrave -30 KPX F emacron -30 KPX F eogonek -30 KPX F o -30 KPX F oacute -30 KPX F ocircumflex -30 KPX F odieresis -30 KPX F ograve -30 KPX F ohungarumlaut -30 KPX F omacron -30 KPX F oslash -30 KPX F otilde -30 KPX F period -150 KPX F r -45 KPX F racute -45 KPX F rcaron -45 KPX F rcommaaccent -45 KPX J A -20 KPX J Aacute -20 KPX J Abreve -20 KPX J Acircumflex -20 KPX J Adieresis -20 KPX J Agrave -20 KPX J Amacron -20 KPX J Aogonek -20 KPX J Aring -20 KPX J Atilde -20 KPX J a -20 KPX J aacute -20 KPX J abreve -20 KPX J acircumflex -20 KPX J adieresis -20 KPX J agrave -20 KPX J amacron -20 KPX J aogonek -20 KPX J aring -20 KPX J atilde -20 KPX J comma -30 KPX J period -30 KPX J u -20 KPX J uacute -20 KPX J ucircumflex -20 KPX J udieresis -20 KPX J ugrave -20 KPX J uhungarumlaut -20 KPX J umacron -20 KPX J uogonek -20 KPX J uring -20 KPX K O -50 KPX K Oacute -50 KPX K Ocircumflex -50 KPX K Odieresis -50 KPX K Ograve -50 KPX K Ohungarumlaut -50 KPX K Omacron -50 KPX K Oslash -50 KPX K Otilde -50 KPX K e -40 KPX K eacute -40 KPX K ecaron -40 KPX K ecircumflex -40 KPX K edieresis -40 KPX K edotaccent -40 KPX K egrave -40 KPX K emacron -40 KPX K eogonek -40 KPX K o -40 KPX K oacute -40 KPX K ocircumflex -40 KPX K odieresis -40 KPX K ograve -40 KPX K ohungarumlaut -40 KPX K omacron -40 KPX K oslash -40 KPX K otilde -40 KPX K u -30 KPX K uacute -30 KPX K ucircumflex -30 KPX K udieresis -30 KPX K ugrave -30 KPX K uhungarumlaut -30 KPX K umacron -30 KPX K uogonek -30 KPX K uring -30 KPX K y -50 KPX K yacute -50 KPX K ydieresis -50 KPX Kcommaaccent O -50 KPX Kcommaaccent Oacute -50 KPX Kcommaaccent Ocircumflex -50 KPX Kcommaaccent Odieresis -50 KPX Kcommaaccent Ograve -50 KPX Kcommaaccent Ohungarumlaut -50 KPX Kcommaaccent Omacron -50 KPX Kcommaaccent Oslash -50 KPX Kcommaaccent Otilde -50 KPX Kcommaaccent e -40 KPX Kcommaaccent eacute -40 KPX Kcommaaccent ecaron -40 KPX Kcommaaccent ecircumflex -40 KPX Kcommaaccent edieresis -40 KPX Kcommaaccent edotaccent -40 KPX Kcommaaccent egrave -40 KPX Kcommaaccent emacron -40 KPX Kcommaaccent eogonek -40 KPX Kcommaaccent o -40 KPX Kcommaaccent oacute -40 KPX Kcommaaccent ocircumflex -40 KPX Kcommaaccent odieresis -40 KPX Kcommaaccent ograve -40 KPX Kcommaaccent ohungarumlaut -40 KPX Kcommaaccent omacron -40 KPX Kcommaaccent oslash -40 KPX Kcommaaccent otilde -40 KPX Kcommaaccent u -30 KPX Kcommaaccent uacute -30 KPX Kcommaaccent ucircumflex -30 KPX Kcommaaccent udieresis -30 KPX Kcommaaccent ugrave -30 KPX Kcommaaccent uhungarumlaut -30 KPX Kcommaaccent umacron -30 KPX Kcommaaccent uogonek -30 KPX Kcommaaccent uring -30 KPX Kcommaaccent y -50 KPX Kcommaaccent yacute -50 KPX Kcommaaccent ydieresis -50 KPX L T -110 KPX L Tcaron -110 KPX L Tcommaaccent -110 KPX L V -110 KPX L W -70 KPX L Y -140 KPX L Yacute -140 KPX L Ydieresis -140 KPX L quotedblright -140 KPX L quoteright -160 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -110 KPX Lacute Tcaron -110 KPX Lacute Tcommaaccent -110 KPX Lacute V -110 KPX Lacute W -70 KPX Lacute Y -140 KPX Lacute Yacute -140 KPX Lacute Ydieresis -140 KPX Lacute quotedblright -140 KPX Lacute quoteright -160 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcaron T -110 KPX Lcaron Tcaron -110 KPX Lcaron Tcommaaccent -110 KPX Lcaron V -110 KPX Lcaron W -70 KPX Lcaron Y -140 KPX Lcaron Yacute -140 KPX Lcaron Ydieresis -140 KPX Lcaron quotedblright -140 KPX Lcaron quoteright -160 KPX Lcaron y -30 KPX Lcaron yacute -30 KPX Lcaron ydieresis -30 KPX Lcommaaccent T -110 KPX Lcommaaccent Tcaron -110 KPX Lcommaaccent Tcommaaccent -110 KPX Lcommaaccent V -110 KPX Lcommaaccent W -70 KPX Lcommaaccent Y -140 KPX Lcommaaccent Yacute -140 KPX Lcommaaccent Ydieresis -140 KPX Lcommaaccent quotedblright -140 KPX Lcommaaccent quoteright -160 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -110 KPX Lslash Tcaron -110 KPX Lslash Tcommaaccent -110 KPX Lslash V -110 KPX Lslash W -70 KPX Lslash Y -140 KPX Lslash Yacute -140 KPX Lslash Ydieresis -140 KPX Lslash quotedblright -140 KPX Lslash quoteright -160 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX O A -20 KPX O Aacute -20 KPX O Abreve -20 KPX O Acircumflex -20 KPX O Adieresis -20 KPX O Agrave -20 KPX O Amacron -20 KPX O Aogonek -20 KPX O Aring -20 KPX O Atilde -20 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -30 KPX O X -60 KPX O Y -70 KPX O Yacute -70 KPX O Ydieresis -70 KPX O comma -40 KPX O period -40 KPX Oacute A -20 KPX Oacute Aacute -20 KPX Oacute Abreve -20 KPX Oacute Acircumflex -20 KPX Oacute Adieresis -20 KPX Oacute Agrave -20 KPX Oacute Amacron -20 KPX Oacute Aogonek -20 KPX Oacute Aring -20 KPX Oacute Atilde -20 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -30 KPX Oacute X -60 KPX Oacute Y -70 KPX Oacute Yacute -70 KPX Oacute Ydieresis -70 KPX Oacute comma -40 KPX Oacute period -40 KPX Ocircumflex A -20 KPX Ocircumflex Aacute -20 KPX Ocircumflex Abreve -20 KPX Ocircumflex Acircumflex -20 KPX Ocircumflex Adieresis -20 KPX Ocircumflex Agrave -20 KPX Ocircumflex Amacron -20 KPX Ocircumflex Aogonek -20 KPX Ocircumflex Aring -20 KPX Ocircumflex Atilde -20 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -30 KPX Ocircumflex X -60 KPX Ocircumflex Y -70 KPX Ocircumflex Yacute -70 KPX Ocircumflex Ydieresis -70 KPX Ocircumflex comma -40 KPX Ocircumflex period -40 KPX Odieresis A -20 KPX Odieresis Aacute -20 KPX Odieresis Abreve -20 KPX Odieresis Acircumflex -20 KPX Odieresis Adieresis -20 KPX Odieresis Agrave -20 KPX Odieresis Amacron -20 KPX Odieresis Aogonek -20 KPX Odieresis Aring -20 KPX Odieresis Atilde -20 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -30 KPX Odieresis X -60 KPX Odieresis Y -70 KPX Odieresis Yacute -70 KPX Odieresis Ydieresis -70 KPX Odieresis comma -40 KPX Odieresis period -40 KPX Ograve A -20 KPX Ograve Aacute -20 KPX Ograve Abreve -20 KPX Ograve Acircumflex -20 KPX Ograve Adieresis -20 KPX Ograve Agrave -20 KPX Ograve Amacron -20 KPX Ograve Aogonek -20 KPX Ograve Aring -20 KPX Ograve Atilde -20 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -30 KPX Ograve X -60 KPX Ograve Y -70 KPX Ograve Yacute -70 KPX Ograve Ydieresis -70 KPX Ograve comma -40 KPX Ograve period -40 KPX Ohungarumlaut A -20 KPX Ohungarumlaut Aacute -20 KPX Ohungarumlaut Abreve -20 KPX Ohungarumlaut Acircumflex -20 KPX Ohungarumlaut Adieresis -20 KPX Ohungarumlaut Agrave -20 KPX Ohungarumlaut Amacron -20 KPX Ohungarumlaut Aogonek -20 KPX Ohungarumlaut Aring -20 KPX Ohungarumlaut Atilde -20 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -30 KPX Ohungarumlaut X -60 KPX Ohungarumlaut Y -70 KPX Ohungarumlaut Yacute -70 KPX Ohungarumlaut Ydieresis -70 KPX Ohungarumlaut comma -40 KPX Ohungarumlaut period -40 KPX Omacron A -20 KPX Omacron Aacute -20 KPX Omacron Abreve -20 KPX Omacron Acircumflex -20 KPX Omacron Adieresis -20 KPX Omacron Agrave -20 KPX Omacron Amacron -20 KPX Omacron Aogonek -20 KPX Omacron Aring -20 KPX Omacron Atilde -20 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -30 KPX Omacron X -60 KPX Omacron Y -70 KPX Omacron Yacute -70 KPX Omacron Ydieresis -70 KPX Omacron comma -40 KPX Omacron period -40 KPX Oslash A -20 KPX Oslash Aacute -20 KPX Oslash Abreve -20 KPX Oslash Acircumflex -20 KPX Oslash Adieresis -20 KPX Oslash Agrave -20 KPX Oslash Amacron -20 KPX Oslash Aogonek -20 KPX Oslash Aring -20 KPX Oslash Atilde -20 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -30 KPX Oslash X -60 KPX Oslash Y -70 KPX Oslash Yacute -70 KPX Oslash Ydieresis -70 KPX Oslash comma -40 KPX Oslash period -40 KPX Otilde A -20 KPX Otilde Aacute -20 KPX Otilde Abreve -20 KPX Otilde Acircumflex -20 KPX Otilde Adieresis -20 KPX Otilde Agrave -20 KPX Otilde Amacron -20 KPX Otilde Aogonek -20 KPX Otilde Aring -20 KPX Otilde Atilde -20 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -30 KPX Otilde X -60 KPX Otilde Y -70 KPX Otilde Yacute -70 KPX Otilde Ydieresis -70 KPX Otilde comma -40 KPX Otilde period -40 KPX P A -120 KPX P Aacute -120 KPX P Abreve -120 KPX P Acircumflex -120 KPX P Adieresis -120 KPX P Agrave -120 KPX P Amacron -120 KPX P Aogonek -120 KPX P Aring -120 KPX P Atilde -120 KPX P a -40 KPX P aacute -40 KPX P abreve -40 KPX P acircumflex -40 KPX P adieresis -40 KPX P agrave -40 KPX P amacron -40 KPX P aogonek -40 KPX P aring -40 KPX P atilde -40 KPX P comma -180 KPX P e -50 KPX P eacute -50 KPX P ecaron -50 KPX P ecircumflex -50 KPX P edieresis -50 KPX P edotaccent -50 KPX P egrave -50 KPX P emacron -50 KPX P eogonek -50 KPX P o -50 KPX P oacute -50 KPX P ocircumflex -50 KPX P odieresis -50 KPX P ograve -50 KPX P ohungarumlaut -50 KPX P omacron -50 KPX P oslash -50 KPX P otilde -50 KPX P period -180 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R O -20 KPX R Oacute -20 KPX R Ocircumflex -20 KPX R Odieresis -20 KPX R Ograve -20 KPX R Ohungarumlaut -20 KPX R Omacron -20 KPX R Oslash -20 KPX R Otilde -20 KPX R T -30 KPX R Tcaron -30 KPX R Tcommaaccent -30 KPX R U -40 KPX R Uacute -40 KPX R Ucircumflex -40 KPX R Udieresis -40 KPX R Ugrave -40 KPX R Uhungarumlaut -40 KPX R Umacron -40 KPX R Uogonek -40 KPX R Uring -40 KPX R V -50 KPX R W -30 KPX R Y -50 KPX R Yacute -50 KPX R Ydieresis -50 KPX Racute O -20 KPX Racute Oacute -20 KPX Racute Ocircumflex -20 KPX Racute Odieresis -20 KPX Racute Ograve -20 KPX Racute Ohungarumlaut -20 KPX Racute Omacron -20 KPX Racute Oslash -20 KPX Racute Otilde -20 KPX Racute T -30 KPX Racute Tcaron -30 KPX Racute Tcommaaccent -30 KPX Racute U -40 KPX Racute Uacute -40 KPX Racute Ucircumflex -40 KPX Racute Udieresis -40 KPX Racute Ugrave -40 KPX Racute Uhungarumlaut -40 KPX Racute Umacron -40 KPX Racute Uogonek -40 KPX Racute Uring -40 KPX Racute V -50 KPX Racute W -30 KPX Racute Y -50 KPX Racute Yacute -50 KPX Racute Ydieresis -50 KPX Rcaron O -20 KPX Rcaron Oacute -20 KPX Rcaron Ocircumflex -20 KPX Rcaron Odieresis -20 KPX Rcaron Ograve -20 KPX Rcaron Ohungarumlaut -20 KPX Rcaron Omacron -20 KPX Rcaron Oslash -20 KPX Rcaron Otilde -20 KPX Rcaron T -30 KPX Rcaron Tcaron -30 KPX Rcaron Tcommaaccent -30 KPX Rcaron U -40 KPX Rcaron Uacute -40 KPX Rcaron Ucircumflex -40 KPX Rcaron Udieresis -40 KPX Rcaron Ugrave -40 KPX Rcaron Uhungarumlaut -40 KPX Rcaron Umacron -40 KPX Rcaron Uogonek -40 KPX Rcaron Uring -40 KPX Rcaron V -50 KPX Rcaron W -30 KPX Rcaron Y -50 KPX Rcaron Yacute -50 KPX Rcaron Ydieresis -50 KPX Rcommaaccent O -20 KPX Rcommaaccent Oacute -20 KPX Rcommaaccent Ocircumflex -20 KPX Rcommaaccent Odieresis -20 KPX Rcommaaccent Ograve -20 KPX Rcommaaccent Ohungarumlaut -20 KPX Rcommaaccent Omacron -20 KPX Rcommaaccent Oslash -20 KPX Rcommaaccent Otilde -20 KPX Rcommaaccent T -30 KPX Rcommaaccent Tcaron -30 KPX Rcommaaccent Tcommaaccent -30 KPX Rcommaaccent U -40 KPX Rcommaaccent Uacute -40 KPX Rcommaaccent Ucircumflex -40 KPX Rcommaaccent Udieresis -40 KPX Rcommaaccent Ugrave -40 KPX Rcommaaccent Uhungarumlaut -40 KPX Rcommaaccent Umacron -40 KPX Rcommaaccent Uogonek -40 KPX Rcommaaccent Uring -40 KPX Rcommaaccent V -50 KPX Rcommaaccent W -30 KPX Rcommaaccent Y -50 KPX Rcommaaccent Yacute -50 KPX Rcommaaccent Ydieresis -50 KPX S comma -20 KPX S period -20 KPX Sacute comma -20 KPX Sacute period -20 KPX Scaron comma -20 KPX Scaron period -20 KPX Scedilla comma -20 KPX Scedilla period -20 KPX Scommaaccent comma -20 KPX Scommaaccent period -20 KPX T A -120 KPX T Aacute -120 KPX T Abreve -120 KPX T Acircumflex -120 KPX T Adieresis -120 KPX T Agrave -120 KPX T Amacron -120 KPX T Aogonek -120 KPX T Aring -120 KPX T Atilde -120 KPX T O -40 KPX T Oacute -40 KPX T Ocircumflex -40 KPX T Odieresis -40 KPX T Ograve -40 KPX T Ohungarumlaut -40 KPX T Omacron -40 KPX T Oslash -40 KPX T Otilde -40 KPX T a -120 KPX T aacute -120 KPX T abreve -60 KPX T acircumflex -120 KPX T adieresis -120 KPX T agrave -120 KPX T amacron -60 KPX T aogonek -120 KPX T aring -120 KPX T atilde -60 KPX T colon -20 KPX T comma -120 KPX T e -120 KPX T eacute -120 KPX T ecaron -120 KPX T ecircumflex -120 KPX T edieresis -120 KPX T edotaccent -120 KPX T egrave -60 KPX T emacron -60 KPX T eogonek -120 KPX T hyphen -140 KPX T o -120 KPX T oacute -120 KPX T ocircumflex -120 KPX T odieresis -120 KPX T ograve -120 KPX T ohungarumlaut -120 KPX T omacron -60 KPX T oslash -120 KPX T otilde -60 KPX T period -120 KPX T r -120 KPX T racute -120 KPX T rcaron -120 KPX T rcommaaccent -120 KPX T semicolon -20 KPX T u -120 KPX T uacute -120 KPX T ucircumflex -120 KPX T udieresis -120 KPX T ugrave -120 KPX T uhungarumlaut -120 KPX T umacron -60 KPX T uogonek -120 KPX T uring -120 KPX T w -120 KPX T y -120 KPX T yacute -120 KPX T ydieresis -60 KPX Tcaron A -120 KPX Tcaron Aacute -120 KPX Tcaron Abreve -120 KPX Tcaron Acircumflex -120 KPX Tcaron Adieresis -120 KPX Tcaron Agrave -120 KPX Tcaron Amacron -120 KPX Tcaron Aogonek -120 KPX Tcaron Aring -120 KPX Tcaron Atilde -120 KPX Tcaron O -40 KPX Tcaron Oacute -40 KPX Tcaron Ocircumflex -40 KPX Tcaron Odieresis -40 KPX Tcaron Ograve -40 KPX Tcaron Ohungarumlaut -40 KPX Tcaron Omacron -40 KPX Tcaron Oslash -40 KPX Tcaron Otilde -40 KPX Tcaron a -120 KPX Tcaron aacute -120 KPX Tcaron abreve -60 KPX Tcaron acircumflex -120 KPX Tcaron adieresis -120 KPX Tcaron agrave -120 KPX Tcaron amacron -60 KPX Tcaron aogonek -120 KPX Tcaron aring -120 KPX Tcaron atilde -60 KPX Tcaron colon -20 KPX Tcaron comma -120 KPX Tcaron e -120 KPX Tcaron eacute -120 KPX Tcaron ecaron -120 KPX Tcaron ecircumflex -120 KPX Tcaron edieresis -120 KPX Tcaron edotaccent -120 KPX Tcaron egrave -60 KPX Tcaron emacron -60 KPX Tcaron eogonek -120 KPX Tcaron hyphen -140 KPX Tcaron o -120 KPX Tcaron oacute -120 KPX Tcaron ocircumflex -120 KPX Tcaron odieresis -120 KPX Tcaron ograve -120 KPX Tcaron ohungarumlaut -120 KPX Tcaron omacron -60 KPX Tcaron oslash -120 KPX Tcaron otilde -60 KPX Tcaron period -120 KPX Tcaron r -120 KPX Tcaron racute -120 KPX Tcaron rcaron -120 KPX Tcaron rcommaaccent -120 KPX Tcaron semicolon -20 KPX Tcaron u -120 KPX Tcaron uacute -120 KPX Tcaron ucircumflex -120 KPX Tcaron udieresis -120 KPX Tcaron ugrave -120 KPX Tcaron uhungarumlaut -120 KPX Tcaron umacron -60 KPX Tcaron uogonek -120 KPX Tcaron uring -120 KPX Tcaron w -120 KPX Tcaron y -120 KPX Tcaron yacute -120 KPX Tcaron ydieresis -60 KPX Tcommaaccent A -120 KPX Tcommaaccent Aacute -120 KPX Tcommaaccent Abreve -120 KPX Tcommaaccent Acircumflex -120 KPX Tcommaaccent Adieresis -120 KPX Tcommaaccent Agrave -120 KPX Tcommaaccent Amacron -120 KPX Tcommaaccent Aogonek -120 KPX Tcommaaccent Aring -120 KPX Tcommaaccent Atilde -120 KPX Tcommaaccent O -40 KPX Tcommaaccent Oacute -40 KPX Tcommaaccent Ocircumflex -40 KPX Tcommaaccent Odieresis -40 KPX Tcommaaccent Ograve -40 KPX Tcommaaccent Ohungarumlaut -40 KPX Tcommaaccent Omacron -40 KPX Tcommaaccent Oslash -40 KPX Tcommaaccent Otilde -40 KPX Tcommaaccent a -120 KPX Tcommaaccent aacute -120 KPX Tcommaaccent abreve -60 KPX Tcommaaccent acircumflex -120 KPX Tcommaaccent adieresis -120 KPX Tcommaaccent agrave -120 KPX Tcommaaccent amacron -60 KPX Tcommaaccent aogonek -120 KPX Tcommaaccent aring -120 KPX Tcommaaccent atilde -60 KPX Tcommaaccent colon -20 KPX Tcommaaccent comma -120 KPX Tcommaaccent e -120 KPX Tcommaaccent eacute -120 KPX Tcommaaccent ecaron -120 KPX Tcommaaccent ecircumflex -120 KPX Tcommaaccent edieresis -120 KPX Tcommaaccent edotaccent -120 KPX Tcommaaccent egrave -60 KPX Tcommaaccent emacron -60 KPX Tcommaaccent eogonek -120 KPX Tcommaaccent hyphen -140 KPX Tcommaaccent o -120 KPX Tcommaaccent oacute -120 KPX Tcommaaccent ocircumflex -120 KPX Tcommaaccent odieresis -120 KPX Tcommaaccent ograve -120 KPX Tcommaaccent ohungarumlaut -120 KPX Tcommaaccent omacron -60 KPX Tcommaaccent oslash -120 KPX Tcommaaccent otilde -60 KPX Tcommaaccent period -120 KPX Tcommaaccent r -120 KPX Tcommaaccent racute -120 KPX Tcommaaccent rcaron -120 KPX Tcommaaccent rcommaaccent -120 KPX Tcommaaccent semicolon -20 KPX Tcommaaccent u -120 KPX Tcommaaccent uacute -120 KPX Tcommaaccent ucircumflex -120 KPX Tcommaaccent udieresis -120 KPX Tcommaaccent ugrave -120 KPX Tcommaaccent uhungarumlaut -120 KPX Tcommaaccent umacron -60 KPX Tcommaaccent uogonek -120 KPX Tcommaaccent uring -120 KPX Tcommaaccent w -120 KPX Tcommaaccent y -120 KPX Tcommaaccent yacute -120 KPX Tcommaaccent ydieresis -60 KPX U A -40 KPX U Aacute -40 KPX U Abreve -40 KPX U Acircumflex -40 KPX U Adieresis -40 KPX U Agrave -40 KPX U Amacron -40 KPX U Aogonek -40 KPX U Aring -40 KPX U Atilde -40 KPX U comma -40 KPX U period -40 KPX Uacute A -40 KPX Uacute Aacute -40 KPX Uacute Abreve -40 KPX Uacute Acircumflex -40 KPX Uacute Adieresis -40 KPX Uacute Agrave -40 KPX Uacute Amacron -40 KPX Uacute Aogonek -40 KPX Uacute Aring -40 KPX Uacute Atilde -40 KPX Uacute comma -40 KPX Uacute period -40 KPX Ucircumflex A -40 KPX Ucircumflex Aacute -40 KPX Ucircumflex Abreve -40 KPX Ucircumflex Acircumflex -40 KPX Ucircumflex Adieresis -40 KPX Ucircumflex Agrave -40 KPX Ucircumflex Amacron -40 KPX Ucircumflex Aogonek -40 KPX Ucircumflex Aring -40 KPX Ucircumflex Atilde -40 KPX Ucircumflex comma -40 KPX Ucircumflex period -40 KPX Udieresis A -40 KPX Udieresis Aacute -40 KPX Udieresis Abreve -40 KPX Udieresis Acircumflex -40 KPX Udieresis Adieresis -40 KPX Udieresis Agrave -40 KPX Udieresis Amacron -40 KPX Udieresis Aogonek -40 KPX Udieresis Aring -40 KPX Udieresis Atilde -40 KPX Udieresis comma -40 KPX Udieresis period -40 KPX Ugrave A -40 KPX Ugrave Aacute -40 KPX Ugrave Abreve -40 KPX Ugrave Acircumflex -40 KPX Ugrave Adieresis -40 KPX Ugrave Agrave -40 KPX Ugrave Amacron -40 KPX Ugrave Aogonek -40 KPX Ugrave Aring -40 KPX Ugrave Atilde -40 KPX Ugrave comma -40 KPX Ugrave period -40 KPX Uhungarumlaut A -40 KPX Uhungarumlaut Aacute -40 KPX Uhungarumlaut Abreve -40 KPX Uhungarumlaut Acircumflex -40 KPX Uhungarumlaut Adieresis -40 KPX Uhungarumlaut Agrave -40 KPX Uhungarumlaut Amacron -40 KPX Uhungarumlaut Aogonek -40 KPX Uhungarumlaut Aring -40 KPX Uhungarumlaut Atilde -40 KPX Uhungarumlaut comma -40 KPX Uhungarumlaut period -40 KPX Umacron A -40 KPX Umacron Aacute -40 KPX Umacron Abreve -40 KPX Umacron Acircumflex -40 KPX Umacron Adieresis -40 KPX Umacron Agrave -40 KPX Umacron Amacron -40 KPX Umacron Aogonek -40 KPX Umacron Aring -40 KPX Umacron Atilde -40 KPX Umacron comma -40 KPX Umacron period -40 KPX Uogonek A -40 KPX Uogonek Aacute -40 KPX Uogonek Abreve -40 KPX Uogonek Acircumflex -40 KPX Uogonek Adieresis -40 KPX Uogonek Agrave -40 KPX Uogonek Amacron -40 KPX Uogonek Aogonek -40 KPX Uogonek Aring -40 KPX Uogonek Atilde -40 KPX Uogonek comma -40 KPX Uogonek period -40 KPX Uring A -40 KPX Uring Aacute -40 KPX Uring Abreve -40 KPX Uring Acircumflex -40 KPX Uring Adieresis -40 KPX Uring Agrave -40 KPX Uring Amacron -40 KPX Uring Aogonek -40 KPX Uring Aring -40 KPX Uring Atilde -40 KPX Uring comma -40 KPX Uring period -40 KPX V A -80 KPX V Aacute -80 KPX V Abreve -80 KPX V Acircumflex -80 KPX V Adieresis -80 KPX V Agrave -80 KPX V Amacron -80 KPX V Aogonek -80 KPX V Aring -80 KPX V Atilde -80 KPX V G -40 KPX V Gbreve -40 KPX V Gcommaaccent -40 KPX V O -40 KPX V Oacute -40 KPX V Ocircumflex -40 KPX V Odieresis -40 KPX V Ograve -40 KPX V Ohungarumlaut -40 KPX V Omacron -40 KPX V Oslash -40 KPX V Otilde -40 KPX V a -70 KPX V aacute -70 KPX V abreve -70 KPX V acircumflex -70 KPX V adieresis -70 KPX V agrave -70 KPX V amacron -70 KPX V aogonek -70 KPX V aring -70 KPX V atilde -70 KPX V colon -40 KPX V comma -125 KPX V e -80 KPX V eacute -80 KPX V ecaron -80 KPX V ecircumflex -80 KPX V edieresis -80 KPX V edotaccent -80 KPX V egrave -80 KPX V emacron -80 KPX V eogonek -80 KPX V hyphen -80 KPX V o -80 KPX V oacute -80 KPX V ocircumflex -80 KPX V odieresis -80 KPX V ograve -80 KPX V ohungarumlaut -80 KPX V omacron -80 KPX V oslash -80 KPX V otilde -80 KPX V period -125 KPX V semicolon -40 KPX V u -70 KPX V uacute -70 KPX V ucircumflex -70 KPX V udieresis -70 KPX V ugrave -70 KPX V uhungarumlaut -70 KPX V umacron -70 KPX V uogonek -70 KPX V uring -70 KPX W A -50 KPX W Aacute -50 KPX W Abreve -50 KPX W Acircumflex -50 KPX W Adieresis -50 KPX W Agrave -50 KPX W Amacron -50 KPX W Aogonek -50 KPX W Aring -50 KPX W Atilde -50 KPX W O -20 KPX W Oacute -20 KPX W Ocircumflex -20 KPX W Odieresis -20 KPX W Ograve -20 KPX W Ohungarumlaut -20 KPX W Omacron -20 KPX W Oslash -20 KPX W Otilde -20 KPX W a -40 KPX W aacute -40 KPX W abreve -40 KPX W acircumflex -40 KPX W adieresis -40 KPX W agrave -40 KPX W amacron -40 KPX W aogonek -40 KPX W aring -40 KPX W atilde -40 KPX W comma -80 KPX W e -30 KPX W eacute -30 KPX W ecaron -30 KPX W ecircumflex -30 KPX W edieresis -30 KPX W edotaccent -30 KPX W egrave -30 KPX W emacron -30 KPX W eogonek -30 KPX W hyphen -40 KPX W o -30 KPX W oacute -30 KPX W ocircumflex -30 KPX W odieresis -30 KPX W ograve -30 KPX W ohungarumlaut -30 KPX W omacron -30 KPX W oslash -30 KPX W otilde -30 KPX W period -80 KPX W u -30 KPX W uacute -30 KPX W ucircumflex -30 KPX W udieresis -30 KPX W ugrave -30 KPX W uhungarumlaut -30 KPX W umacron -30 KPX W uogonek -30 KPX W uring -30 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -85 KPX Y Oacute -85 KPX Y Ocircumflex -85 KPX Y Odieresis -85 KPX Y Ograve -85 KPX Y Ohungarumlaut -85 KPX Y Omacron -85 KPX Y Oslash -85 KPX Y Otilde -85 KPX Y a -140 KPX Y aacute -140 KPX Y abreve -70 KPX Y acircumflex -140 KPX Y adieresis -140 KPX Y agrave -140 KPX Y amacron -70 KPX Y aogonek -140 KPX Y aring -140 KPX Y atilde -140 KPX Y colon -60 KPX Y comma -140 KPX Y e -140 KPX Y eacute -140 KPX Y ecaron -140 KPX Y ecircumflex -140 KPX Y edieresis -140 KPX Y edotaccent -140 KPX Y egrave -140 KPX Y emacron -70 KPX Y eogonek -140 KPX Y hyphen -140 KPX Y i -20 KPX Y iacute -20 KPX Y iogonek -20 KPX Y o -140 KPX Y oacute -140 KPX Y ocircumflex -140 KPX Y odieresis -140 KPX Y ograve -140 KPX Y ohungarumlaut -140 KPX Y omacron -140 KPX Y oslash -140 KPX Y otilde -140 KPX Y period -140 KPX Y semicolon -60 KPX Y u -110 KPX Y uacute -110 KPX Y ucircumflex -110 KPX Y udieresis -110 KPX Y ugrave -110 KPX Y uhungarumlaut -110 KPX Y umacron -110 KPX Y uogonek -110 KPX Y uring -110 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -85 KPX Yacute Oacute -85 KPX Yacute Ocircumflex -85 KPX Yacute Odieresis -85 KPX Yacute Ograve -85 KPX Yacute Ohungarumlaut -85 KPX Yacute Omacron -85 KPX Yacute Oslash -85 KPX Yacute Otilde -85 KPX Yacute a -140 KPX Yacute aacute -140 KPX Yacute abreve -70 KPX Yacute acircumflex -140 KPX Yacute adieresis -140 KPX Yacute agrave -140 KPX Yacute amacron -70 KPX Yacute aogonek -140 KPX Yacute aring -140 KPX Yacute atilde -70 KPX Yacute colon -60 KPX Yacute comma -140 KPX Yacute e -140 KPX Yacute eacute -140 KPX Yacute ecaron -140 KPX Yacute ecircumflex -140 KPX Yacute edieresis -140 KPX Yacute edotaccent -140 KPX Yacute egrave -140 KPX Yacute emacron -70 KPX Yacute eogonek -140 KPX Yacute hyphen -140 KPX Yacute i -20 KPX Yacute iacute -20 KPX Yacute iogonek -20 KPX Yacute o -140 KPX Yacute oacute -140 KPX Yacute ocircumflex -140 KPX Yacute odieresis -140 KPX Yacute ograve -140 KPX Yacute ohungarumlaut -140 KPX Yacute omacron -70 KPX Yacute oslash -140 KPX Yacute otilde -140 KPX Yacute period -140 KPX Yacute semicolon -60 KPX Yacute u -110 KPX Yacute uacute -110 KPX Yacute ucircumflex -110 KPX Yacute udieresis -110 KPX Yacute ugrave -110 KPX Yacute uhungarumlaut -110 KPX Yacute umacron -110 KPX Yacute uogonek -110 KPX Yacute uring -110 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -85 KPX Ydieresis Oacute -85 KPX Ydieresis Ocircumflex -85 KPX Ydieresis Odieresis -85 KPX Ydieresis Ograve -85 KPX Ydieresis Ohungarumlaut -85 KPX Ydieresis Omacron -85 KPX Ydieresis Oslash -85 KPX Ydieresis Otilde -85 KPX Ydieresis a -140 KPX Ydieresis aacute -140 KPX Ydieresis abreve -70 KPX Ydieresis acircumflex -140 KPX Ydieresis adieresis -140 KPX Ydieresis agrave -140 KPX Ydieresis amacron -70 KPX Ydieresis aogonek -140 KPX Ydieresis aring -140 KPX Ydieresis atilde -70 KPX Ydieresis colon -60 KPX Ydieresis comma -140 KPX Ydieresis e -140 KPX Ydieresis eacute -140 KPX Ydieresis ecaron -140 KPX Ydieresis ecircumflex -140 KPX Ydieresis edieresis -140 KPX Ydieresis edotaccent -140 KPX Ydieresis egrave -140 KPX Ydieresis emacron -70 KPX Ydieresis eogonek -140 KPX Ydieresis hyphen -140 KPX Ydieresis i -20 KPX Ydieresis iacute -20 KPX Ydieresis iogonek -20 KPX Ydieresis o -140 KPX Ydieresis oacute -140 KPX Ydieresis ocircumflex -140 KPX Ydieresis odieresis -140 KPX Ydieresis ograve -140 KPX Ydieresis ohungarumlaut -140 KPX Ydieresis omacron -140 KPX Ydieresis oslash -140 KPX Ydieresis otilde -140 KPX Ydieresis period -140 KPX Ydieresis semicolon -60 KPX Ydieresis u -110 KPX Ydieresis uacute -110 KPX Ydieresis ucircumflex -110 KPX Ydieresis udieresis -110 KPX Ydieresis ugrave -110 KPX Ydieresis uhungarumlaut -110 KPX Ydieresis umacron -110 KPX Ydieresis uogonek -110 KPX Ydieresis uring -110 KPX a v -20 KPX a w -20 KPX a y -30 KPX a yacute -30 KPX a ydieresis -30 KPX aacute v -20 KPX aacute w -20 KPX aacute y -30 KPX aacute yacute -30 KPX aacute ydieresis -30 KPX abreve v -20 KPX abreve w -20 KPX abreve y -30 KPX abreve yacute -30 KPX abreve ydieresis -30 KPX acircumflex v -20 KPX acircumflex w -20 KPX acircumflex y -30 KPX acircumflex yacute -30 KPX acircumflex ydieresis -30 KPX adieresis v -20 KPX adieresis w -20 KPX adieresis y -30 KPX adieresis yacute -30 KPX adieresis ydieresis -30 KPX agrave v -20 KPX agrave w -20 KPX agrave y -30 KPX agrave yacute -30 KPX agrave ydieresis -30 KPX amacron v -20 KPX amacron w -20 KPX amacron y -30 KPX amacron yacute -30 KPX amacron ydieresis -30 KPX aogonek v -20 KPX aogonek w -20 KPX aogonek y -30 KPX aogonek yacute -30 KPX aogonek ydieresis -30 KPX aring v -20 KPX aring w -20 KPX aring y -30 KPX aring yacute -30 KPX aring ydieresis -30 KPX atilde v -20 KPX atilde w -20 KPX atilde y -30 KPX atilde yacute -30 KPX atilde ydieresis -30 KPX b b -10 KPX b comma -40 KPX b l -20 KPX b lacute -20 KPX b lcommaaccent -20 KPX b lslash -20 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -20 KPX b y -20 KPX b yacute -20 KPX b ydieresis -20 KPX c comma -15 KPX c k -20 KPX c kcommaaccent -20 KPX cacute comma -15 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX ccaron comma -15 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccedilla comma -15 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX colon space -50 KPX comma quotedblright -100 KPX comma quoteright -100 KPX e comma -15 KPX e period -15 KPX e v -30 KPX e w -20 KPX e x -30 KPX e y -20 KPX e yacute -20 KPX e ydieresis -20 KPX eacute comma -15 KPX eacute period -15 KPX eacute v -30 KPX eacute w -20 KPX eacute x -30 KPX eacute y -20 KPX eacute yacute -20 KPX eacute ydieresis -20 KPX ecaron comma -15 KPX ecaron period -15 KPX ecaron v -30 KPX ecaron w -20 KPX ecaron x -30 KPX ecaron y -20 KPX ecaron yacute -20 KPX ecaron ydieresis -20 KPX ecircumflex comma -15 KPX ecircumflex period -15 KPX ecircumflex v -30 KPX ecircumflex w -20 KPX ecircumflex x -30 KPX ecircumflex y -20 KPX ecircumflex yacute -20 KPX ecircumflex ydieresis -20 KPX edieresis comma -15 KPX edieresis period -15 KPX edieresis v -30 KPX edieresis w -20 KPX edieresis x -30 KPX edieresis y -20 KPX edieresis yacute -20 KPX edieresis ydieresis -20 KPX edotaccent comma -15 KPX edotaccent period -15 KPX edotaccent v -30 KPX edotaccent w -20 KPX edotaccent x -30 KPX edotaccent y -20 KPX edotaccent yacute -20 KPX edotaccent ydieresis -20 KPX egrave comma -15 KPX egrave period -15 KPX egrave v -30 KPX egrave w -20 KPX egrave x -30 KPX egrave y -20 KPX egrave yacute -20 KPX egrave ydieresis -20 KPX emacron comma -15 KPX emacron period -15 KPX emacron v -30 KPX emacron w -20 KPX emacron x -30 KPX emacron y -20 KPX emacron yacute -20 KPX emacron ydieresis -20 KPX eogonek comma -15 KPX eogonek period -15 KPX eogonek v -30 KPX eogonek w -20 KPX eogonek x -30 KPX eogonek y -20 KPX eogonek yacute -20 KPX eogonek ydieresis -20 KPX f a -30 KPX f aacute -30 KPX f abreve -30 KPX f acircumflex -30 KPX f adieresis -30 KPX f agrave -30 KPX f amacron -30 KPX f aogonek -30 KPX f aring -30 KPX f atilde -30 KPX f comma -30 KPX f dotlessi -28 KPX f e -30 KPX f eacute -30 KPX f ecaron -30 KPX f ecircumflex -30 KPX f edieresis -30 KPX f edotaccent -30 KPX f egrave -30 KPX f emacron -30 KPX f eogonek -30 KPX f o -30 KPX f oacute -30 KPX f ocircumflex -30 KPX f odieresis -30 KPX f ograve -30 KPX f ohungarumlaut -30 KPX f omacron -30 KPX f oslash -30 KPX f otilde -30 KPX f period -30 KPX f quotedblright 60 KPX f quoteright 50 KPX g r -10 KPX g racute -10 KPX g rcaron -10 KPX g rcommaaccent -10 KPX gbreve r -10 KPX gbreve racute -10 KPX gbreve rcaron -10 KPX gbreve rcommaaccent -10 KPX gcommaaccent r -10 KPX gcommaaccent racute -10 KPX gcommaaccent rcaron -10 KPX gcommaaccent rcommaaccent -10 KPX h y -30 KPX h yacute -30 KPX h ydieresis -30 KPX k e -20 KPX k eacute -20 KPX k ecaron -20 KPX k ecircumflex -20 KPX k edieresis -20 KPX k edotaccent -20 KPX k egrave -20 KPX k emacron -20 KPX k eogonek -20 KPX k o -20 KPX k oacute -20 KPX k ocircumflex -20 KPX k odieresis -20 KPX k ograve -20 KPX k ohungarumlaut -20 KPX k omacron -20 KPX k oslash -20 KPX k otilde -20 KPX kcommaaccent e -20 KPX kcommaaccent eacute -20 KPX kcommaaccent ecaron -20 KPX kcommaaccent ecircumflex -20 KPX kcommaaccent edieresis -20 KPX kcommaaccent edotaccent -20 KPX kcommaaccent egrave -20 KPX kcommaaccent emacron -20 KPX kcommaaccent eogonek -20 KPX kcommaaccent o -20 KPX kcommaaccent oacute -20 KPX kcommaaccent ocircumflex -20 KPX kcommaaccent odieresis -20 KPX kcommaaccent ograve -20 KPX kcommaaccent ohungarumlaut -20 KPX kcommaaccent omacron -20 KPX kcommaaccent oslash -20 KPX kcommaaccent otilde -20 KPX m u -10 KPX m uacute -10 KPX m ucircumflex -10 KPX m udieresis -10 KPX m ugrave -10 KPX m uhungarumlaut -10 KPX m umacron -10 KPX m uogonek -10 KPX m uring -10 KPX m y -15 KPX m yacute -15 KPX m ydieresis -15 KPX n u -10 KPX n uacute -10 KPX n ucircumflex -10 KPX n udieresis -10 KPX n ugrave -10 KPX n uhungarumlaut -10 KPX n umacron -10 KPX n uogonek -10 KPX n uring -10 KPX n v -20 KPX n y -15 KPX n yacute -15 KPX n ydieresis -15 KPX nacute u -10 KPX nacute uacute -10 KPX nacute ucircumflex -10 KPX nacute udieresis -10 KPX nacute ugrave -10 KPX nacute uhungarumlaut -10 KPX nacute umacron -10 KPX nacute uogonek -10 KPX nacute uring -10 KPX nacute v -20 KPX nacute y -15 KPX nacute yacute -15 KPX nacute ydieresis -15 KPX ncaron u -10 KPX ncaron uacute -10 KPX ncaron ucircumflex -10 KPX ncaron udieresis -10 KPX ncaron ugrave -10 KPX ncaron uhungarumlaut -10 KPX ncaron umacron -10 KPX ncaron uogonek -10 KPX ncaron uring -10 KPX ncaron v -20 KPX ncaron y -15 KPX ncaron yacute -15 KPX ncaron ydieresis -15 KPX ncommaaccent u -10 KPX ncommaaccent uacute -10 KPX ncommaaccent ucircumflex -10 KPX ncommaaccent udieresis -10 KPX ncommaaccent ugrave -10 KPX ncommaaccent uhungarumlaut -10 KPX ncommaaccent umacron -10 KPX ncommaaccent uogonek -10 KPX ncommaaccent uring -10 KPX ncommaaccent v -20 KPX ncommaaccent y -15 KPX ncommaaccent yacute -15 KPX ncommaaccent ydieresis -15 KPX ntilde u -10 KPX ntilde uacute -10 KPX ntilde ucircumflex -10 KPX ntilde udieresis -10 KPX ntilde ugrave -10 KPX ntilde uhungarumlaut -10 KPX ntilde umacron -10 KPX ntilde uogonek -10 KPX ntilde uring -10 KPX ntilde v -20 KPX ntilde y -15 KPX ntilde yacute -15 KPX ntilde ydieresis -15 KPX o comma -40 KPX o period -40 KPX o v -15 KPX o w -15 KPX o x -30 KPX o y -30 KPX o yacute -30 KPX o ydieresis -30 KPX oacute comma -40 KPX oacute period -40 KPX oacute v -15 KPX oacute w -15 KPX oacute x -30 KPX oacute y -30 KPX oacute yacute -30 KPX oacute ydieresis -30 KPX ocircumflex comma -40 KPX ocircumflex period -40 KPX ocircumflex v -15 KPX ocircumflex w -15 KPX ocircumflex x -30 KPX ocircumflex y -30 KPX ocircumflex yacute -30 KPX ocircumflex ydieresis -30 KPX odieresis comma -40 KPX odieresis period -40 KPX odieresis v -15 KPX odieresis w -15 KPX odieresis x -30 KPX odieresis y -30 KPX odieresis yacute -30 KPX odieresis ydieresis -30 KPX ograve comma -40 KPX ograve period -40 KPX ograve v -15 KPX ograve w -15 KPX ograve x -30 KPX ograve y -30 KPX ograve yacute -30 KPX ograve ydieresis -30 KPX ohungarumlaut comma -40 KPX ohungarumlaut period -40 KPX ohungarumlaut v -15 KPX ohungarumlaut w -15 KPX ohungarumlaut x -30 KPX ohungarumlaut y -30 KPX ohungarumlaut yacute -30 KPX ohungarumlaut ydieresis -30 KPX omacron comma -40 KPX omacron period -40 KPX omacron v -15 KPX omacron w -15 KPX omacron x -30 KPX omacron y -30 KPX omacron yacute -30 KPX omacron ydieresis -30 KPX oslash a -55 KPX oslash aacute -55 KPX oslash abreve -55 KPX oslash acircumflex -55 KPX oslash adieresis -55 KPX oslash agrave -55 KPX oslash amacron -55 KPX oslash aogonek -55 KPX oslash aring -55 KPX oslash atilde -55 KPX oslash b -55 KPX oslash c -55 KPX oslash cacute -55 KPX oslash ccaron -55 KPX oslash ccedilla -55 KPX oslash comma -95 KPX oslash d -55 KPX oslash dcroat -55 KPX oslash e -55 KPX oslash eacute -55 KPX oslash ecaron -55 KPX oslash ecircumflex -55 KPX oslash edieresis -55 KPX oslash edotaccent -55 KPX oslash egrave -55 KPX oslash emacron -55 KPX oslash eogonek -55 KPX oslash f -55 KPX oslash g -55 KPX oslash gbreve -55 KPX oslash gcommaaccent -55 KPX oslash h -55 KPX oslash i -55 KPX oslash iacute -55 KPX oslash icircumflex -55 KPX oslash idieresis -55 KPX oslash igrave -55 KPX oslash imacron -55 KPX oslash iogonek -55 KPX oslash j -55 KPX oslash k -55 KPX oslash kcommaaccent -55 KPX oslash l -55 KPX oslash lacute -55 KPX oslash lcommaaccent -55 KPX oslash lslash -55 KPX oslash m -55 KPX oslash n -55 KPX oslash nacute -55 KPX oslash ncaron -55 KPX oslash ncommaaccent -55 KPX oslash ntilde -55 KPX oslash o -55 KPX oslash oacute -55 KPX oslash ocircumflex -55 KPX oslash odieresis -55 KPX oslash ograve -55 KPX oslash ohungarumlaut -55 KPX oslash omacron -55 KPX oslash oslash -55 KPX oslash otilde -55 KPX oslash p -55 KPX oslash period -95 KPX oslash q -55 KPX oslash r -55 KPX oslash racute -55 KPX oslash rcaron -55 KPX oslash rcommaaccent -55 KPX oslash s -55 KPX oslash sacute -55 KPX oslash scaron -55 KPX oslash scedilla -55 KPX oslash scommaaccent -55 KPX oslash t -55 KPX oslash tcommaaccent -55 KPX oslash u -55 KPX oslash uacute -55 KPX oslash ucircumflex -55 KPX oslash udieresis -55 KPX oslash ugrave -55 KPX oslash uhungarumlaut -55 KPX oslash umacron -55 KPX oslash uogonek -55 KPX oslash uring -55 KPX oslash v -70 KPX oslash w -70 KPX oslash x -85 KPX oslash y -70 KPX oslash yacute -70 KPX oslash ydieresis -70 KPX oslash z -55 KPX oslash zacute -55 KPX oslash zcaron -55 KPX oslash zdotaccent -55 KPX otilde comma -40 KPX otilde period -40 KPX otilde v -15 KPX otilde w -15 KPX otilde x -30 KPX otilde y -30 KPX otilde yacute -30 KPX otilde ydieresis -30 KPX p comma -35 KPX p period -35 KPX p y -30 KPX p yacute -30 KPX p ydieresis -30 KPX period quotedblright -100 KPX period quoteright -100 KPX period space -60 KPX quotedblright space -40 KPX quoteleft quoteleft -57 KPX quoteright d -50 KPX quoteright dcroat -50 KPX quoteright quoteright -57 KPX quoteright r -50 KPX quoteright racute -50 KPX quoteright rcaron -50 KPX quoteright rcommaaccent -50 KPX quoteright s -50 KPX quoteright sacute -50 KPX quoteright scaron -50 KPX quoteright scedilla -50 KPX quoteright scommaaccent -50 KPX quoteright space -70 KPX r a -10 KPX r aacute -10 KPX r abreve -10 KPX r acircumflex -10 KPX r adieresis -10 KPX r agrave -10 KPX r amacron -10 KPX r aogonek -10 KPX r aring -10 KPX r atilde -10 KPX r colon 30 KPX r comma -50 KPX r i 15 KPX r iacute 15 KPX r icircumflex 15 KPX r idieresis 15 KPX r igrave 15 KPX r imacron 15 KPX r iogonek 15 KPX r k 15 KPX r kcommaaccent 15 KPX r l 15 KPX r lacute 15 KPX r lcommaaccent 15 KPX r lslash 15 KPX r m 25 KPX r n 25 KPX r nacute 25 KPX r ncaron 25 KPX r ncommaaccent 25 KPX r ntilde 25 KPX r p 30 KPX r period -50 KPX r semicolon 30 KPX r t 40 KPX r tcommaaccent 40 KPX r u 15 KPX r uacute 15 KPX r ucircumflex 15 KPX r udieresis 15 KPX r ugrave 15 KPX r uhungarumlaut 15 KPX r umacron 15 KPX r uogonek 15 KPX r uring 15 KPX r v 30 KPX r y 30 KPX r yacute 30 KPX r ydieresis 30 KPX racute a -10 KPX racute aacute -10 KPX racute abreve -10 KPX racute acircumflex -10 KPX racute adieresis -10 KPX racute agrave -10 KPX racute amacron -10 KPX racute aogonek -10 KPX racute aring -10 KPX racute atilde -10 KPX racute colon 30 KPX racute comma -50 KPX racute i 15 KPX racute iacute 15 KPX racute icircumflex 15 KPX racute idieresis 15 KPX racute igrave 15 KPX racute imacron 15 KPX racute iogonek 15 KPX racute k 15 KPX racute kcommaaccent 15 KPX racute l 15 KPX racute lacute 15 KPX racute lcommaaccent 15 KPX racute lslash 15 KPX racute m 25 KPX racute n 25 KPX racute nacute 25 KPX racute ncaron 25 KPX racute ncommaaccent 25 KPX racute ntilde 25 KPX racute p 30 KPX racute period -50 KPX racute semicolon 30 KPX racute t 40 KPX racute tcommaaccent 40 KPX racute u 15 KPX racute uacute 15 KPX racute ucircumflex 15 KPX racute udieresis 15 KPX racute ugrave 15 KPX racute uhungarumlaut 15 KPX racute umacron 15 KPX racute uogonek 15 KPX racute uring 15 KPX racute v 30 KPX racute y 30 KPX racute yacute 30 KPX racute ydieresis 30 KPX rcaron a -10 KPX rcaron aacute -10 KPX rcaron abreve -10 KPX rcaron acircumflex -10 KPX rcaron adieresis -10 KPX rcaron agrave -10 KPX rcaron amacron -10 KPX rcaron aogonek -10 KPX rcaron aring -10 KPX rcaron atilde -10 KPX rcaron colon 30 KPX rcaron comma -50 KPX rcaron i 15 KPX rcaron iacute 15 KPX rcaron icircumflex 15 KPX rcaron idieresis 15 KPX rcaron igrave 15 KPX rcaron imacron 15 KPX rcaron iogonek 15 KPX rcaron k 15 KPX rcaron kcommaaccent 15 KPX rcaron l 15 KPX rcaron lacute 15 KPX rcaron lcommaaccent 15 KPX rcaron lslash 15 KPX rcaron m 25 KPX rcaron n 25 KPX rcaron nacute 25 KPX rcaron ncaron 25 KPX rcaron ncommaaccent 25 KPX rcaron ntilde 25 KPX rcaron p 30 KPX rcaron period -50 KPX rcaron semicolon 30 KPX rcaron t 40 KPX rcaron tcommaaccent 40 KPX rcaron u 15 KPX rcaron uacute 15 KPX rcaron ucircumflex 15 KPX rcaron udieresis 15 KPX rcaron ugrave 15 KPX rcaron uhungarumlaut 15 KPX rcaron umacron 15 KPX rcaron uogonek 15 KPX rcaron uring 15 KPX rcaron v 30 KPX rcaron y 30 KPX rcaron yacute 30 KPX rcaron ydieresis 30 KPX rcommaaccent a -10 KPX rcommaaccent aacute -10 KPX rcommaaccent abreve -10 KPX rcommaaccent acircumflex -10 KPX rcommaaccent adieresis -10 KPX rcommaaccent agrave -10 KPX rcommaaccent amacron -10 KPX rcommaaccent aogonek -10 KPX rcommaaccent aring -10 KPX rcommaaccent atilde -10 KPX rcommaaccent colon 30 KPX rcommaaccent comma -50 KPX rcommaaccent i 15 KPX rcommaaccent iacute 15 KPX rcommaaccent icircumflex 15 KPX rcommaaccent idieresis 15 KPX rcommaaccent igrave 15 KPX rcommaaccent imacron 15 KPX rcommaaccent iogonek 15 KPX rcommaaccent k 15 KPX rcommaaccent kcommaaccent 15 KPX rcommaaccent l 15 KPX rcommaaccent lacute 15 KPX rcommaaccent lcommaaccent 15 KPX rcommaaccent lslash 15 KPX rcommaaccent m 25 KPX rcommaaccent n 25 KPX rcommaaccent nacute 25 KPX rcommaaccent ncaron 25 KPX rcommaaccent ncommaaccent 25 KPX rcommaaccent ntilde 25 KPX rcommaaccent p 30 KPX rcommaaccent period -50 KPX rcommaaccent semicolon 30 KPX rcommaaccent t 40 KPX rcommaaccent tcommaaccent 40 KPX rcommaaccent u 15 KPX rcommaaccent uacute 15 KPX rcommaaccent ucircumflex 15 KPX rcommaaccent udieresis 15 KPX rcommaaccent ugrave 15 KPX rcommaaccent uhungarumlaut 15 KPX rcommaaccent umacron 15 KPX rcommaaccent uogonek 15 KPX rcommaaccent uring 15 KPX rcommaaccent v 30 KPX rcommaaccent y 30 KPX rcommaaccent yacute 30 KPX rcommaaccent ydieresis 30 KPX s comma -15 KPX s period -15 KPX s w -30 KPX sacute comma -15 KPX sacute period -15 KPX sacute w -30 KPX scaron comma -15 KPX scaron period -15 KPX scaron w -30 KPX scedilla comma -15 KPX scedilla period -15 KPX scedilla w -30 KPX scommaaccent comma -15 KPX scommaaccent period -15 KPX scommaaccent w -30 KPX semicolon space -50 KPX space T -50 KPX space Tcaron -50 KPX space Tcommaaccent -50 KPX space V -50 KPX space W -40 KPX space Y -90 KPX space Yacute -90 KPX space Ydieresis -90 KPX space quotedblleft -30 KPX space quoteleft -60 KPX v a -25 KPX v aacute -25 KPX v abreve -25 KPX v acircumflex -25 KPX v adieresis -25 KPX v agrave -25 KPX v amacron -25 KPX v aogonek -25 KPX v aring -25 KPX v atilde -25 KPX v comma -80 KPX v e -25 KPX v eacute -25 KPX v ecaron -25 KPX v ecircumflex -25 KPX v edieresis -25 KPX v edotaccent -25 KPX v egrave -25 KPX v emacron -25 KPX v eogonek -25 KPX v o -25 KPX v oacute -25 KPX v ocircumflex -25 KPX v odieresis -25 KPX v ograve -25 KPX v ohungarumlaut -25 KPX v omacron -25 KPX v oslash -25 KPX v otilde -25 KPX v period -80 KPX w a -15 KPX w aacute -15 KPX w abreve -15 KPX w acircumflex -15 KPX w adieresis -15 KPX w agrave -15 KPX w amacron -15 KPX w aogonek -15 KPX w aring -15 KPX w atilde -15 KPX w comma -60 KPX w e -10 KPX w eacute -10 KPX w ecaron -10 KPX w ecircumflex -10 KPX w edieresis -10 KPX w edotaccent -10 KPX w egrave -10 KPX w emacron -10 KPX w eogonek -10 KPX w o -10 KPX w oacute -10 KPX w ocircumflex -10 KPX w odieresis -10 KPX w ograve -10 KPX w ohungarumlaut -10 KPX w omacron -10 KPX w oslash -10 KPX w otilde -10 KPX w period -60 KPX x e -30 KPX x eacute -30 KPX x ecaron -30 KPX x ecircumflex -30 KPX x edieresis -30 KPX x edotaccent -30 KPX x egrave -30 KPX x emacron -30 KPX x eogonek -30 KPX y a -20 KPX y aacute -20 KPX y abreve -20 KPX y acircumflex -20 KPX y adieresis -20 KPX y agrave -20 KPX y amacron -20 KPX y aogonek -20 KPX y aring -20 KPX y atilde -20 KPX y comma -100 KPX y e -20 KPX y eacute -20 KPX y ecaron -20 KPX y ecircumflex -20 KPX y edieresis -20 KPX y edotaccent -20 KPX y egrave -20 KPX y emacron -20 KPX y eogonek -20 KPX y o -20 KPX y oacute -20 KPX y ocircumflex -20 KPX y odieresis -20 KPX y ograve -20 KPX y ohungarumlaut -20 KPX y omacron -20 KPX y oslash -20 KPX y otilde -20 KPX y period -100 KPX yacute a -20 KPX yacute aacute -20 KPX yacute abreve -20 KPX yacute acircumflex -20 KPX yacute adieresis -20 KPX yacute agrave -20 KPX yacute amacron -20 KPX yacute aogonek -20 KPX yacute aring -20 KPX yacute atilde -20 KPX yacute comma -100 KPX yacute e -20 KPX yacute eacute -20 KPX yacute ecaron -20 KPX yacute ecircumflex -20 KPX yacute edieresis -20 KPX yacute edotaccent -20 KPX yacute egrave -20 KPX yacute emacron -20 KPX yacute eogonek -20 KPX yacute o -20 KPX yacute oacute -20 KPX yacute ocircumflex -20 KPX yacute odieresis -20 KPX yacute ograve -20 KPX yacute ohungarumlaut -20 KPX yacute omacron -20 KPX yacute oslash -20 KPX yacute otilde -20 KPX yacute period -100 KPX ydieresis a -20 KPX ydieresis aacute -20 KPX ydieresis abreve -20 KPX ydieresis acircumflex -20 KPX ydieresis adieresis -20 KPX ydieresis agrave -20 KPX ydieresis amacron -20 KPX ydieresis aogonek -20 KPX ydieresis aring -20 KPX ydieresis atilde -20 KPX ydieresis comma -100 KPX ydieresis e -20 KPX ydieresis eacute -20 KPX ydieresis ecaron -20 KPX ydieresis ecircumflex -20 KPX ydieresis edieresis -20 KPX ydieresis edotaccent -20 KPX ydieresis egrave -20 KPX ydieresis emacron -20 KPX ydieresis eogonek -20 KPX ydieresis o -20 KPX ydieresis oacute -20 KPX ydieresis ocircumflex -20 KPX ydieresis odieresis -20 KPX ydieresis ograve -20 KPX ydieresis ohungarumlaut -20 KPX ydieresis omacron -20 KPX ydieresis oslash -20 KPX ydieresis otilde -20 KPX ydieresis period -100 KPX z e -15 KPX z eacute -15 KPX z ecaron -15 KPX z ecircumflex -15 KPX z edieresis -15 KPX z edotaccent -15 KPX z egrave -15 KPX z emacron -15 KPX z eogonek -15 KPX z o -15 KPX z oacute -15 KPX z ocircumflex -15 KPX z odieresis -15 KPX z ograve -15 KPX z ohungarumlaut -15 KPX z omacron -15 KPX z oslash -15 KPX z otilde -15 KPX zacute e -15 KPX zacute eacute -15 KPX zacute ecaron -15 KPX zacute ecircumflex -15 KPX zacute edieresis -15 KPX zacute edotaccent -15 KPX zacute egrave -15 KPX zacute emacron -15 KPX zacute eogonek -15 KPX zacute o -15 KPX zacute oacute -15 KPX zacute ocircumflex -15 KPX zacute odieresis -15 KPX zacute ograve -15 KPX zacute ohungarumlaut -15 KPX zacute omacron -15 KPX zacute oslash -15 KPX zacute otilde -15 KPX zcaron e -15 KPX zcaron eacute -15 KPX zcaron ecaron -15 KPX zcaron ecircumflex -15 KPX zcaron edieresis -15 KPX zcaron edotaccent -15 KPX zcaron egrave -15 KPX zcaron emacron -15 KPX zcaron eogonek -15 KPX zcaron o -15 KPX zcaron oacute -15 KPX zcaron ocircumflex -15 KPX zcaron odieresis -15 KPX zcaron ograve -15 KPX zcaron ohungarumlaut -15 KPX zcaron omacron -15 KPX zcaron oslash -15 KPX zcaron otilde -15 KPX zdotaccent e -15 KPX zdotaccent eacute -15 KPX zdotaccent ecaron -15 KPX zdotaccent ecircumflex -15 KPX zdotaccent edieresis -15 KPX zdotaccent edotaccent -15 KPX zdotaccent egrave -15 KPX zdotaccent emacron -15 KPX zdotaccent eogonek -15 KPX zdotaccent o -15 KPX zdotaccent oacute -15 KPX zdotaccent ocircumflex -15 KPX zdotaccent odieresis -15 KPX zdotaccent ograve -15 KPX zdotaccent ohungarumlaut -15 KPX zdotaccent omacron -15 KPX zdotaccent oslash -15 KPX zdotaccent otilde -15 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Palatino-BoldItalic.afm0000644000222100022210000011357114541067540017146 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:37:00 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43076 Comment VMusage 51697 66722 FontName Palatino-BoldItalic FullName Palatino Bold Italic FamilyName Palatino Weight Bold ItalicAngle -10 IsFixedPitch false FontBBox -170 -271 1073 926 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 681 XHeight 469 Ascender 726 Descender -281 StdHW 55 StdVW 122 StartCharMetrics 359 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 58 -17 322 695 ; C 34 ; WX 500 ; N quotedbl ; B 137 467 493 720 ; C 35 ; WX 500 ; N numbersign ; B 4 0 496 673 ; C 36 ; WX 500 ; N dollar ; B 20 -108 477 737 ; C 37 ; WX 889 ; N percent ; B 56 -17 790 697 ; C 38 ; WX 833 ; N ampersand ; B 74 -17 811 695 ; C 39 ; WX 278 ; N quoteright ; B 76 431 302 720 ; C 40 ; WX 333 ; N parenleft ; B 58 -129 368 723 ; C 41 ; WX 333 ; N parenright ; B -12 -129 298 723 ; C 42 ; WX 444 ; N asterisk ; B 84 332 439 695 ; C 43 ; WX 606 ; N plus ; B 50 -5 556 501 ; C 44 ; WX 250 ; N comma ; B -33 -164 208 147 ; C 45 ; WX 389 ; N hyphen ; B 37 198 362 300 ; C 46 ; WX 250 ; N period ; B 48 -17 187 135 ; C 47 ; WX 315 ; N slash ; B 1 -17 315 720 ; C 48 ; WX 500 ; N zero ; B 42 -17 490 683 ; C 49 ; WX 500 ; N one ; B 41 -3 434 678 ; C 50 ; WX 500 ; N two ; B 1 -3 454 683 ; C 51 ; WX 500 ; N three ; B 8 -17 450 683 ; C 52 ; WX 500 ; N four ; B 3 -3 487 683 ; C 53 ; WX 500 ; N five ; B 14 -17 481 675 ; C 54 ; WX 500 ; N six ; B 39 -17 488 683 ; C 55 ; WX 500 ; N seven ; B 69 -3 544 674 ; C 56 ; WX 500 ; N eight ; B 26 -17 484 683 ; C 57 ; WX 500 ; N nine ; B 27 -17 491 683 ; C 58 ; WX 250 ; N colon ; B 38 -17 236 452 ; C 59 ; WX 250 ; N semicolon ; B -33 -164 247 452 ; C 60 ; WX 606 ; N less ; B 49 -21 558 517 ; C 61 ; WX 606 ; N equal ; B 51 106 555 390 ; C 62 ; WX 606 ; N greater ; B 48 -21 557 517 ; C 63 ; WX 444 ; N question ; B 91 -17 450 695 ; C 64 ; WX 833 ; N at ; B 82 -12 744 681 ; C 65 ; WX 722 ; N A ; B -35 -3 685 683 ; C 66 ; WX 667 ; N B ; B 8 -3 629 681 ; C 67 ; WX 685 ; N C ; B 69 -17 695 695 ; C 68 ; WX 778 ; N D ; B 0 -3 747 682 ; C 69 ; WX 611 ; N E ; B 11 -3 606 681 ; C 70 ; WX 556 ; N F ; B -6 -3 593 681 ; C 71 ; WX 778 ; N G ; B 72 -17 750 695 ; C 72 ; WX 778 ; N H ; B -12 -3 826 681 ; C 73 ; WX 389 ; N I ; B -1 -3 412 681 ; C 74 ; WX 389 ; N J ; B -29 -207 417 681 ; C 75 ; WX 722 ; N K ; B -10 -3 746 681 ; C 76 ; WX 611 ; N L ; B 26 -3 578 681 ; C 77 ; WX 944 ; N M ; B -23 -17 985 681 ; C 78 ; WX 778 ; N N ; B -2 -3 829 681 ; C 79 ; WX 833 ; N O ; B 76 -17 794 695 ; C 80 ; WX 667 ; N P ; B 11 -3 673 681 ; C 81 ; WX 833 ; N Q ; B 76 -222 794 695 ; C 82 ; WX 722 ; N R ; B 4 -3 697 681 ; C 83 ; WX 556 ; N S ; B 50 -17 517 695 ; C 84 ; WX 611 ; N T ; B 56 -3 674 681 ; C 85 ; WX 778 ; N U ; B 83 -17 825 681 ; C 86 ; WX 667 ; N V ; B 67 -3 745 681 ; C 87 ; WX 1000 ; N W ; B 67 -3 1073 689 ; C 88 ; WX 722 ; N X ; B -9 -3 772 681 ; C 89 ; WX 611 ; N Y ; B 54 -3 675 695 ; C 90 ; WX 667 ; N Z ; B 1 -3 676 681 ; C 91 ; WX 333 ; N bracketleft ; B 45 -102 381 723 ; C 92 ; WX 606 ; N backslash ; B 72 0 534 720 ; C 93 ; WX 333 ; N bracketright ; B -21 -102 315 723 ; C 94 ; WX 606 ; N asciicircum ; B 63 275 543 678 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 278 ; N quoteleft ; B 65 431 291 720 ; C 97 ; WX 556 ; N a ; B 44 -17 519 470 ; C 98 ; WX 537 ; N b ; B 44 -17 494 726 ; C 99 ; WX 444 ; N c ; B 32 -17 436 469 ; C 100 ; WX 556 ; N d ; B 38 -17 550 726 ; C 101 ; WX 444 ; N e ; B 28 -17 418 469 ; C 102 ; WX 333 ; N f ; B -130 -271 449 726 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B -50 -271 529 469 ; C 104 ; WX 556 ; N h ; B 22 -17 522 726 ; C 105 ; WX 333 ; N i ; B 26 -17 312 695 ; C 106 ; WX 333 ; N j ; B -64 -271 323 695 ; C 107 ; WX 556 ; N k ; B 34 -17 528 726 ; C 108 ; WX 333 ; N l ; B 64 -17 318 726 ; C 109 ; WX 833 ; N m ; B 19 -17 803 469 ; C 110 ; WX 556 ; N n ; B 17 -17 521 469 ; C 111 ; WX 556 ; N o ; B 48 -17 502 469 ; C 112 ; WX 556 ; N p ; B -21 -271 516 469 ; C 113 ; WX 537 ; N q ; B 32 -271 513 469 ; C 114 ; WX 389 ; N r ; B 20 -17 411 469 ; C 115 ; WX 444 ; N s ; B 25 -17 406 469 ; C 116 ; WX 389 ; N t ; B 42 -17 409 636 ; C 117 ; WX 556 ; N u ; B 22 -17 521 469 ; C 118 ; WX 556 ; N v ; B 19 -17 513 469 ; C 119 ; WX 833 ; N w ; B 27 -17 802 469 ; C 120 ; WX 500 ; N x ; B -8 -17 500 469 ; C 121 ; WX 556 ; N y ; B 13 -271 541 469 ; C 122 ; WX 500 ; N z ; B 31 -17 470 469 ; C 123 ; WX 333 ; N braceleft ; B 18 -105 334 720 ; C 124 ; WX 606 ; N bar ; B 259 -250 347 750 ; C 125 ; WX 333 ; N braceright ; B -1 -105 315 720 ; C 126 ; WX 606 ; N asciitilde ; B 51 151 555 346 ; C 160 ; WX 250 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 333 ; N exclamdown ; B 2 -225 259 479 ; C 162 ; WX 500 ; N cent ; B 52 -105 456 547 ; C 163 ; WX 500 ; N sterling ; B 21 -5 501 683 ; C 164 ; WX 167 ; N fraction ; B -170 0 338 683 ; C 165 ; WX 500 ; N yen ; B 11 -3 538 695 ; C 166 ; WX 500 ; N florin ; B 8 -242 479 690 ; C 167 ; WX 556 ; N section ; B 47 -151 497 695 ; C 168 ; WX 500 ; N currency ; B 32 96 468 533 ; C 169 ; WX 250 ; N quotesingle ; B 127 467 293 720 ; C 170 ; WX 500 ; N quotedblleft ; B 65 431 511 720 ; C 171 ; WX 500 ; N guillemotleft ; B 35 43 458 446 ; C 172 ; WX 333 ; N guilsinglleft ; B 60 43 292 446 ; C 173 ; WX 333 ; N guilsinglright ; B 35 40 267 443 ; C 174 ; WX 611 ; N fi ; B -130 -271 588 726 ; C 175 ; WX 611 ; N fl ; B -130 -271 631 726 ; C 177 ; WX 500 ; N endash ; B -12 214 512 282 ; C 178 ; WX 556 ; N dagger ; B 67 -3 499 685 ; C 179 ; WX 556 ; N daggerdbl ; B 33 -153 537 693 ; C 180 ; WX 250 ; N periodcentered ; B 67 172 206 324 ; C 182 ; WX 556 ; N paragraph ; B 14 -204 629 681 ; C 183 ; WX 606 ; N bullet ; B 131 172 475 516 ; C 184 ; WX 250 ; N quotesinglbase ; B -3 -144 220 145 ; C 185 ; WX 500 ; N quotedblbase ; B -18 -144 424 145 ; C 186 ; WX 500 ; N quotedblright ; B 73 431 519 720 ; C 187 ; WX 500 ; N guillemotright ; B 35 40 458 443 ; C 188 ; WX 1000 ; N ellipsis ; B 91 -17 896 135 ; C 189 ; WX 1000 ; N perthousand ; B 65 -17 912 691 ; C 191 ; WX 444 ; N questiondown ; B -12 -226 347 479 ; C 193 ; WX 333 ; N grave ; B 110 518 322 699 ; C 194 ; WX 333 ; N acute ; B 153 518 392 699 ; C 195 ; WX 333 ; N circumflex ; B 88 518 415 692 ; C 196 ; WX 333 ; N tilde ; B 82 537 441 656 ; C 197 ; WX 333 ; N macron ; B 76 538 418 608 ; C 198 ; WX 333 ; N breve ; B 96 518 412 680 ; C 199 ; WX 333 ; N dotaccent ; B 202 564 325 695 ; C 200 ; WX 333 ; N dieresis ; B 90 564 426 695 ; C 202 ; WX 556 ; N ring ; B 277 514 477 714 ; C 203 ; WX 333 ; N cedilla ; B 12 -218 248 5 ; C 205 ; WX 333 ; N hungarumlaut ; B -28 518 409 699 ; C 206 ; WX 333 ; N ogonek ; B 76 -226 260 -18 ; C 207 ; WX 333 ; N caron ; B 113 518 445 692 ; C 208 ; WX 1000 ; N emdash ; B -12 214 1012 282 ; C 225 ; WX 944 ; N AE ; B -29 -3 927 681 ; C 227 ; WX 333 ; N ordfeminine ; B 47 391 355 684 ; C 232 ; WX 611 ; N Lslash ; B 6 -3 578 681 ; C 233 ; WX 833 ; N Oslash ; B 57 -54 797 730 ; C 234 ; WX 944 ; N OE ; B 39 -17 961 695 ; C 235 ; WX 333 ; N ordmasculine ; B 51 391 346 683 ; C 241 ; WX 738 ; N ae ; B 44 -17 711 469 ; C 245 ; WX 333 ; N dotlessi ; B 26 -17 293 469 ; C 248 ; WX 333 ; N lslash ; B 13 -17 365 726 ; C 249 ; WX 556 ; N oslash ; B 14 -50 522 506 ; C 250 ; WX 778 ; N oe ; B 48 -17 755 469 ; C 251 ; WX 556 ; N germandbls ; B -131 -271 549 726 ; C -1 ; WX 389 ; N Idieresis ; B -1 -3 454 880 ; C -1 ; WX 444 ; N eacute ; B 28 -17 448 719 ; C -1 ; WX 556 ; N abreve ; B 44 -17 524 700 ; C -1 ; WX 556 ; N uhungarumlaut ; B 22 -17 621 719 ; C -1 ; WX 444 ; N ecaron ; B 28 -17 501 712 ; C -1 ; WX 611 ; N Ydieresis ; B 54 -3 675 880 ; C -1 ; WX 606 ; N divide ; B 50 -5 556 501 ; C -1 ; WX 611 ; N Yacute ; B 54 -3 675 911 ; C -1 ; WX 722 ; N Acircumflex ; B -35 -3 685 904 ; C -1 ; WX 556 ; N aacute ; B 44 -17 519 719 ; C -1 ; WX 778 ; N Ucircumflex ; B 83 -17 825 904 ; C -1 ; WX 556 ; N yacute ; B 13 -271 541 719 ; C -1 ; WX 444 ; N scommaaccent ; B 25 -271 406 469 ; C -1 ; WX 444 ; N ecircumflex ; B 28 -17 471 712 ; C -1 ; WX 778 ; N Uring ; B 83 -17 825 926 ; C -1 ; WX 778 ; N Udieresis ; B 83 -17 825 880 ; C -1 ; WX 556 ; N aogonek ; B 44 -216 519 470 ; C -1 ; WX 778 ; N Uacute ; B 83 -17 825 911 ; C -1 ; WX 556 ; N uogonek ; B 22 -210 521 469 ; C -1 ; WX 611 ; N Edieresis ; B 11 -3 606 880 ; C -1 ; WX 778 ; N Dcroat ; B 0 -3 747 682 ; C -1 ; WX 250 ; N commaaccent ; B -52 -271 102 -50 ; C -1 ; WX 747 ; N copyright ; B 26 -17 720 695 ; C -1 ; WX 611 ; N Emacron ; B 11 -3 606 820 ; C -1 ; WX 444 ; N ccaron ; B 32 -17 501 712 ; C -1 ; WX 556 ; N aring ; B 44 -17 519 734 ; C -1 ; WX 778 ; N Ncommaaccent ; B -2 -271 829 681 ; C -1 ; WX 333 ; N lacute ; B 64 -17 392 896 ; C -1 ; WX 556 ; N agrave ; B 44 -17 519 719 ; C -1 ; WX 611 ; N Tcommaaccent ; B 56 -271 674 681 ; C -1 ; WX 685 ; N Cacute ; B 69 -17 695 911 ; C -1 ; WX 556 ; N atilde ; B 44 -17 553 676 ; C -1 ; WX 611 ; N Edotaccent ; B 11 -3 606 880 ; C -1 ; WX 444 ; N scaron ; B 25 -17 489 712 ; C -1 ; WX 444 ; N scedilla ; B 25 -218 406 469 ; C -1 ; WX 333 ; N iacute ; B 26 -17 392 719 ; C -1 ; WX 471 ; N lozenge ; B 7 0 465 732 ; C -1 ; WX 722 ; N Rcaron ; B 4 -3 697 904 ; C -1 ; WX 778 ; N Gcommaaccent ; B 72 -271 750 695 ; C -1 ; WX 556 ; N ucircumflex ; B 22 -17 521 712 ; C -1 ; WX 556 ; N acircumflex ; B 44 -17 527 712 ; C -1 ; WX 722 ; N Amacron ; B -35 -3 685 820 ; C -1 ; WX 389 ; N rcaron ; B 20 -17 473 712 ; C -1 ; WX 444 ; N ccedilla ; B 27 -218 436 469 ; C -1 ; WX 667 ; N Zdotaccent ; B 1 -3 676 880 ; C -1 ; WX 667 ; N Thorn ; B 11 -3 644 681 ; C -1 ; WX 833 ; N Omacron ; B 76 -17 794 820 ; C -1 ; WX 722 ; N Racute ; B 4 -3 697 911 ; C -1 ; WX 556 ; N Sacute ; B 50 -17 517 911 ; C -1 ; WX 616 ; N dcaron ; B 38 -17 720 726 ; C -1 ; WX 778 ; N Umacron ; B 83 -17 825 820 ; C -1 ; WX 556 ; N uring ; B 22 -17 521 734 ; C -1 ; WX 300 ; N threesuperior ; B 23 263 310 683 ; C -1 ; WX 833 ; N Ograve ; B 76 -17 794 911 ; C -1 ; WX 722 ; N Agrave ; B -35 -3 685 911 ; C -1 ; WX 722 ; N Abreve ; B -35 -3 685 892 ; C -1 ; WX 606 ; N multiply ; B 72 17 534 479 ; C -1 ; WX 556 ; N uacute ; B 22 -17 521 719 ; C -1 ; WX 611 ; N Tcaron ; B 56 -3 674 904 ; C -1 ; WX 476 ; N partialdiff ; B 9 -38 467 718 ; C -1 ; WX 556 ; N ydieresis ; B 13 -271 541 668 ; C -1 ; WX 778 ; N Nacute ; B -2 -3 829 911 ; C -1 ; WX 333 ; N icircumflex ; B 26 -17 403 712 ; C -1 ; WX 611 ; N Ecircumflex ; B 11 -3 606 904 ; C -1 ; WX 556 ; N adieresis ; B 44 -17 538 688 ; C -1 ; WX 444 ; N edieresis ; B 28 -17 482 668 ; C -1 ; WX 444 ; N cacute ; B 32 -17 448 719 ; C -1 ; WX 556 ; N nacute ; B 17 -17 521 719 ; C -1 ; WX 556 ; N umacron ; B 22 -17 530 628 ; C -1 ; WX 778 ; N Ncaron ; B -2 -3 829 922 ; C -1 ; WX 389 ; N Iacute ; B -1 -3 420 911 ; C -1 ; WX 606 ; N plusminus ; B 50 0 556 501 ; C -1 ; WX 606 ; N brokenbar ; B 259 -175 347 675 ; C -1 ; WX 747 ; N registered ; B 26 -17 720 695 ; C -1 ; WX 778 ; N Gbreve ; B 72 -17 750 892 ; C -1 ; WX 389 ; N Idotaccent ; B -1 -3 412 880 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 611 ; N Egrave ; B 11 -3 606 911 ; C -1 ; WX 389 ; N racute ; B 20 -17 460 719 ; C -1 ; WX 556 ; N omacron ; B 48 -17 530 628 ; C -1 ; WX 667 ; N Zacute ; B 1 -3 676 911 ; C -1 ; WX 667 ; N Zcaron ; B 1 -3 676 904 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 682 ; C -1 ; WX 778 ; N Eth ; B 0 -3 747 682 ; C -1 ; WX 685 ; N Ccedilla ; B 69 -218 695 695 ; C -1 ; WX 333 ; N lcommaaccent ; B 10 -271 318 726 ; C -1 ; WX 389 ; N tcaron ; B 42 -17 507 767 ; C -1 ; WX 444 ; N eogonek ; B 28 -216 418 469 ; C -1 ; WX 778 ; N Uogonek ; B 83 -210 825 681 ; C -1 ; WX 722 ; N Aacute ; B -35 -3 685 911 ; C -1 ; WX 722 ; N Adieresis ; B -35 -3 685 880 ; C -1 ; WX 444 ; N egrave ; B 28 -17 418 719 ; C -1 ; WX 500 ; N zacute ; B 31 -17 476 719 ; C -1 ; WX 333 ; N iogonek ; B 26 -214 312 695 ; C -1 ; WX 833 ; N Oacute ; B 76 -17 794 911 ; C -1 ; WX 556 ; N oacute ; B 48 -17 504 719 ; C -1 ; WX 556 ; N amacron ; B 44 -17 530 628 ; C -1 ; WX 444 ; N sacute ; B 25 -17 448 719 ; C -1 ; WX 333 ; N idieresis ; B 26 -17 426 668 ; C -1 ; WX 833 ; N Ocircumflex ; B 76 -17 794 904 ; C -1 ; WX 778 ; N Ugrave ; B 83 -17 825 911 ; C -1 ; WX 614 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 556 ; N thorn ; B -21 -271 516 726 ; C -1 ; WX 300 ; N twosuperior ; B 26 271 321 683 ; C -1 ; WX 833 ; N Odieresis ; B 76 -17 794 880 ; C -1 ; WX 556 ; N mu ; B -15 -232 521 469 ; C -1 ; WX 333 ; N igrave ; B 26 -17 322 719 ; C -1 ; WX 556 ; N ohungarumlaut ; B 48 -17 631 719 ; C -1 ; WX 611 ; N Eogonek ; B 11 -207 606 681 ; C -1 ; WX 556 ; N dcroat ; B 38 -17 604 726 ; C -1 ; WX 750 ; N threequarters ; B 18 -2 732 683 ; C -1 ; WX 556 ; N Scedilla ; B 50 -218 517 695 ; C -1 ; WX 383 ; N lcaron ; B 64 -17 488 726 ; C -1 ; WX 722 ; N Kcommaaccent ; B -10 -271 746 681 ; C -1 ; WX 611 ; N Lacute ; B 26 -3 578 911 ; C -1 ; WX 1000 ; N trademark ; B 38 274 961 678 ; C -1 ; WX 444 ; N edotaccent ; B 28 -17 418 668 ; C -1 ; WX 389 ; N Igrave ; B -1 -3 412 911 ; C -1 ; WX 389 ; N Imacron ; B -1 -3 446 820 ; C -1 ; WX 611 ; N Lcaron ; B 26 -3 623 695 ; C -1 ; WX 750 ; N onehalf ; B 14 -2 736 683 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 682 ; C -1 ; WX 556 ; N ocircumflex ; B 48 -17 527 712 ; C -1 ; WX 556 ; N ntilde ; B 17 -17 553 676 ; C -1 ; WX 778 ; N Uhungarumlaut ; B 83 -17 825 911 ; C -1 ; WX 611 ; N Eacute ; B 11 -3 606 911 ; C -1 ; WX 444 ; N emacron ; B 28 -17 474 628 ; C -1 ; WX 500 ; N gbreve ; B -50 -271 529 700 ; C -1 ; WX 750 ; N onequarter ; B 18 -2 732 683 ; C -1 ; WX 556 ; N Scaron ; B 50 -17 557 904 ; C -1 ; WX 556 ; N Scommaaccent ; B 50 -271 517 695 ; C -1 ; WX 833 ; N Ohungarumlaut ; B 76 -17 794 911 ; C -1 ; WX 400 ; N degree ; B 50 383 350 683 ; C -1 ; WX 556 ; N ograve ; B 48 -17 502 719 ; C -1 ; WX 685 ; N Ccaron ; B 69 -17 695 904 ; C -1 ; WX 556 ; N ugrave ; B 22 -17 521 719 ; C -1 ; WX 453 ; N radical ; B -9 -91 463 765 ; C -1 ; WX 778 ; N Dcaron ; B 0 -3 747 904 ; C -1 ; WX 389 ; N rcommaaccent ; B -22 -271 411 469 ; C -1 ; WX 778 ; N Ntilde ; B -2 -3 829 868 ; C -1 ; WX 556 ; N otilde ; B 48 -17 553 676 ; C -1 ; WX 722 ; N Rcommaaccent ; B 4 -271 697 681 ; C -1 ; WX 611 ; N Lcommaaccent ; B 26 -271 578 681 ; C -1 ; WX 722 ; N Atilde ; B -35 -3 685 868 ; C -1 ; WX 722 ; N Aogonek ; B -35 -210 696 683 ; C -1 ; WX 722 ; N Aring ; B -35 -3 685 926 ; C -1 ; WX 833 ; N Otilde ; B 76 -17 794 868 ; C -1 ; WX 500 ; N zdotaccent ; B 31 -17 470 668 ; C -1 ; WX 611 ; N Ecaron ; B 11 -3 606 904 ; C -1 ; WX 389 ; N Iogonek ; B -1 -210 412 681 ; C -1 ; WX 556 ; N kcommaaccent ; B 34 -271 528 726 ; C -1 ; WX 606 ; N minus ; B 51 204 555 292 ; C -1 ; WX 389 ; N Icircumflex ; B -1 -3 443 904 ; C -1 ; WX 556 ; N ncaron ; B 17 -17 557 712 ; C -1 ; WX 389 ; N tcommaaccent ; B 18 -271 409 636 ; C -1 ; WX 606 ; N logicalnot ; B 51 107 555 390 ; C -1 ; WX 556 ; N odieresis ; B 48 -17 538 668 ; C -1 ; WX 556 ; N udieresis ; B 22 -17 538 668 ; C -1 ; WX 549 ; N notequal ; B 12 -40 537 554 ; C -1 ; WX 500 ; N gcommaaccent ; B -50 -271 529 719 ; C -1 ; WX 556 ; N eth ; B 48 -17 546 726 ; C -1 ; WX 500 ; N zcaron ; B 31 -17 517 712 ; C -1 ; WX 556 ; N ncommaaccent ; B 17 -271 521 469 ; C -1 ; WX 300 ; N onesuperior ; B 41 271 298 680 ; C -1 ; WX 333 ; N imacron ; B 26 -17 375 608 ; C -1 ; WX 500 ; N Euro ; B 46 -17 577 695 ; C -1 ; WX 685 ; N Ccircumflex ; B 69 -17 695 955 ; C -1 ; WX 444 ; N ccircumflex ; B 32 -17 461 743 ; C -1 ; WX 685 ; N Cdotaccent ; B 69 -17 695 912 ; C -1 ; WX 444 ; N cdotaccent ; B 32 -17 436 700 ; C -1 ; WX 611 ; N Ebreve ; B 11 -3 606 943 ; C -1 ; WX 444 ; N ebreve ; B 28 -17 477 731 ; C -1 ; WX 778 ; N Gcircumflex ; B 72 -17 750 955 ; C -1 ; WX 500 ; N gcircumflex ; B -50 -271 529 743 ; C -1 ; WX 778 ; N Gdotaccent ; B 72 -17 750 912 ; C -1 ; WX 500 ; N gdotaccent ; B -50 -271 529 700 ; C -1 ; WX 778 ; N Hcircumflex ; B -12 -3 826 955 ; C -1 ; WX 556 ; N hcircumflex ; B 22 -17 541 1000 ; C -1 ; WX 778 ; N Hbar ; B -12 -3 826 681 ; C -1 ; WX 556 ; N hbar ; B 17 -17 522 726 ; C -1 ; WX 389 ; N Itilde ; B -1 -3 477 900 ; C -1 ; WX 333 ; N itilde ; B 26 -17 411 688 ; C -1 ; WX 389 ; N Ibreve ; B -1 -3 474 943 ; C -1 ; WX 333 ; N ibreve ; B 26 -17 408 731 ; C -1 ; WX 766 ; N IJ ; B -1 -207 757 681 ; C -1 ; WX 640 ; N ij ; B 26 -271 623 695 ; C -1 ; WX 389 ; N Jcircumflex ; B -29 -207 443 955 ; C -1 ; WX 333 ; N jcircumflex ; B -64 -271 415 684 ; C -1 ; WX 556 ; N kgreenlandic ; B 24 -17 528 469 ; C -1 ; WX 611 ; N Ldot ; B 26 -3 578 681 ; C -1 ; WX 502 ; N ldot ; B 64 -17 461 726 ; C -1 ; WX 556 ; N napostrophe ; B 17 -17 521 770 ; C -1 ; WX 833 ; N Obreve ; B 76 -17 794 943 ; C -1 ; WX 556 ; N obreve ; B 48 -17 521 731 ; C -1 ; WX 556 ; N Scircumflex ; B 50 -17 539 955 ; C -1 ; WX 444 ; N scircumflex ; B 25 -17 454 743 ; C -1 ; WX 611 ; N Tbar ; B 56 -3 674 681 ; C -1 ; WX 389 ; N tbar ; B 17 -17 409 636 ; C -1 ; WX 611 ; N Tcedilla ; B 56 -271 674 681 ; C -1 ; WX 389 ; N tcedilla ; B 18 -271 409 636 ; C -1 ; WX 778 ; N Utilde ; B 83 -17 825 900 ; C -1 ; WX 556 ; N utilde ; B 22 -17 521 688 ; C -1 ; WX 778 ; N Ubreve ; B 83 -17 825 943 ; C -1 ; WX 556 ; N ubreve ; B 22 -17 521 731 ; C -1 ; WX 1000 ; N Wcircumflex ; B 67 -3 1073 955 ; C -1 ; WX 833 ; N wcircumflex ; B 27 -17 802 743 ; C -1 ; WX 611 ; N Ycircumflex ; B 54 -3 675 955 ; C -1 ; WX 556 ; N ycircumflex ; B 13 -271 541 743 ; C -1 ; WX 333 ; N longs ; B -130 -271 449 726 ; C -1 ; WX 648 ; N infinity ; B 7 40 637 432 ; EndCharMetrics StartKernData StartKernPairs 972 KPX A T -55 KPX A Tcaron -55 KPX A Tcommaaccent -55 KPX A V -74 KPX A W -74 KPX A Y -74 KPX A Yacute -74 KPX A Ydieresis -74 KPX A quoteright -55 KPX A space -55 KPX A v -55 KPX A w -37 KPX A y -55 KPX A yacute -55 KPX A ydieresis -55 KPX Aacute T -55 KPX Aacute Tcaron -55 KPX Aacute Tcommaaccent -55 KPX Aacute V -74 KPX Aacute W -74 KPX Aacute Y -74 KPX Aacute Yacute -74 KPX Aacute Ydieresis -74 KPX Aacute quoteright -55 KPX Aacute space -55 KPX Aacute v -55 KPX Aacute w -37 KPX Aacute y -55 KPX Aacute yacute -55 KPX Aacute ydieresis -55 KPX Abreve T -55 KPX Abreve Tcaron -55 KPX Abreve Tcommaaccent -55 KPX Abreve V -74 KPX Abreve W -74 KPX Abreve Y -74 KPX Abreve Yacute -74 KPX Abreve Ydieresis -74 KPX Abreve quoteright -55 KPX Abreve space -55 KPX Abreve v -55 KPX Abreve w -37 KPX Abreve y -55 KPX Abreve yacute -55 KPX Abreve ydieresis -55 KPX Acircumflex T -55 KPX Acircumflex Tcaron -55 KPX Acircumflex Tcommaaccent -55 KPX Acircumflex V -74 KPX Acircumflex W -74 KPX Acircumflex Y -74 KPX Acircumflex Yacute -74 KPX Acircumflex Ydieresis -74 KPX Acircumflex quoteright -55 KPX Acircumflex space -55 KPX Acircumflex v -55 KPX Acircumflex w -37 KPX Acircumflex y -55 KPX Acircumflex yacute -55 KPX Acircumflex ydieresis -55 KPX Adieresis T -55 KPX Adieresis Tcaron -55 KPX Adieresis Tcommaaccent -55 KPX Adieresis V -74 KPX Adieresis W -74 KPX Adieresis Y -74 KPX Adieresis Yacute -74 KPX Adieresis Ydieresis -74 KPX Adieresis quoteright -55 KPX Adieresis space -55 KPX Adieresis v -55 KPX Adieresis w -37 KPX Adieresis y -55 KPX Adieresis yacute -55 KPX Adieresis ydieresis -55 KPX Agrave T -55 KPX Agrave Tcaron -55 KPX Agrave Tcommaaccent -55 KPX Agrave V -74 KPX Agrave W -74 KPX Agrave Y -74 KPX Agrave Yacute -74 KPX Agrave Ydieresis -74 KPX Agrave quoteright -55 KPX Agrave space -55 KPX Agrave v -55 KPX Agrave w -37 KPX Agrave y -55 KPX Agrave yacute -55 KPX Agrave ydieresis -55 KPX Amacron T -55 KPX Amacron Tcaron -55 KPX Amacron Tcommaaccent -55 KPX Amacron V -74 KPX Amacron W -74 KPX Amacron Y -74 KPX Amacron Yacute -74 KPX Amacron Ydieresis -74 KPX Amacron quoteright -55 KPX Amacron space -55 KPX Amacron v -55 KPX Amacron w -37 KPX Amacron y -55 KPX Amacron yacute -55 KPX Amacron ydieresis -55 KPX Aogonek T -55 KPX Aogonek Tcaron -55 KPX Aogonek Tcommaaccent -55 KPX Aogonek V -74 KPX Aogonek W -74 KPX Aogonek Y -74 KPX Aogonek Yacute -74 KPX Aogonek Ydieresis -74 KPX Aogonek quoteright -55 KPX Aogonek space -55 KPX Aogonek v -55 KPX Aogonek w -37 KPX Aogonek y -55 KPX Aogonek yacute -55 KPX Aogonek ydieresis -55 KPX Aring T -55 KPX Aring Tcaron -55 KPX Aring Tcommaaccent -55 KPX Aring V -74 KPX Aring W -74 KPX Aring Y -74 KPX Aring Yacute -74 KPX Aring Ydieresis -74 KPX Aring quoteright -55 KPX Aring space -55 KPX Aring v -55 KPX Aring w -37 KPX Aring y -55 KPX Aring yacute -55 KPX Aring ydieresis -55 KPX Atilde T -55 KPX Atilde Tcaron -55 KPX Atilde Tcommaaccent -55 KPX Atilde V -74 KPX Atilde W -74 KPX Atilde Y -74 KPX Atilde Yacute -74 KPX Atilde Ydieresis -74 KPX Atilde quoteright -55 KPX Atilde space -55 KPX Atilde v -55 KPX Atilde w -37 KPX Atilde y -55 KPX Atilde yacute -55 KPX Atilde ydieresis -55 KPX F A -74 KPX F Aacute -74 KPX F Abreve -74 KPX F Acircumflex -74 KPX F Adieresis -74 KPX F Agrave -74 KPX F Amacron -74 KPX F Aogonek -74 KPX F Aring -74 KPX F Atilde -74 KPX F comma -111 KPX F period -111 KPX F space -18 KPX L T -74 KPX L Tcaron -74 KPX L Tcommaaccent -74 KPX L V -74 KPX L W -74 KPX L Y -74 KPX L Yacute -74 KPX L Ydieresis -74 KPX L quoteright -55 KPX L space -18 KPX L y -37 KPX L yacute -37 KPX L ydieresis -37 KPX Lacute T -74 KPX Lacute Tcaron -74 KPX Lacute Tcommaaccent -74 KPX Lacute V -74 KPX Lacute W -74 KPX Lacute Y -74 KPX Lacute Yacute -74 KPX Lacute Ydieresis -74 KPX Lacute quoteright -55 KPX Lacute space -18 KPX Lacute y -37 KPX Lacute yacute -37 KPX Lacute ydieresis -37 KPX Lcaron quoteright -55 KPX Lcaron space -18 KPX Lcaron y -37 KPX Lcaron yacute -37 KPX Lcaron ydieresis -37 KPX Lcommaaccent T -74 KPX Lcommaaccent Tcaron -74 KPX Lcommaaccent Tcommaaccent -74 KPX Lcommaaccent V -74 KPX Lcommaaccent W -74 KPX Lcommaaccent Y -74 KPX Lcommaaccent Yacute -74 KPX Lcommaaccent Ydieresis -74 KPX Lcommaaccent quoteright -55 KPX Lcommaaccent space -18 KPX Lcommaaccent y -37 KPX Lcommaaccent yacute -37 KPX Lcommaaccent ydieresis -37 KPX Lslash T -74 KPX Lslash Tcaron -74 KPX Lslash Tcommaaccent -74 KPX Lslash V -74 KPX Lslash W -74 KPX Lslash Y -74 KPX Lslash Yacute -74 KPX Lslash Ydieresis -74 KPX Lslash quoteright -55 KPX Lslash space -18 KPX Lslash y -37 KPX Lslash yacute -37 KPX Lslash ydieresis -37 KPX P A -92 KPX P Aacute -92 KPX P Abreve -92 KPX P Acircumflex -92 KPX P Adieresis -92 KPX P Agrave -92 KPX P Amacron -92 KPX P Aogonek -92 KPX P Aring -92 KPX P Atilde -92 KPX P comma -129 KPX P period -129 KPX P space -55 KPX R T -37 KPX R Tcaron -37 KPX R Tcommaaccent -37 KPX R V -55 KPX R W -55 KPX R Y -37 KPX R Yacute -37 KPX R Ydieresis -37 KPX R y -20 KPX R yacute -20 KPX R ydieresis -20 KPX Racute T -37 KPX Racute Tcaron -37 KPX Racute Tcommaaccent -37 KPX Racute V -55 KPX Racute W -55 KPX Racute Y -37 KPX Racute Yacute -37 KPX Racute Ydieresis -37 KPX Racute y -20 KPX Racute yacute -20 KPX Racute ydieresis -20 KPX Rcaron T -37 KPX Rcaron Tcaron -37 KPX Rcaron Tcommaaccent -37 KPX Rcaron V -55 KPX Rcaron W -55 KPX Rcaron Y -37 KPX Rcaron Yacute -37 KPX Rcaron Ydieresis -37 KPX Rcaron y -20 KPX Rcaron yacute -20 KPX Rcaron ydieresis -20 KPX Rcommaaccent T -37 KPX Rcommaaccent Tcaron -37 KPX Rcommaaccent Tcommaaccent -37 KPX Rcommaaccent V -55 KPX Rcommaaccent W -55 KPX Rcommaaccent Y -37 KPX Rcommaaccent Yacute -37 KPX Rcommaaccent Ydieresis -37 KPX Rcommaaccent y -20 KPX Rcommaaccent yacute -20 KPX Rcommaaccent ydieresis -20 KPX T A -55 KPX T Aacute -55 KPX T Abreve -55 KPX T Acircumflex -55 KPX T Adieresis -55 KPX T Agrave -55 KPX T Amacron -55 KPX T Aogonek -55 KPX T Aring -55 KPX T Atilde -55 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -111 KPX T aacute -111 KPX T abreve -111 KPX T acircumflex -111 KPX T adieresis -111 KPX T agrave -111 KPX T amacron -111 KPX T aogonek -111 KPX T aring -111 KPX T atilde -111 KPX T c -92 KPX T cacute -92 KPX T ccaron -92 KPX T ccedilla -92 KPX T colon -55 KPX T comma -55 KPX T e -111 KPX T eacute -111 KPX T ecaron -111 KPX T ecircumflex -71 KPX T edieresis -71 KPX T edotaccent -111 KPX T egrave -71 KPX T emacron -71 KPX T eogonek -111 KPX T hyphen -92 KPX T i -74 KPX T iacute -74 KPX T icircumflex -34 KPX T idieresis -34 KPX T igrave -34 KPX T imacron -34 KPX T iogonek -74 KPX T o -111 KPX T oacute -111 KPX T ocircumflex -111 KPX T odieresis -111 KPX T ograve -111 KPX T ohungarumlaut -111 KPX T omacron -111 KPX T oslash -111 KPX T otilde -111 KPX T period -55 KPX T r -92 KPX T racute -92 KPX T rcaron -92 KPX T rcommaaccent -92 KPX T s -92 KPX T sacute -92 KPX T scaron -92 KPX T scedilla -92 KPX T scommaaccent -92 KPX T semicolon -55 KPX T u -92 KPX T uacute -92 KPX T ucircumflex -92 KPX T udieresis -92 KPX T ugrave -92 KPX T uhungarumlaut -92 KPX T umacron -92 KPX T uogonek -92 KPX T uring -92 KPX T w -50 KPX T y -80 KPX T yacute -80 KPX T ydieresis -80 KPX Tcaron A -55 KPX Tcaron Aacute -55 KPX Tcaron Abreve -55 KPX Tcaron Acircumflex -55 KPX Tcaron Adieresis -55 KPX Tcaron Agrave -55 KPX Tcaron Amacron -55 KPX Tcaron Aogonek -55 KPX Tcaron Aring -55 KPX Tcaron Atilde -55 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -111 KPX Tcaron aacute -111 KPX Tcaron abreve -111 KPX Tcaron acircumflex -111 KPX Tcaron adieresis -111 KPX Tcaron agrave -111 KPX Tcaron amacron -111 KPX Tcaron aogonek -111 KPX Tcaron aring -111 KPX Tcaron atilde -111 KPX Tcaron c -92 KPX Tcaron cacute -92 KPX Tcaron ccaron -92 KPX Tcaron ccedilla -92 KPX Tcaron colon -55 KPX Tcaron comma -55 KPX Tcaron e -111 KPX Tcaron eacute -111 KPX Tcaron ecaron -111 KPX Tcaron ecircumflex -71 KPX Tcaron edieresis -71 KPX Tcaron edotaccent -111 KPX Tcaron egrave -71 KPX Tcaron emacron -71 KPX Tcaron eogonek -111 KPX Tcaron hyphen -92 KPX Tcaron i -74 KPX Tcaron iacute -74 KPX Tcaron icircumflex -34 KPX Tcaron idieresis -34 KPX Tcaron igrave -34 KPX Tcaron imacron -34 KPX Tcaron iogonek -74 KPX Tcaron o -111 KPX Tcaron oacute -111 KPX Tcaron ocircumflex -111 KPX Tcaron odieresis -111 KPX Tcaron ograve -111 KPX Tcaron ohungarumlaut -111 KPX Tcaron omacron -111 KPX Tcaron oslash -111 KPX Tcaron otilde -111 KPX Tcaron period -55 KPX Tcaron r -92 KPX Tcaron racute -92 KPX Tcaron rcaron -92 KPX Tcaron rcommaaccent -92 KPX Tcaron s -92 KPX Tcaron sacute -92 KPX Tcaron scaron -92 KPX Tcaron scedilla -92 KPX Tcaron scommaaccent -92 KPX Tcaron semicolon -55 KPX Tcaron u -92 KPX Tcaron uacute -92 KPX Tcaron ucircumflex -92 KPX Tcaron udieresis -92 KPX Tcaron ugrave -92 KPX Tcaron uhungarumlaut -92 KPX Tcaron umacron -92 KPX Tcaron uogonek -92 KPX Tcaron uring -92 KPX Tcaron w -50 KPX Tcaron y -80 KPX Tcaron yacute -80 KPX Tcaron ydieresis -80 KPX Tcommaaccent A -55 KPX Tcommaaccent Aacute -55 KPX Tcommaaccent Abreve -55 KPX Tcommaaccent Acircumflex -55 KPX Tcommaaccent Adieresis -55 KPX Tcommaaccent Agrave -55 KPX Tcommaaccent Amacron -55 KPX Tcommaaccent Aogonek -55 KPX Tcommaaccent Aring -55 KPX Tcommaaccent Atilde -55 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -111 KPX Tcommaaccent aacute -111 KPX Tcommaaccent abreve -111 KPX Tcommaaccent acircumflex -111 KPX Tcommaaccent adieresis -111 KPX Tcommaaccent agrave -111 KPX Tcommaaccent amacron -111 KPX Tcommaaccent aogonek -111 KPX Tcommaaccent aring -111 KPX Tcommaaccent atilde -111 KPX Tcommaaccent c -92 KPX Tcommaaccent cacute -92 KPX Tcommaaccent ccaron -92 KPX Tcommaaccent ccedilla -92 KPX Tcommaaccent colon -55 KPX Tcommaaccent comma -55 KPX Tcommaaccent e -111 KPX Tcommaaccent eacute -111 KPX Tcommaaccent ecaron -111 KPX Tcommaaccent ecircumflex -71 KPX Tcommaaccent edieresis -71 KPX Tcommaaccent edotaccent -111 KPX Tcommaaccent egrave -71 KPX Tcommaaccent emacron -71 KPX Tcommaaccent eogonek -111 KPX Tcommaaccent hyphen -92 KPX Tcommaaccent i -74 KPX Tcommaaccent iacute -74 KPX Tcommaaccent icircumflex -34 KPX Tcommaaccent idieresis -34 KPX Tcommaaccent igrave -34 KPX Tcommaaccent imacron -34 KPX Tcommaaccent iogonek -74 KPX Tcommaaccent o -111 KPX Tcommaaccent oacute -111 KPX Tcommaaccent ocircumflex -111 KPX Tcommaaccent odieresis -111 KPX Tcommaaccent ograve -111 KPX Tcommaaccent ohungarumlaut -111 KPX Tcommaaccent omacron -111 KPX Tcommaaccent oslash -111 KPX Tcommaaccent otilde -111 KPX Tcommaaccent period -55 KPX Tcommaaccent r -92 KPX Tcommaaccent racute -92 KPX Tcommaaccent rcaron -92 KPX Tcommaaccent rcommaaccent -92 KPX Tcommaaccent s -92 KPX Tcommaaccent sacute -92 KPX Tcommaaccent scaron -92 KPX Tcommaaccent scedilla -92 KPX Tcommaaccent scommaaccent -92 KPX Tcommaaccent semicolon -55 KPX Tcommaaccent u -92 KPX Tcommaaccent uacute -92 KPX Tcommaaccent ucircumflex -92 KPX Tcommaaccent udieresis -92 KPX Tcommaaccent ugrave -92 KPX Tcommaaccent uhungarumlaut -92 KPX Tcommaaccent umacron -92 KPX Tcommaaccent uogonek -92 KPX Tcommaaccent uring -92 KPX Tcommaaccent w -50 KPX Tcommaaccent y -80 KPX Tcommaaccent yacute -80 KPX Tcommaaccent ydieresis -80 KPX V A -74 KPX V Aacute -74 KPX V Abreve -74 KPX V Acircumflex -74 KPX V Adieresis -74 KPX V Agrave -74 KPX V Amacron -74 KPX V Aogonek -74 KPX V Aring -74 KPX V Atilde -74 KPX V a -92 KPX V aacute -92 KPX V abreve -92 KPX V acircumflex -92 KPX V adieresis -92 KPX V agrave -92 KPX V amacron -92 KPX V aogonek -92 KPX V aring -92 KPX V atilde -92 KPX V colon -37 KPX V comma -111 KPX V e -74 KPX V eacute -74 KPX V ecaron -74 KPX V ecircumflex -74 KPX V edieresis -74 KPX V edotaccent -74 KPX V egrave -34 KPX V emacron -34 KPX V eogonek -74 KPX V hyphen -37 KPX V i -50 KPX V iacute -50 KPX V iogonek -50 KPX V o -74 KPX V oacute -74 KPX V ocircumflex -74 KPX V odieresis -74 KPX V ograve -74 KPX V ohungarumlaut -74 KPX V omacron -74 KPX V oslash -74 KPX V otilde -74 KPX V period -111 KPX V r -74 KPX V racute -74 KPX V rcaron -74 KPX V rcommaaccent -74 KPX V semicolon -37 KPX V u -50 KPX V uacute -50 KPX V ucircumflex -50 KPX V udieresis -50 KPX V ugrave -50 KPX V uhungarumlaut -50 KPX V umacron -50 KPX V uogonek -50 KPX V uring -50 KPX V y -50 KPX V yacute -50 KPX V ydieresis -50 KPX W A -74 KPX W Aacute -74 KPX W Abreve -74 KPX W Acircumflex -74 KPX W Adieresis -74 KPX W Agrave -74 KPX W Amacron -74 KPX W Aogonek -74 KPX W Aring -74 KPX W Atilde -74 KPX W a -74 KPX W aacute -74 KPX W abreve -74 KPX W acircumflex -74 KPX W adieresis -74 KPX W agrave -74 KPX W amacron -74 KPX W aogonek -74 KPX W aring -74 KPX W atilde -74 KPX W colon -28 KPX W comma -55 KPX W e -55 KPX W eacute -55 KPX W ecaron -55 KPX W ecircumflex -55 KPX W edieresis -55 KPX W edotaccent -55 KPX W egrave -55 KPX W emacron -55 KPX W eogonek -55 KPX W i -30 KPX W iacute -30 KPX W iogonek -30 KPX W o -55 KPX W oacute -55 KPX W ocircumflex -55 KPX W odieresis -55 KPX W ograve -55 KPX W ohungarumlaut -55 KPX W omacron -55 KPX W oslash -55 KPX W otilde -55 KPX W period -55 KPX W r -30 KPX W racute -30 KPX W rcaron -30 KPX W rcommaaccent -30 KPX W semicolon -18 KPX W u -30 KPX W uacute -30 KPX W ucircumflex -30 KPX W udieresis -30 KPX W ugrave -30 KPX W uhungarumlaut -30 KPX W umacron -30 KPX W uogonek -30 KPX W uring -30 KPX W y -30 KPX W yacute -30 KPX W ydieresis -30 KPX Y A -55 KPX Y Aacute -55 KPX Y Abreve -55 KPX Y Acircumflex -55 KPX Y Adieresis -55 KPX Y Agrave -55 KPX Y Amacron -55 KPX Y Aogonek -55 KPX Y Aring -55 KPX Y Atilde -55 KPX Y a -111 KPX Y aacute -111 KPX Y abreve -111 KPX Y acircumflex -111 KPX Y adieresis -111 KPX Y agrave -111 KPX Y amacron -111 KPX Y aogonek -111 KPX Y aring -111 KPX Y atilde -111 KPX Y colon -55 KPX Y comma -55 KPX Y e -92 KPX Y eacute -92 KPX Y ecaron -92 KPX Y ecircumflex -92 KPX Y edieresis -92 KPX Y edotaccent -92 KPX Y egrave -92 KPX Y emacron -92 KPX Y eogonek -92 KPX Y hyphen -55 KPX Y i -54 KPX Y iacute -54 KPX Y iogonek -54 KPX Y o -111 KPX Y oacute -111 KPX Y ocircumflex -111 KPX Y odieresis -111 KPX Y ograve -111 KPX Y ohungarumlaut -111 KPX Y omacron -111 KPX Y oslash -111 KPX Y otilde -111 KPX Y p -74 KPX Y period -55 KPX Y q -92 KPX Y semicolon -55 KPX Y u -50 KPX Y uacute -50 KPX Y ucircumflex -50 KPX Y udieresis -50 KPX Y ugrave -50 KPX Y uhungarumlaut -50 KPX Y umacron -50 KPX Y uogonek -50 KPX Y uring -50 KPX Y v -30 KPX Yacute A -55 KPX Yacute Aacute -55 KPX Yacute Abreve -55 KPX Yacute Acircumflex -55 KPX Yacute Adieresis -55 KPX Yacute Agrave -55 KPX Yacute Amacron -55 KPX Yacute Aogonek -55 KPX Yacute Aring -55 KPX Yacute Atilde -55 KPX Yacute a -111 KPX Yacute aacute -111 KPX Yacute abreve -111 KPX Yacute acircumflex -111 KPX Yacute adieresis -111 KPX Yacute agrave -111 KPX Yacute amacron -111 KPX Yacute aogonek -111 KPX Yacute aring -111 KPX Yacute atilde -111 KPX Yacute colon -55 KPX Yacute comma -55 KPX Yacute e -92 KPX Yacute eacute -92 KPX Yacute ecaron -92 KPX Yacute ecircumflex -92 KPX Yacute edieresis -92 KPX Yacute edotaccent -92 KPX Yacute egrave -92 KPX Yacute emacron -92 KPX Yacute eogonek -92 KPX Yacute hyphen -55 KPX Yacute i -54 KPX Yacute iacute -54 KPX Yacute iogonek -54 KPX Yacute o -111 KPX Yacute oacute -111 KPX Yacute ocircumflex -111 KPX Yacute odieresis -111 KPX Yacute ograve -111 KPX Yacute ohungarumlaut -111 KPX Yacute omacron -111 KPX Yacute oslash -111 KPX Yacute otilde -111 KPX Yacute p -74 KPX Yacute period -55 KPX Yacute q -92 KPX Yacute semicolon -55 KPX Yacute u -50 KPX Yacute uacute -50 KPX Yacute ucircumflex -50 KPX Yacute udieresis -50 KPX Yacute ugrave -50 KPX Yacute uhungarumlaut -50 KPX Yacute umacron -50 KPX Yacute uogonek -50 KPX Yacute uring -50 KPX Yacute v -30 KPX Ydieresis A -55 KPX Ydieresis Aacute -55 KPX Ydieresis Abreve -55 KPX Ydieresis Acircumflex -55 KPX Ydieresis Adieresis -55 KPX Ydieresis Agrave -55 KPX Ydieresis Amacron -55 KPX Ydieresis Aogonek -55 KPX Ydieresis Aring -55 KPX Ydieresis Atilde -55 KPX Ydieresis a -111 KPX Ydieresis aacute -111 KPX Ydieresis abreve -111 KPX Ydieresis acircumflex -111 KPX Ydieresis adieresis -111 KPX Ydieresis agrave -111 KPX Ydieresis amacron -111 KPX Ydieresis aogonek -111 KPX Ydieresis aring -111 KPX Ydieresis atilde -111 KPX Ydieresis colon -55 KPX Ydieresis comma -55 KPX Ydieresis e -92 KPX Ydieresis eacute -92 KPX Ydieresis ecaron -92 KPX Ydieresis ecircumflex -92 KPX Ydieresis edieresis -92 KPX Ydieresis edotaccent -92 KPX Ydieresis egrave -92 KPX Ydieresis emacron -92 KPX Ydieresis eogonek -92 KPX Ydieresis hyphen -55 KPX Ydieresis i -54 KPX Ydieresis iacute -54 KPX Ydieresis iogonek -54 KPX Ydieresis o -111 KPX Ydieresis oacute -111 KPX Ydieresis ocircumflex -111 KPX Ydieresis odieresis -111 KPX Ydieresis ograve -111 KPX Ydieresis ohungarumlaut -111 KPX Ydieresis omacron -111 KPX Ydieresis oslash -111 KPX Ydieresis otilde -111 KPX Ydieresis p -74 KPX Ydieresis period -55 KPX Ydieresis q -92 KPX Ydieresis semicolon -55 KPX Ydieresis u -50 KPX Ydieresis uacute -50 KPX Ydieresis ucircumflex -50 KPX Ydieresis udieresis -50 KPX Ydieresis ugrave -50 KPX Ydieresis uhungarumlaut -50 KPX Ydieresis umacron -50 KPX Ydieresis uogonek -50 KPX Ydieresis uring -50 KPX Ydieresis v -30 KPX f f -37 KPX f quoteright 37 KPX one one -55 KPX quoteleft quoteleft -55 KPX quoteright quoteright -55 KPX quoteright s -37 KPX quoteright sacute -37 KPX quoteright scaron -37 KPX quoteright scedilla -37 KPX quoteright scommaaccent -37 KPX quoteright space -37 KPX quoteright t -18 KPX quoteright tcommaaccent -18 KPX r c -18 KPX r cacute -18 KPX r ccaron -18 KPX r ccedilla -18 KPX r comma -55 KPX r e -18 KPX r eacute -18 KPX r ecaron -18 KPX r ecircumflex -18 KPX r edieresis -18 KPX r edotaccent -18 KPX r egrave -18 KPX r emacron -18 KPX r eogonek -18 KPX r g -18 KPX r gbreve -18 KPX r gcommaaccent -18 KPX r h -18 KPX r o -18 KPX r oacute -18 KPX r ocircumflex -18 KPX r odieresis -18 KPX r ograve -18 KPX r ohungarumlaut -18 KPX r omacron -18 KPX r oslash -18 KPX r otilde -18 KPX r period -55 KPX r q -18 KPX r quoteright 55 KPX racute c -18 KPX racute cacute -18 KPX racute ccaron -18 KPX racute ccedilla -18 KPX racute comma -55 KPX racute e -18 KPX racute eacute -18 KPX racute ecaron -18 KPX racute ecircumflex -18 KPX racute edieresis -18 KPX racute edotaccent -18 KPX racute egrave -18 KPX racute emacron -18 KPX racute eogonek -18 KPX racute g -18 KPX racute gbreve -18 KPX racute gcommaaccent -18 KPX racute h -18 KPX racute o -18 KPX racute oacute -18 KPX racute ocircumflex -18 KPX racute odieresis -18 KPX racute ograve -18 KPX racute ohungarumlaut -18 KPX racute omacron -18 KPX racute oslash -18 KPX racute otilde -18 KPX racute period -55 KPX racute q -18 KPX racute quoteright 55 KPX rcaron c -18 KPX rcaron cacute -18 KPX rcaron ccaron -18 KPX rcaron ccedilla -18 KPX rcaron comma -55 KPX rcaron e -18 KPX rcaron eacute -18 KPX rcaron ecaron -18 KPX rcaron ecircumflex -18 KPX rcaron edieresis -18 KPX rcaron edotaccent -18 KPX rcaron egrave -18 KPX rcaron emacron -18 KPX rcaron eogonek -18 KPX rcaron g -18 KPX rcaron gbreve -18 KPX rcaron gcommaaccent -18 KPX rcaron h -18 KPX rcaron o -18 KPX rcaron oacute -18 KPX rcaron ocircumflex -18 KPX rcaron odieresis -18 KPX rcaron ograve -18 KPX rcaron ohungarumlaut -18 KPX rcaron omacron -18 KPX rcaron oslash -18 KPX rcaron otilde -18 KPX rcaron period -55 KPX rcaron q -18 KPX rcaron quoteright 55 KPX rcommaaccent c -18 KPX rcommaaccent cacute -18 KPX rcommaaccent ccaron -18 KPX rcommaaccent ccedilla -18 KPX rcommaaccent comma -55 KPX rcommaaccent e -18 KPX rcommaaccent eacute -18 KPX rcommaaccent ecaron -18 KPX rcommaaccent ecircumflex -18 KPX rcommaaccent edieresis -18 KPX rcommaaccent edotaccent -18 KPX rcommaaccent egrave -18 KPX rcommaaccent emacron -18 KPX rcommaaccent eogonek -18 KPX rcommaaccent g -18 KPX rcommaaccent gbreve -18 KPX rcommaaccent gcommaaccent -18 KPX rcommaaccent h -18 KPX rcommaaccent o -18 KPX rcommaaccent oacute -18 KPX rcommaaccent ocircumflex -18 KPX rcommaaccent odieresis -18 KPX rcommaaccent ograve -18 KPX rcommaaccent ohungarumlaut -18 KPX rcommaaccent omacron -18 KPX rcommaaccent oslash -18 KPX rcommaaccent otilde -18 KPX rcommaaccent period -55 KPX rcommaaccent q -18 KPX rcommaaccent quoteright 55 KPX v comma -55 KPX v period -55 KPX w comma -55 KPX w period -55 KPX y comma -37 KPX y period -37 KPX yacute comma -37 KPX yacute period -37 KPX ydieresis comma -37 KPX ydieresis period -37 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Palatino-Italic.afm0000644000222100022210000011313414541067540016340 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:32:34 1997 Comment PH added additional characters (including Euro) 19 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43074 Comment VMusage 54574 69599 FontName Palatino-Italic FullName Palatino Italic FamilyName Palatino Weight Medium ItalicAngle -10 IsFixedPitch false FontBBox -170 -276 1010 918 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 692 XHeight 482 Ascender 726 Descender -281 StdHW 42 StdVW 84 StartCharMetrics 359 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 76 -8 292 733 ; C 34 ; WX 500 ; N quotedbl ; B 140 508 455 733 ; C 35 ; WX 500 ; N numbersign ; B 4 0 495 692 ; C 36 ; WX 500 ; N dollar ; B 15 -113 452 733 ; C 37 ; WX 889 ; N percent ; B 74 -7 809 710 ; C 38 ; WX 778 ; N ampersand ; B 47 -18 766 692 ; C 39 ; WX 278 ; N quoteright ; B 78 488 258 733 ; C 40 ; WX 333 ; N parenleft ; B 54 -106 331 733 ; C 41 ; WX 333 ; N parenright ; B 2 -106 279 733 ; C 42 ; WX 389 ; N asterisk ; B 76 368 400 706 ; C 43 ; WX 606 ; N plus ; B 51 0 555 504 ; C 44 ; WX 250 ; N comma ; B 8 -143 203 123 ; C 45 ; WX 333 ; N hyphen ; B 19 223 304 281 ; C 46 ; WX 250 ; N period ; B 53 -5 158 112 ; C 47 ; WX 296 ; N slash ; B -40 -119 392 733 ; C 48 ; WX 500 ; N zero ; B 36 -11 480 699 ; C 49 ; WX 500 ; N one ; B 54 -3 398 699 ; C 50 ; WX 500 ; N two ; B 12 -3 437 699 ; C 51 ; WX 500 ; N three ; B 22 -11 447 699 ; C 52 ; WX 500 ; N four ; B 15 -3 478 699 ; C 53 ; WX 500 ; N five ; B 14 -11 491 693 ; C 54 ; WX 500 ; N six ; B 49 -11 469 699 ; C 55 ; WX 500 ; N seven ; B 53 -3 502 692 ; C 56 ; WX 500 ; N eight ; B 36 -11 469 699 ; C 57 ; WX 500 ; N nine ; B 32 -11 468 699 ; C 58 ; WX 250 ; N colon ; B 44 -5 207 458 ; C 59 ; WX 250 ; N semicolon ; B -9 -146 219 456 ; C 60 ; WX 606 ; N less ; B 53 -6 554 516 ; C 61 ; WX 606 ; N equal ; B 51 126 555 378 ; C 62 ; WX 606 ; N greater ; B 53 -6 554 516 ; C 63 ; WX 500 ; N question ; B 114 -8 427 706 ; C 64 ; WX 747 ; N at ; B 27 -18 718 706 ; C 65 ; WX 722 ; N A ; B -19 -3 677 705 ; C 66 ; WX 611 ; N B ; B 26 -6 559 692 ; C 67 ; WX 667 ; N C ; B 45 -18 651 706 ; C 68 ; WX 778 ; N D ; B 28 -3 741 692 ; C 69 ; WX 611 ; N E ; B 30 -3 570 692 ; C 70 ; WX 556 ; N F ; B 0 -3 548 692 ; C 71 ; WX 722 ; N G ; B 50 -18 694 706 ; C 72 ; WX 778 ; N H ; B -3 -3 800 692 ; C 73 ; WX 333 ; N I ; B 7 -3 354 692 ; C 74 ; WX 333 ; N J ; B -35 -206 358 692 ; C 75 ; WX 667 ; N K ; B 13 -3 683 692 ; C 76 ; WX 556 ; N L ; B 16 -3 523 692 ; C 77 ; WX 944 ; N M ; B -19 -18 940 692 ; C 78 ; WX 778 ; N N ; B 2 -11 804 692 ; C 79 ; WX 778 ; N O ; B 53 -18 748 706 ; C 80 ; WX 611 ; N P ; B 9 -3 594 692 ; C 81 ; WX 778 ; N Q ; B 53 -201 748 706 ; C 82 ; WX 667 ; N R ; B 9 -3 639 692 ; C 83 ; WX 556 ; N S ; B 42 -18 506 706 ; C 84 ; WX 611 ; N T ; B 53 -3 635 692 ; C 85 ; WX 778 ; N U ; B 88 -18 798 692 ; C 86 ; WX 722 ; N V ; B 75 -8 754 692 ; C 87 ; WX 944 ; N W ; B 71 -8 980 700 ; C 88 ; WX 722 ; N X ; B 20 -3 734 692 ; C 89 ; WX 667 ; N Y ; B 52 -3 675 705 ; C 90 ; WX 667 ; N Z ; B 20 -3 637 692 ; C 91 ; WX 333 ; N bracketleft ; B 18 -100 326 733 ; C 92 ; WX 606 ; N backslash ; B 81 0 513 733 ; C 93 ; WX 333 ; N bracketright ; B 7 -100 315 733 ; C 94 ; WX 606 ; N asciicircum ; B 51 283 554 689 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 278 ; N quoteleft ; B 78 488 258 733 ; C 97 ; WX 444 ; N a ; B 4 -11 406 482 ; C 98 ; WX 463 ; N b ; B 37 -11 433 733 ; C 99 ; WX 407 ; N c ; B 25 -11 389 482 ; C 100 ; WX 500 ; N d ; B 17 -11 483 733 ; C 101 ; WX 389 ; N e ; B 15 -11 374 482 ; C 102 ; WX 278 ; N f ; B -162 -276 413 733 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B -37 -276 498 482 ; C 104 ; WX 500 ; N h ; B 10 -9 471 733 ; C 105 ; WX 278 ; N i ; B 34 -9 264 712 ; C 106 ; WX 278 ; N j ; B -70 -276 265 712 ; C 107 ; WX 444 ; N k ; B 8 -9 449 733 ; C 108 ; WX 278 ; N l ; B 36 -9 251 733 ; C 109 ; WX 778 ; N m ; B 24 -9 740 482 ; C 110 ; WX 556 ; N n ; B 24 -9 514 482 ; C 111 ; WX 444 ; N o ; B 17 -11 411 482 ; C 112 ; WX 500 ; N p ; B -7 -276 465 482 ; C 113 ; WX 463 ; N q ; B 24 -276 432 482 ; C 114 ; WX 389 ; N r ; B 26 -9 384 482 ; C 115 ; WX 389 ; N s ; B 9 -11 345 482 ; C 116 ; WX 333 ; N t ; B 41 -9 310 646 ; C 117 ; WX 556 ; N u ; B 32 -11 512 482 ; C 118 ; WX 500 ; N v ; B 21 -11 477 482 ; C 119 ; WX 722 ; N w ; B 21 -11 699 482 ; C 120 ; WX 500 ; N x ; B 9 -11 484 482 ; C 121 ; WX 500 ; N y ; B -8 -276 490 482 ; C 122 ; WX 444 ; N z ; B -1 -11 416 482 ; C 123 ; WX 333 ; N braceleft ; B 15 -100 319 733 ; C 124 ; WX 606 ; N bar ; B 275 -250 331 750 ; C 125 ; WX 333 ; N braceright ; B 14 -100 318 733 ; C 126 ; WX 606 ; N asciitilde ; B 51 168 555 339 ; C 160 ; WX 250 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 333 ; N exclamdown ; B 15 -276 233 467 ; C 162 ; WX 500 ; N cent ; B 56 -96 418 551 ; C 163 ; WX 500 ; N sterling ; B 2 -18 479 708 ; C 164 ; WX 167 ; N fraction ; B -170 0 337 699 ; C 165 ; WX 500 ; N yen ; B 35 -3 512 699 ; C 166 ; WX 500 ; N florin ; B 5 -276 470 708 ; C 167 ; WX 500 ; N section ; B 14 -220 463 706 ; C 168 ; WX 500 ; N currency ; B 14 115 486 577 ; C 169 ; WX 333 ; N quotesingle ; B 140 508 288 733 ; C 170 ; WX 500 ; N quotedblleft ; B 98 488 475 733 ; C 171 ; WX 500 ; N guillemotleft ; B 57 70 437 440 ; C 172 ; WX 333 ; N guilsinglleft ; B 57 70 270 440 ; C 173 ; WX 333 ; N guilsinglright ; B 63 70 276 440 ; C 174 ; WX 528 ; N fi ; B -162 -276 502 733 ; C 175 ; WX 545 ; N fl ; B -162 -276 520 733 ; C 177 ; WX 500 ; N endash ; B -10 228 510 278 ; C 178 ; WX 500 ; N dagger ; B 48 0 469 692 ; C 179 ; WX 500 ; N daggerdbl ; B 10 -162 494 692 ; C 180 ; WX 250 ; N periodcentered ; B 53 195 158 312 ; C 182 ; WX 500 ; N paragraph ; B 33 -224 611 692 ; C 183 ; WX 500 ; N bullet ; B 86 182 430 526 ; C 184 ; WX 278 ; N quotesinglbase ; B 27 -122 211 120 ; C 185 ; WX 500 ; N quotedblbase ; B 43 -122 424 120 ; C 186 ; WX 500 ; N quotedblright ; B 98 488 475 733 ; C 187 ; WX 500 ; N guillemotright ; B 63 70 443 440 ; C 188 ; WX 1000 ; N ellipsis ; B 102 -5 873 112 ; C 189 ; WX 1000 ; N perthousand ; B 72 -6 929 717 ; C 191 ; WX 500 ; N questiondown ; B 57 -246 370 467 ; C 193 ; WX 333 ; N grave ; B 86 518 310 687 ; C 194 ; WX 333 ; N acute ; B 122 518 346 687 ; C 195 ; WX 333 ; N circumflex ; B 56 510 350 679 ; C 196 ; WX 333 ; N tilde ; B 63 535 390 638 ; C 197 ; WX 333 ; N macron ; B 74 538 386 589 ; C 198 ; WX 333 ; N breve ; B 92 518 393 677 ; C 199 ; WX 333 ; N dotaccent ; B 189 604 283 712 ; C 200 ; WX 333 ; N dieresis ; B 88 604 382 712 ; C 202 ; WX 333 ; N ring ; B 159 508 359 708 ; C 203 ; WX 333 ; N cedilla ; B -9 -216 202 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 16 518 407 687 ; C 206 ; WX 333 ; N ogonek ; B 31 -226 213 -18 ; C 207 ; WX 333 ; N caron ; B 104 510 409 679 ; C 208 ; WX 1000 ; N emdash ; B -10 228 1010 278 ; C 225 ; WX 941 ; N AE ; B -4 -3 902 692 ; C 227 ; WX 333 ; N ordfeminine ; B 60 404 321 699 ; C 232 ; WX 556 ; N Lslash ; B -16 -3 523 692 ; C 233 ; WX 778 ; N Oslash ; B 32 -39 762 721 ; C 234 ; WX 1028 ; N OE ; B 56 -18 989 706 ; C 235 ; WX 333 ; N ordmasculine ; B 66 404 322 699 ; C 241 ; WX 638 ; N ae ; B 1 -11 623 482 ; C 245 ; WX 278 ; N dotlessi ; B 34 -9 241 482 ; C 248 ; WX 278 ; N lslash ; B -10 -9 302 733 ; C 249 ; WX 444 ; N oslash ; B -18 -24 460 510 ; C 250 ; WX 669 ; N oe ; B 17 -11 654 482 ; C 251 ; WX 500 ; N germandbls ; B -160 -276 488 733 ; C -1 ; WX 333 ; N Idieresis ; B 7 -3 422 847 ; C -1 ; WX 389 ; N eacute ; B 15 -11 394 707 ; C -1 ; WX 444 ; N abreve ; B 4 -11 461 697 ; C -1 ; WX 556 ; N uhungarumlaut ; B 32 -11 599 707 ; C -1 ; WX 389 ; N ecaron ; B 15 -11 437 699 ; C -1 ; WX 667 ; N Ydieresis ; B 52 -3 675 847 ; C -1 ; WX 606 ; N divide ; B 51 0 555 504 ; C -1 ; WX 667 ; N Yacute ; B 52 -3 675 897 ; C -1 ; WX 722 ; N Acircumflex ; B -19 -3 677 889 ; C -1 ; WX 444 ; N aacute ; B 4 -11 414 707 ; C -1 ; WX 778 ; N Ucircumflex ; B 88 -18 798 889 ; C -1 ; WX 500 ; N yacute ; B -8 -276 492 707 ; C -1 ; WX 389 ; N scommaaccent ; B 9 -276 345 482 ; C -1 ; WX 389 ; N ecircumflex ; B 15 -11 398 699 ; C -1 ; WX 778 ; N Uring ; B 88 -18 798 918 ; C -1 ; WX 778 ; N Udieresis ; B 88 -18 798 847 ; C -1 ; WX 444 ; N aogonek ; B 4 -226 406 482 ; C -1 ; WX 778 ; N Uacute ; B 88 -18 798 897 ; C -1 ; WX 556 ; N uogonek ; B 32 -212 512 482 ; C -1 ; WX 611 ; N Edieresis ; B 30 -3 570 847 ; C -1 ; WX 778 ; N Dcroat ; B 19 -3 741 692 ; C -1 ; WX 250 ; N commaaccent ; B 43 -276 188 -50 ; C -1 ; WX 747 ; N copyright ; B 11 -18 736 706 ; C -1 ; WX 611 ; N Emacron ; B 30 -3 570 799 ; C -1 ; WX 407 ; N ccaron ; B 25 -11 446 699 ; C -1 ; WX 444 ; N aring ; B 4 -11 406 728 ; C -1 ; WX 778 ; N Ncommaaccent ; B 2 -276 804 692 ; C -1 ; WX 278 ; N lacute ; B 36 -9 391 917 ; C -1 ; WX 444 ; N agrave ; B 4 -11 406 707 ; C -1 ; WX 611 ; N Tcommaaccent ; B 53 -276 635 692 ; C -1 ; WX 667 ; N Cacute ; B 45 -18 651 897 ; C -1 ; WX 444 ; N atilde ; B 4 -11 446 658 ; C -1 ; WX 611 ; N Edotaccent ; B 30 -3 570 847 ; C -1 ; WX 389 ; N scaron ; B 9 -11 389 699 ; C -1 ; WX 389 ; N scedilla ; B -4 -216 345 482 ; C -1 ; WX 278 ; N iacute ; B 34 -9 330 707 ; C -1 ; WX 471 ; N lozenge ; B 21 0 451 710 ; C -1 ; WX 667 ; N Rcaron ; B 9 -3 639 889 ; C -1 ; WX 722 ; N Gcommaaccent ; B 50 -276 694 706 ; C -1 ; WX 556 ; N ucircumflex ; B 32 -11 512 699 ; C -1 ; WX 444 ; N acircumflex ; B 4 -11 406 699 ; C -1 ; WX 722 ; N Amacron ; B -19 -3 677 799 ; C -1 ; WX 389 ; N rcaron ; B 26 -9 437 699 ; C -1 ; WX 407 ; N ccedilla ; B 19 -216 389 482 ; C -1 ; WX 667 ; N Zdotaccent ; B 20 -3 637 847 ; C -1 ; WX 611 ; N Thorn ; B 9 -3 570 692 ; C -1 ; WX 778 ; N Omacron ; B 53 -18 748 799 ; C -1 ; WX 667 ; N Racute ; B 9 -3 639 897 ; C -1 ; WX 556 ; N Sacute ; B 42 -18 556 897 ; C -1 ; WX 580 ; N dcaron ; B 17 -11 634 733 ; C -1 ; WX 778 ; N Umacron ; B 88 -18 798 799 ; C -1 ; WX 556 ; N uring ; B 32 -11 512 728 ; C -1 ; WX 300 ; N threesuperior ; B 28 273 304 699 ; C -1 ; WX 778 ; N Ograve ; B 53 -18 748 897 ; C -1 ; WX 722 ; N Agrave ; B -19 -3 677 897 ; C -1 ; WX 722 ; N Abreve ; B -19 -3 677 887 ; C -1 ; WX 606 ; N multiply ; B 83 36 523 474 ; C -1 ; WX 556 ; N uacute ; B 32 -11 520 707 ; C -1 ; WX 611 ; N Tcaron ; B 53 -3 635 889 ; C -1 ; WX 476 ; N partialdiff ; B 34 -21 450 711 ; C -1 ; WX 500 ; N ydieresis ; B -8 -276 490 657 ; C -1 ; WX 778 ; N Nacute ; B 2 -11 804 897 ; C -1 ; WX 278 ; N icircumflex ; B 29 -9 323 699 ; C -1 ; WX 611 ; N Ecircumflex ; B 30 -3 570 889 ; C -1 ; WX 444 ; N adieresis ; B 4 -11 438 657 ; C -1 ; WX 389 ; N edieresis ; B 15 -11 410 657 ; C -1 ; WX 407 ; N cacute ; B 25 -11 403 707 ; C -1 ; WX 556 ; N nacute ; B 24 -9 514 707 ; C -1 ; WX 556 ; N umacron ; B 32 -11 512 609 ; C -1 ; WX 778 ; N Ncaron ; B 2 -11 804 889 ; C -1 ; WX 333 ; N Iacute ; B 7 -3 406 897 ; C -1 ; WX 606 ; N plusminus ; B 51 0 555 504 ; C -1 ; WX 606 ; N brokenbar ; B 275 -175 331 675 ; C -1 ; WX 747 ; N registered ; B 11 -18 736 706 ; C -1 ; WX 722 ; N Gbreve ; B 50 -18 694 887 ; C -1 ; WX 333 ; N Idotaccent ; B 7 -3 354 847 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 611 ; N Egrave ; B 30 -3 570 897 ; C -1 ; WX 389 ; N racute ; B 26 -9 386 707 ; C -1 ; WX 444 ; N omacron ; B 17 -11 442 609 ; C -1 ; WX 667 ; N Zacute ; B 20 -3 637 897 ; C -1 ; WX 667 ; N Zcaron ; B 20 -3 637 889 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 643 ; C -1 ; WX 778 ; N Eth ; B 19 -3 741 692 ; C -1 ; WX 667 ; N Ccedilla ; B 45 -216 651 706 ; C -1 ; WX 278 ; N lcommaaccent ; B -43 -276 251 733 ; C -1 ; WX 353 ; N tcaron ; B 41 -9 420 752 ; C -1 ; WX 389 ; N eogonek ; B 15 -226 374 482 ; C -1 ; WX 778 ; N Uogonek ; B 88 -226 798 692 ; C -1 ; WX 722 ; N Aacute ; B -19 -3 677 897 ; C -1 ; WX 722 ; N Adieresis ; B -19 -3 677 847 ; C -1 ; WX 389 ; N egrave ; B 15 -11 374 707 ; C -1 ; WX 444 ; N zacute ; B -1 -11 416 707 ; C -1 ; WX 278 ; N iogonek ; B 16 -212 264 712 ; C -1 ; WX 778 ; N Oacute ; B 53 -18 748 897 ; C -1 ; WX 444 ; N oacute ; B 17 -11 414 707 ; C -1 ; WX 444 ; N amacron ; B 4 -11 442 609 ; C -1 ; WX 389 ; N sacute ; B 9 -11 374 707 ; C -1 ; WX 278 ; N idieresis ; B 34 -9 355 657 ; C -1 ; WX 778 ; N Ocircumflex ; B 53 -18 748 889 ; C -1 ; WX 778 ; N Ugrave ; B 88 -18 798 897 ; C -1 ; WX 600 ; N Delta ; B 66 0 668 688 ; C -1 ; WX 500 ; N thorn ; B -39 -276 433 733 ; C -1 ; WX 300 ; N twosuperior ; B 13 278 290 699 ; C -1 ; WX 778 ; N Odieresis ; B 53 -18 748 847 ; C -1 ; WX 556 ; N mu ; B 15 -226 512 482 ; C -1 ; WX 278 ; N igrave ; B 34 -9 270 707 ; C -1 ; WX 444 ; N ohungarumlaut ; B 17 -11 523 707 ; C -1 ; WX 611 ; N Eogonek ; B 30 -207 570 692 ; C -1 ; WX 500 ; N dcroat ; B 17 -11 526 733 ; C -1 ; WX 750 ; N threequarters ; B 35 -2 715 699 ; C -1 ; WX 556 ; N Scedilla ; B 42 -216 506 706 ; C -1 ; WX 348 ; N lcaron ; B 36 -9 402 733 ; C -1 ; WX 667 ; N Kcommaaccent ; B 13 -276 683 692 ; C -1 ; WX 556 ; N Lacute ; B 16 -3 523 897 ; C -1 ; WX 1000 ; N trademark ; B 52 285 951 689 ; C -1 ; WX 389 ; N edotaccent ; B 15 -11 374 657 ; C -1 ; WX 333 ; N Igrave ; B 7 -3 354 897 ; C -1 ; WX 333 ; N Imacron ; B 7 -3 426 799 ; C -1 ; WX 556 ; N Lcaron ; B 16 -3 541 712 ; C -1 ; WX 750 ; N onehalf ; B 31 -2 721 699 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 642 ; C -1 ; WX 444 ; N ocircumflex ; B 17 -11 411 699 ; C -1 ; WX 556 ; N ntilde ; B 24 -9 514 658 ; C -1 ; WX 778 ; N Uhungarumlaut ; B 88 -18 798 897 ; C -1 ; WX 611 ; N Eacute ; B 30 -3 570 897 ; C -1 ; WX 389 ; N emacron ; B 15 -11 434 609 ; C -1 ; WX 500 ; N gbreve ; B -37 -276 498 697 ; C -1 ; WX 750 ; N onequarter ; B 31 -2 715 699 ; C -1 ; WX 556 ; N Scaron ; B 42 -18 539 889 ; C -1 ; WX 556 ; N Scommaaccent ; B 42 -276 506 706 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 53 -18 748 897 ; C -1 ; WX 400 ; N degree ; B 90 389 390 689 ; C -1 ; WX 444 ; N ograve ; B 17 -11 411 707 ; C -1 ; WX 667 ; N Ccaron ; B 45 -18 651 889 ; C -1 ; WX 556 ; N ugrave ; B 32 -11 512 707 ; C -1 ; WX 453 ; N radical ; B 12 -55 442 747 ; C -1 ; WX 778 ; N Dcaron ; B 28 -3 741 889 ; C -1 ; WX 389 ; N rcommaaccent ; B -28 -276 384 482 ; C -1 ; WX 778 ; N Ntilde ; B 2 -11 804 848 ; C -1 ; WX 444 ; N otilde ; B 17 -11 446 658 ; C -1 ; WX 667 ; N Rcommaaccent ; B 9 -276 639 692 ; C -1 ; WX 556 ; N Lcommaaccent ; B 16 -276 523 692 ; C -1 ; WX 722 ; N Atilde ; B -19 -3 677 848 ; C -1 ; WX 722 ; N Aogonek ; B -19 -210 695 705 ; C -1 ; WX 722 ; N Aring ; B -19 -3 677 918 ; C -1 ; WX 778 ; N Otilde ; B 53 -18 748 848 ; C -1 ; WX 444 ; N zdotaccent ; B -1 -11 416 657 ; C -1 ; WX 611 ; N Ecaron ; B 30 -3 588 889 ; C -1 ; WX 333 ; N Iogonek ; B 7 -210 354 692 ; C -1 ; WX 444 ; N kcommaaccent ; B 8 -276 449 733 ; C -1 ; WX 606 ; N minus ; B 51 224 555 280 ; C -1 ; WX 333 ; N Icircumflex ; B 7 -3 390 889 ; C -1 ; WX 556 ; N ncaron ; B 24 -9 533 699 ; C -1 ; WX 333 ; N tcommaaccent ; B -16 -276 310 646 ; C -1 ; WX 606 ; N logicalnot ; B 51 118 555 378 ; C -1 ; WX 444 ; N odieresis ; B 17 -11 438 657 ; C -1 ; WX 556 ; N udieresis ; B 32 -11 512 657 ; C -1 ; WX 549 ; N notequal ; B 12 -16 537 538 ; C -1 ; WX 500 ; N gcommaaccent ; B -37 -276 498 761 ; C -1 ; WX 444 ; N eth ; B 17 -11 478 733 ; C -1 ; WX 444 ; N zcaron ; B -1 -11 447 699 ; C -1 ; WX 556 ; N ncommaaccent ; B 24 -276 514 482 ; C -1 ; WX 300 ; N onesuperior ; B 61 278 285 699 ; C -1 ; WX 278 ; N imacron ; B 34 -9 324 579 ; C -1 ; WX 500 ; N Euro ; B 42 -21 615 709 ; C -1 ; WX 667 ; N Ccircumflex ; B 45 -18 651 961 ; C -1 ; WX 407 ; N ccircumflex ; B 25 -11 415 751 ; C -1 ; WX 667 ; N Cdotaccent ; B 45 -18 651 900 ; C -1 ; WX 407 ; N cdotaccent ; B 25 -11 389 690 ; C -1 ; WX 611 ; N Ebreve ; B 30 -3 570 951 ; C -1 ; WX 389 ; N ebreve ; B 15 -11 433 741 ; C -1 ; WX 722 ; N Gcircumflex ; B 50 -18 694 961 ; C -1 ; WX 500 ; N gcircumflex ; B -37 -276 498 751 ; C -1 ; WX 722 ; N Gdotaccent ; B 50 -18 694 900 ; C -1 ; WX 500 ; N gdotaccent ; B -37 -276 498 690 ; C -1 ; WX 778 ; N Hcircumflex ; B -3 -3 800 961 ; C -1 ; WX 500 ; N hcircumflex ; B 10 -9 489 1002 ; C -1 ; WX 778 ; N Hbar ; B -3 -3 800 692 ; C -1 ; WX 500 ; N hbar ; B 7 -9 471 733 ; C -1 ; WX 333 ; N Itilde ; B 7 -3 430 895 ; C -1 ; WX 278 ; N itilde ; B 34 -9 368 685 ; C -1 ; WX 333 ; N Ibreve ; B 7 -3 435 951 ; C -1 ; WX 278 ; N ibreve ; B 34 -9 373 741 ; C -1 ; WX 333 ; N IJ ; B 7 -3 354 692 ; C -1 ; WX 278 ; N ij ; B 34 -9 264 712 ; C -1 ; WX 333 ; N Jcircumflex ; B -35 -206 395 961 ; C -1 ; WX 278 ; N jcircumflex ; B -70 -276 350 679 ; C -1 ; WX 444 ; N kgreenlandic ; B 0 -9 449 482 ; C -1 ; WX 556 ; N Ldot ; B 16 -3 523 692 ; C -1 ; WX 420 ; N ldot ; B 36 -9 346 733 ; C -1 ; WX 556 ; N napostrophe ; B 24 -9 514 733 ; C -1 ; WX 778 ; N Obreve ; B 53 -18 748 951 ; C -1 ; WX 444 ; N obreve ; B 17 -11 448 741 ; C -1 ; WX 556 ; N Scircumflex ; B 42 -18 517 961 ; C -1 ; WX 389 ; N scircumflex ; B 9 -11 394 751 ; C -1 ; WX 611 ; N Tbar ; B 53 -3 635 692 ; C -1 ; WX 333 ; N tbar ; B 19 -9 310 646 ; C -1 ; WX 611 ; N Tcedilla ; B 53 -276 635 692 ; C -1 ; WX 333 ; N tcedilla ; B -16 -276 310 646 ; C -1 ; WX 778 ; N Utilde ; B 88 -19 798 895 ; C -1 ; WX 556 ; N utilde ; B 32 -11 512 685 ; C -1 ; WX 778 ; N Ubreve ; B 88 -19 798 951 ; C -1 ; WX 556 ; N ubreve ; B 32 -11 512 741 ; C -1 ; WX 944 ; N Wcircumflex ; B 71 -8 980 961 ; C -1 ; WX 722 ; N wcircumflex ; B 21 -11 699 751 ; C -1 ; WX 667 ; N Ycircumflex ; B 52 -3 675 961 ; C -1 ; WX 500 ; N ycircumflex ; B -8 -276 490 751 ; C -1 ; WX 278 ; N longs ; B -162 -276 413 733 ; C -1 ; WX 666 ; N infinity ; B 3 75 659 452 ; EndCharMetrics StartKernData StartKernPairs 962 KPX A T -55 KPX A Tcaron -55 KPX A Tcommaaccent -55 KPX A V -74 KPX A W -55 KPX A Y -55 KPX A Yacute -55 KPX A Ydieresis -55 KPX A quoteright -55 KPX A space -37 KPX A v -37 KPX A w -37 KPX A y -55 KPX A yacute -55 KPX A ydieresis -55 KPX Aacute T -55 KPX Aacute Tcaron -55 KPX Aacute Tcommaaccent -55 KPX Aacute V -74 KPX Aacute W -55 KPX Aacute Y -55 KPX Aacute Yacute -55 KPX Aacute Ydieresis -55 KPX Aacute quoteright -55 KPX Aacute space -37 KPX Aacute v -37 KPX Aacute w -37 KPX Aacute y -55 KPX Aacute yacute -55 KPX Aacute ydieresis -55 KPX Abreve T -55 KPX Abreve Tcaron -55 KPX Abreve Tcommaaccent -55 KPX Abreve V -74 KPX Abreve W -55 KPX Abreve Y -55 KPX Abreve Yacute -55 KPX Abreve Ydieresis -55 KPX Abreve quoteright -55 KPX Abreve space -37 KPX Abreve v -37 KPX Abreve w -37 KPX Abreve y -55 KPX Abreve yacute -55 KPX Abreve ydieresis -55 KPX Acircumflex T -55 KPX Acircumflex Tcaron -55 KPX Acircumflex Tcommaaccent -55 KPX Acircumflex V -74 KPX Acircumflex W -55 KPX Acircumflex Y -55 KPX Acircumflex Yacute -55 KPX Acircumflex Ydieresis -55 KPX Acircumflex quoteright -55 KPX Acircumflex space -37 KPX Acircumflex v -37 KPX Acircumflex w -37 KPX Acircumflex y -55 KPX Acircumflex yacute -55 KPX Acircumflex ydieresis -55 KPX Adieresis T -55 KPX Adieresis Tcaron -55 KPX Adieresis Tcommaaccent -55 KPX Adieresis V -74 KPX Adieresis W -55 KPX Adieresis Y -55 KPX Adieresis Yacute -55 KPX Adieresis Ydieresis -55 KPX Adieresis quoteright -55 KPX Adieresis space -37 KPX Adieresis v -37 KPX Adieresis w -37 KPX Adieresis y -55 KPX Adieresis yacute -55 KPX Adieresis ydieresis -55 KPX Agrave T -55 KPX Agrave Tcaron -55 KPX Agrave Tcommaaccent -55 KPX Agrave V -74 KPX Agrave W -55 KPX Agrave Y -55 KPX Agrave Yacute -55 KPX Agrave Ydieresis -55 KPX Agrave quoteright -55 KPX Agrave space -37 KPX Agrave v -37 KPX Agrave w -37 KPX Agrave y -55 KPX Agrave yacute -55 KPX Agrave ydieresis -55 KPX Amacron T -55 KPX Amacron Tcaron -55 KPX Amacron Tcommaaccent -55 KPX Amacron V -74 KPX Amacron W -55 KPX Amacron Y -55 KPX Amacron Yacute -55 KPX Amacron Ydieresis -55 KPX Amacron quoteright -55 KPX Amacron space -37 KPX Amacron v -37 KPX Amacron w -37 KPX Amacron y -55 KPX Amacron yacute -55 KPX Amacron ydieresis -55 KPX Aogonek T -55 KPX Aogonek Tcaron -55 KPX Aogonek Tcommaaccent -55 KPX Aogonek V -74 KPX Aogonek W -55 KPX Aogonek Y -55 KPX Aogonek Yacute -55 KPX Aogonek Ydieresis -55 KPX Aogonek quoteright -55 KPX Aogonek space -37 KPX Aogonek v -37 KPX Aogonek w -37 KPX Aogonek y -55 KPX Aogonek yacute -55 KPX Aogonek ydieresis -55 KPX Aring T -55 KPX Aring Tcaron -55 KPX Aring Tcommaaccent -55 KPX Aring V -74 KPX Aring W -55 KPX Aring Y -55 KPX Aring Yacute -55 KPX Aring Ydieresis -55 KPX Aring quoteright -55 KPX Aring space -37 KPX Aring v -37 KPX Aring w -37 KPX Aring y -55 KPX Aring yacute -55 KPX Aring ydieresis -55 KPX Atilde T -55 KPX Atilde Tcaron -55 KPX Atilde Tcommaaccent -55 KPX Atilde V -74 KPX Atilde W -55 KPX Atilde Y -55 KPX Atilde Yacute -55 KPX Atilde Ydieresis -55 KPX Atilde quoteright -55 KPX Atilde space -37 KPX Atilde v -37 KPX Atilde w -37 KPX Atilde y -55 KPX Atilde yacute -55 KPX Atilde ydieresis -55 KPX F A -111 KPX F Aacute -111 KPX F Abreve -111 KPX F Acircumflex -111 KPX F Adieresis -111 KPX F Agrave -111 KPX F Amacron -111 KPX F Aogonek -111 KPX F Aring -111 KPX F Atilde -111 KPX F comma -111 KPX F period -111 KPX L T -74 KPX L Tcaron -74 KPX L Tcommaaccent -74 KPX L V -74 KPX L W -74 KPX L Y -74 KPX L Yacute -74 KPX L Ydieresis -74 KPX L quoteright -37 KPX L space -18 KPX L y -37 KPX L yacute -37 KPX L ydieresis -37 KPX Lacute T -74 KPX Lacute Tcaron -74 KPX Lacute Tcommaaccent -74 KPX Lacute V -74 KPX Lacute W -74 KPX Lacute Y -74 KPX Lacute Yacute -74 KPX Lacute Ydieresis -74 KPX Lacute quoteright -37 KPX Lacute space -18 KPX Lacute y -37 KPX Lacute yacute -37 KPX Lacute ydieresis -37 KPX Lcaron quoteright -37 KPX Lcaron space -18 KPX Lcaron y -37 KPX Lcaron yacute -37 KPX Lcaron ydieresis -37 KPX Lcommaaccent T -74 KPX Lcommaaccent Tcaron -74 KPX Lcommaaccent Tcommaaccent -74 KPX Lcommaaccent V -74 KPX Lcommaaccent W -74 KPX Lcommaaccent Y -74 KPX Lcommaaccent Yacute -74 KPX Lcommaaccent Ydieresis -74 KPX Lcommaaccent quoteright -37 KPX Lcommaaccent space -18 KPX Lcommaaccent y -37 KPX Lcommaaccent yacute -37 KPX Lcommaaccent ydieresis -37 KPX Lslash T -74 KPX Lslash Tcaron -74 KPX Lslash Tcommaaccent -74 KPX Lslash V -74 KPX Lslash W -74 KPX Lslash Y -74 KPX Lslash Yacute -74 KPX Lslash Ydieresis -74 KPX Lslash quoteright -37 KPX Lslash space -18 KPX Lslash y -37 KPX Lslash yacute -37 KPX Lslash ydieresis -37 KPX P A -129 KPX P Aacute -129 KPX P Abreve -129 KPX P Acircumflex -129 KPX P Adieresis -129 KPX P Agrave -129 KPX P Amacron -129 KPX P Aogonek -129 KPX P Aring -129 KPX P Atilde -129 KPX P comma -129 KPX P period -129 KPX R T -55 KPX R Tcaron -55 KPX R Tcommaaccent -55 KPX R V -74 KPX R W -55 KPX R Y -55 KPX R Yacute -55 KPX R Ydieresis -55 KPX R y -37 KPX R yacute -37 KPX R ydieresis -37 KPX Racute T -55 KPX Racute Tcaron -55 KPX Racute Tcommaaccent -55 KPX Racute V -74 KPX Racute W -55 KPX Racute Y -55 KPX Racute Yacute -55 KPX Racute Ydieresis -55 KPX Racute y -37 KPX Racute yacute -37 KPX Racute ydieresis -37 KPX Rcaron T -55 KPX Rcaron Tcaron -55 KPX Rcaron Tcommaaccent -55 KPX Rcaron V -74 KPX Rcaron W -55 KPX Rcaron Y -55 KPX Rcaron Yacute -55 KPX Rcaron Ydieresis -55 KPX Rcaron y -37 KPX Rcaron yacute -37 KPX Rcaron ydieresis -37 KPX Rcommaaccent T -55 KPX Rcommaaccent Tcaron -55 KPX Rcommaaccent Tcommaaccent -55 KPX Rcommaaccent V -74 KPX Rcommaaccent W -55 KPX Rcommaaccent Y -55 KPX Rcommaaccent Yacute -55 KPX Rcommaaccent Ydieresis -55 KPX Rcommaaccent y -37 KPX Rcommaaccent yacute -37 KPX Rcommaaccent ydieresis -37 KPX T A -92 KPX T Aacute -92 KPX T Abreve -92 KPX T Acircumflex -92 KPX T Adieresis -92 KPX T Agrave -92 KPX T Amacron -92 KPX T Aogonek -92 KPX T Aring -92 KPX T Atilde -92 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -111 KPX T aacute -111 KPX T abreve -71 KPX T acircumflex -71 KPX T adieresis -71 KPX T agrave -71 KPX T amacron -71 KPX T aogonek -111 KPX T aring -71 KPX T atilde -71 KPX T c -111 KPX T cacute -111 KPX T ccaron -111 KPX T ccedilla -111 KPX T colon -74 KPX T comma -74 KPX T e -111 KPX T eacute -111 KPX T ecaron -111 KPX T ecircumflex -71 KPX T edieresis -71 KPX T edotaccent -111 KPX T egrave -71 KPX T emacron -71 KPX T eogonek -111 KPX T hyphen -55 KPX T i -55 KPX T iacute -55 KPX T iogonek -55 KPX T o -111 KPX T oacute -111 KPX T ocircumflex -71 KPX T odieresis -71 KPX T ograve -71 KPX T ohungarumlaut -111 KPX T omacron -71 KPX T oslash -111 KPX T otilde -71 KPX T period -74 KPX T r -111 KPX T racute -111 KPX T rcaron -111 KPX T rcommaaccent -111 KPX T s -111 KPX T sacute -111 KPX T scaron -71 KPX T scedilla -111 KPX T scommaaccent -111 KPX T semicolon -74 KPX T u -111 KPX T uacute -111 KPX T ucircumflex -111 KPX T udieresis -111 KPX T ugrave -111 KPX T uhungarumlaut -111 KPX T umacron -111 KPX T uogonek -111 KPX T uring -111 KPX T w -92 KPX T y -92 KPX T yacute -92 KPX T ydieresis -92 KPX Tcaron A -92 KPX Tcaron Aacute -92 KPX Tcaron Abreve -92 KPX Tcaron Acircumflex -92 KPX Tcaron Adieresis -92 KPX Tcaron Agrave -92 KPX Tcaron Amacron -92 KPX Tcaron Aogonek -92 KPX Tcaron Aring -92 KPX Tcaron Atilde -92 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -111 KPX Tcaron aacute -111 KPX Tcaron abreve -71 KPX Tcaron acircumflex -71 KPX Tcaron adieresis -71 KPX Tcaron agrave -71 KPX Tcaron amacron -71 KPX Tcaron aogonek -111 KPX Tcaron aring -71 KPX Tcaron atilde -71 KPX Tcaron c -111 KPX Tcaron cacute -111 KPX Tcaron ccaron -111 KPX Tcaron ccedilla -111 KPX Tcaron colon -74 KPX Tcaron comma -74 KPX Tcaron e -111 KPX Tcaron eacute -111 KPX Tcaron ecaron -111 KPX Tcaron ecircumflex -71 KPX Tcaron edieresis -71 KPX Tcaron edotaccent -111 KPX Tcaron egrave -71 KPX Tcaron emacron -71 KPX Tcaron eogonek -111 KPX Tcaron hyphen -55 KPX Tcaron i -55 KPX Tcaron iacute -55 KPX Tcaron iogonek -55 KPX Tcaron o -111 KPX Tcaron oacute -111 KPX Tcaron ocircumflex -71 KPX Tcaron odieresis -71 KPX Tcaron ograve -71 KPX Tcaron ohungarumlaut -111 KPX Tcaron omacron -71 KPX Tcaron oslash -111 KPX Tcaron otilde -71 KPX Tcaron period -74 KPX Tcaron r -111 KPX Tcaron racute -111 KPX Tcaron rcaron -111 KPX Tcaron rcommaaccent -111 KPX Tcaron s -111 KPX Tcaron sacute -111 KPX Tcaron scaron -71 KPX Tcaron scedilla -111 KPX Tcaron scommaaccent -111 KPX Tcaron semicolon -74 KPX Tcaron u -111 KPX Tcaron uacute -111 KPX Tcaron ucircumflex -111 KPX Tcaron udieresis -111 KPX Tcaron ugrave -111 KPX Tcaron uhungarumlaut -111 KPX Tcaron umacron -111 KPX Tcaron uogonek -111 KPX Tcaron uring -111 KPX Tcaron w -92 KPX Tcaron y -92 KPX Tcaron yacute -92 KPX Tcaron ydieresis -92 KPX Tcommaaccent A -92 KPX Tcommaaccent Aacute -92 KPX Tcommaaccent Abreve -92 KPX Tcommaaccent Acircumflex -92 KPX Tcommaaccent Adieresis -92 KPX Tcommaaccent Agrave -92 KPX Tcommaaccent Amacron -92 KPX Tcommaaccent Aogonek -92 KPX Tcommaaccent Aring -92 KPX Tcommaaccent Atilde -92 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -111 KPX Tcommaaccent aacute -111 KPX Tcommaaccent abreve -71 KPX Tcommaaccent acircumflex -71 KPX Tcommaaccent adieresis -71 KPX Tcommaaccent agrave -71 KPX Tcommaaccent amacron -71 KPX Tcommaaccent aogonek -111 KPX Tcommaaccent aring -71 KPX Tcommaaccent atilde -71 KPX Tcommaaccent c -111 KPX Tcommaaccent cacute -111 KPX Tcommaaccent ccaron -111 KPX Tcommaaccent ccedilla -111 KPX Tcommaaccent colon -74 KPX Tcommaaccent comma -74 KPX Tcommaaccent e -111 KPX Tcommaaccent eacute -111 KPX Tcommaaccent ecaron -111 KPX Tcommaaccent ecircumflex -71 KPX Tcommaaccent edieresis -71 KPX Tcommaaccent edotaccent -111 KPX Tcommaaccent egrave -71 KPX Tcommaaccent emacron -71 KPX Tcommaaccent eogonek -111 KPX Tcommaaccent hyphen -55 KPX Tcommaaccent i -55 KPX Tcommaaccent iacute -55 KPX Tcommaaccent iogonek -55 KPX Tcommaaccent o -111 KPX Tcommaaccent oacute -111 KPX Tcommaaccent ocircumflex -111 KPX Tcommaaccent odieresis -111 KPX Tcommaaccent ograve -111 KPX Tcommaaccent ohungarumlaut -111 KPX Tcommaaccent omacron -111 KPX Tcommaaccent oslash -111 KPX Tcommaaccent otilde -111 KPX Tcommaaccent period -74 KPX Tcommaaccent r -111 KPX Tcommaaccent racute -111 KPX Tcommaaccent rcaron -111 KPX Tcommaaccent rcommaaccent -111 KPX Tcommaaccent s -111 KPX Tcommaaccent sacute -111 KPX Tcommaaccent scaron -71 KPX Tcommaaccent scedilla -111 KPX Tcommaaccent scommaaccent -111 KPX Tcommaaccent semicolon -74 KPX Tcommaaccent u -111 KPX Tcommaaccent uacute -111 KPX Tcommaaccent ucircumflex -111 KPX Tcommaaccent udieresis -111 KPX Tcommaaccent ugrave -111 KPX Tcommaaccent uhungarumlaut -111 KPX Tcommaaccent umacron -111 KPX Tcommaaccent uogonek -111 KPX Tcommaaccent uring -111 KPX Tcommaaccent w -92 KPX Tcommaaccent y -92 KPX Tcommaaccent yacute -92 KPX Tcommaaccent ydieresis -92 KPX V A -210 KPX V Aacute -210 KPX V Abreve -210 KPX V Acircumflex -210 KPX V Adieresis -210 KPX V Agrave -210 KPX V Amacron -210 KPX V Aogonek -210 KPX V Aring -210 KPX V Atilde -210 KPX V a -74 KPX V aacute -74 KPX V abreve -74 KPX V acircumflex -74 KPX V adieresis -74 KPX V agrave -74 KPX V amacron -74 KPX V aogonek -74 KPX V aring -74 KPX V atilde -74 KPX V colon -37 KPX V comma -129 KPX V e -92 KPX V eacute -92 KPX V ecaron -92 KPX V ecircumflex -52 KPX V edieresis -52 KPX V edotaccent -92 KPX V egrave -52 KPX V emacron -52 KPX V eogonek -92 KPX V hyphen -55 KPX V i -74 KPX V iacute -74 KPX V icircumflex -34 KPX V idieresis -34 KPX V igrave -34 KPX V imacron -34 KPX V iogonek -74 KPX V o -74 KPX V oacute -74 KPX V ocircumflex -74 KPX V odieresis -74 KPX V ograve -74 KPX V ohungarumlaut -74 KPX V omacron -74 KPX V oslash -74 KPX V otilde -74 KPX V period -129 KPX V r -92 KPX V racute -92 KPX V rcaron -92 KPX V rcommaaccent -92 KPX V semicolon -37 KPX V u -74 KPX V uacute -74 KPX V ucircumflex -74 KPX V udieresis -74 KPX V ugrave -74 KPX V uhungarumlaut -74 KPX V umacron -74 KPX V uogonek -74 KPX V uring -74 KPX V y -74 KPX V yacute -74 KPX V ydieresis -74 KPX W A -92 KPX W Aacute -92 KPX W Abreve -92 KPX W Acircumflex -92 KPX W Adieresis -92 KPX W Agrave -92 KPX W Amacron -92 KPX W Aogonek -92 KPX W Aring -92 KPX W Atilde -92 KPX W a -20 KPX W aacute -20 KPX W abreve -20 KPX W acircumflex -20 KPX W adieresis -20 KPX W agrave -20 KPX W amacron -20 KPX W aogonek -20 KPX W aring -20 KPX W atilde -20 KPX W colon -18 KPX W comma -55 KPX W e -20 KPX W eacute -20 KPX W ecaron -20 KPX W ecircumflex -20 KPX W edieresis -20 KPX W edotaccent -20 KPX W egrave -20 KPX W emacron -20 KPX W eogonek -20 KPX W hyphen -18 KPX W i -20 KPX W iacute -20 KPX W iogonek -20 KPX W o -20 KPX W oacute -20 KPX W ocircumflex -20 KPX W odieresis -20 KPX W ograve -20 KPX W ohungarumlaut -20 KPX W omacron -20 KPX W oslash -20 KPX W otilde -20 KPX W period -55 KPX W r -20 KPX W racute -20 KPX W rcaron -20 KPX W rcommaaccent -20 KPX W semicolon -18 KPX W u -20 KPX W uacute -20 KPX W ucircumflex -20 KPX W udieresis -20 KPX W ugrave -20 KPX W uhungarumlaut -20 KPX W umacron -20 KPX W uogonek -20 KPX W uring -20 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -92 KPX Y Aacute -92 KPX Y Abreve -92 KPX Y Acircumflex -92 KPX Y Adieresis -92 KPX Y Agrave -92 KPX Y Amacron -92 KPX Y Aogonek -92 KPX Y Aring -92 KPX Y Atilde -92 KPX Y a -92 KPX Y aacute -92 KPX Y abreve -92 KPX Y acircumflex -92 KPX Y adieresis -92 KPX Y agrave -92 KPX Y amacron -92 KPX Y aogonek -92 KPX Y aring -92 KPX Y atilde -92 KPX Y colon -74 KPX Y comma -92 KPX Y e -111 KPX Y eacute -111 KPX Y ecaron -111 KPX Y ecircumflex -71 KPX Y edieresis -71 KPX Y edotaccent -111 KPX Y egrave -71 KPX Y emacron -71 KPX Y eogonek -111 KPX Y hyphen -74 KPX Y i -55 KPX Y iacute -55 KPX Y iogonek -55 KPX Y o -111 KPX Y oacute -111 KPX Y ocircumflex -111 KPX Y odieresis -111 KPX Y ograve -111 KPX Y ohungarumlaut -111 KPX Y omacron -111 KPX Y oslash -111 KPX Y otilde -111 KPX Y p -74 KPX Y period -92 KPX Y q -92 KPX Y semicolon -74 KPX Y u -92 KPX Y uacute -92 KPX Y ucircumflex -92 KPX Y udieresis -92 KPX Y ugrave -92 KPX Y uhungarumlaut -92 KPX Y umacron -92 KPX Y uogonek -92 KPX Y uring -92 KPX Y v -74 KPX Yacute A -92 KPX Yacute Aacute -92 KPX Yacute Abreve -92 KPX Yacute Acircumflex -92 KPX Yacute Adieresis -92 KPX Yacute Agrave -92 KPX Yacute Amacron -92 KPX Yacute Aogonek -92 KPX Yacute Aring -92 KPX Yacute Atilde -92 KPX Yacute a -92 KPX Yacute aacute -92 KPX Yacute abreve -92 KPX Yacute acircumflex -92 KPX Yacute adieresis -92 KPX Yacute agrave -92 KPX Yacute amacron -92 KPX Yacute aogonek -92 KPX Yacute aring -92 KPX Yacute atilde -92 KPX Yacute colon -74 KPX Yacute comma -92 KPX Yacute e -111 KPX Yacute eacute -111 KPX Yacute ecaron -111 KPX Yacute ecircumflex -71 KPX Yacute edieresis -71 KPX Yacute edotaccent -111 KPX Yacute egrave -71 KPX Yacute emacron -71 KPX Yacute eogonek -111 KPX Yacute hyphen -74 KPX Yacute i -55 KPX Yacute iacute -55 KPX Yacute iogonek -55 KPX Yacute o -111 KPX Yacute oacute -111 KPX Yacute ocircumflex -111 KPX Yacute odieresis -111 KPX Yacute ograve -111 KPX Yacute ohungarumlaut -111 KPX Yacute omacron -111 KPX Yacute oslash -111 KPX Yacute otilde -111 KPX Yacute p -74 KPX Yacute period -92 KPX Yacute q -92 KPX Yacute semicolon -74 KPX Yacute u -92 KPX Yacute uacute -92 KPX Yacute ucircumflex -92 KPX Yacute udieresis -92 KPX Yacute ugrave -92 KPX Yacute uhungarumlaut -92 KPX Yacute umacron -92 KPX Yacute uogonek -92 KPX Yacute uring -92 KPX Yacute v -74 KPX Ydieresis A -92 KPX Ydieresis Aacute -92 KPX Ydieresis Abreve -92 KPX Ydieresis Acircumflex -92 KPX Ydieresis Adieresis -92 KPX Ydieresis Agrave -92 KPX Ydieresis Amacron -92 KPX Ydieresis Aogonek -92 KPX Ydieresis Aring -92 KPX Ydieresis Atilde -92 KPX Ydieresis a -92 KPX Ydieresis aacute -92 KPX Ydieresis abreve -92 KPX Ydieresis acircumflex -92 KPX Ydieresis adieresis -92 KPX Ydieresis agrave -92 KPX Ydieresis amacron -92 KPX Ydieresis aogonek -92 KPX Ydieresis aring -92 KPX Ydieresis atilde -92 KPX Ydieresis colon -74 KPX Ydieresis comma -92 KPX Ydieresis e -111 KPX Ydieresis eacute -111 KPX Ydieresis ecaron -111 KPX Ydieresis ecircumflex -71 KPX Ydieresis edieresis -71 KPX Ydieresis edotaccent -111 KPX Ydieresis egrave -71 KPX Ydieresis emacron -71 KPX Ydieresis eogonek -111 KPX Ydieresis hyphen -74 KPX Ydieresis i -55 KPX Ydieresis iacute -55 KPX Ydieresis iogonek -55 KPX Ydieresis o -111 KPX Ydieresis oacute -111 KPX Ydieresis ocircumflex -111 KPX Ydieresis odieresis -111 KPX Ydieresis ograve -111 KPX Ydieresis ohungarumlaut -111 KPX Ydieresis omacron -111 KPX Ydieresis oslash -111 KPX Ydieresis otilde -111 KPX Ydieresis p -74 KPX Ydieresis period -92 KPX Ydieresis q -92 KPX Ydieresis semicolon -74 KPX Ydieresis u -92 KPX Ydieresis uacute -92 KPX Ydieresis ucircumflex -92 KPX Ydieresis udieresis -92 KPX Ydieresis ugrave -92 KPX Ydieresis uhungarumlaut -92 KPX Ydieresis umacron -92 KPX Ydieresis uogonek -92 KPX Ydieresis uring -92 KPX Ydieresis v -74 KPX f quoteright 55 KPX one one -55 KPX quoteleft quoteleft -74 KPX quoteright quoteright -74 KPX quoteright s -55 KPX quoteright sacute -55 KPX quoteright scaron -55 KPX quoteright scedilla -55 KPX quoteright scommaaccent -55 KPX quoteright space -55 KPX quoteright t -37 KPX quoteright tcommaaccent -37 KPX r c -18 KPX r cacute -18 KPX r ccaron -18 KPX r ccedilla -18 KPX r comma -74 KPX r e -18 KPX r eacute -18 KPX r ecaron -18 KPX r ecircumflex -18 KPX r edieresis -18 KPX r edotaccent -18 KPX r egrave -18 KPX r emacron -18 KPX r eogonek -18 KPX r g -18 KPX r gbreve -18 KPX r gcommaaccent -18 KPX r h -18 KPX r o -18 KPX r oacute -18 KPX r ocircumflex -18 KPX r odieresis -18 KPX r ograve -18 KPX r ohungarumlaut -18 KPX r omacron -18 KPX r oslash -18 KPX r otilde -18 KPX r period -74 KPX r q -18 KPX r quoteright 37 KPX racute c -18 KPX racute cacute -18 KPX racute ccaron -18 KPX racute ccedilla -18 KPX racute comma -74 KPX racute e -18 KPX racute eacute -18 KPX racute ecaron -18 KPX racute ecircumflex -18 KPX racute edieresis -18 KPX racute edotaccent -18 KPX racute egrave -18 KPX racute emacron -18 KPX racute eogonek -18 KPX racute g -18 KPX racute gbreve -18 KPX racute gcommaaccent -18 KPX racute h -18 KPX racute o -18 KPX racute oacute -18 KPX racute ocircumflex -18 KPX racute odieresis -18 KPX racute ograve -18 KPX racute ohungarumlaut -18 KPX racute omacron -18 KPX racute oslash -18 KPX racute otilde -18 KPX racute period -74 KPX racute q -18 KPX racute quoteright 37 KPX rcaron c -18 KPX rcaron cacute -18 KPX rcaron ccaron -18 KPX rcaron ccedilla -18 KPX rcaron comma -74 KPX rcaron e -18 KPX rcaron eacute -18 KPX rcaron ecaron -18 KPX rcaron ecircumflex -18 KPX rcaron edieresis -18 KPX rcaron edotaccent -18 KPX rcaron egrave -18 KPX rcaron emacron -18 KPX rcaron eogonek -18 KPX rcaron g -18 KPX rcaron gbreve -18 KPX rcaron gcommaaccent -18 KPX rcaron h -18 KPX rcaron o -18 KPX rcaron oacute -18 KPX rcaron ocircumflex -18 KPX rcaron odieresis -18 KPX rcaron ograve -18 KPX rcaron ohungarumlaut -18 KPX rcaron omacron -18 KPX rcaron oslash -18 KPX rcaron otilde -18 KPX rcaron period -74 KPX rcaron q -18 KPX rcaron quoteright 37 KPX rcommaaccent c -18 KPX rcommaaccent cacute -18 KPX rcommaaccent ccaron -18 KPX rcommaaccent ccedilla -18 KPX rcommaaccent comma -74 KPX rcommaaccent e -18 KPX rcommaaccent eacute -18 KPX rcommaaccent ecaron -18 KPX rcommaaccent ecircumflex -18 KPX rcommaaccent edieresis -18 KPX rcommaaccent edotaccent -18 KPX rcommaaccent egrave -18 KPX rcommaaccent emacron -18 KPX rcommaaccent eogonek -18 KPX rcommaaccent g -18 KPX rcommaaccent gbreve -18 KPX rcommaaccent gcommaaccent -18 KPX rcommaaccent h -18 KPX rcommaaccent o -18 KPX rcommaaccent oacute -18 KPX rcommaaccent ocircumflex -18 KPX rcommaaccent odieresis -18 KPX rcommaaccent ograve -18 KPX rcommaaccent ohungarumlaut -18 KPX rcommaaccent omacron -18 KPX rcommaaccent oslash -18 KPX rcommaaccent otilde -18 KPX rcommaaccent period -74 KPX rcommaaccent q -18 KPX rcommaaccent quoteright 37 KPX v comma -55 KPX v period -55 KPX w comma -55 KPX w period -55 KPX y comma -37 KPX y period -37 KPX yacute comma -37 KPX yacute period -37 KPX ydieresis comma -37 KPX ydieresis period -37 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/ZapfChancery-MediumItalic.afm0000644000222100022210000012142414541067540020310 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 15:04:18 1997 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43081 Comment VMusage 45650 56675 FontName ZapfChancery-MediumItalic FullName ITC Zapf Chancery Medium Italic FamilyName ITC Zapf Chancery Weight Medium ItalicAngle -14 IsFixedPitch false FontBBox -181 -314 1065 831 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Chancery is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 708 XHeight 438 Ascender 714 Descender -314 StdHW 34 StdVW 70 StartCharMetrics 314 C 32 ; WX 220 ; N space ; B 0 0 0 0 ; C 33 ; WX 280 ; N exclam ; B 119 -14 353 610 ; C 34 ; WX 220 ; N quotedbl ; B 120 343 333 610 ; C 35 ; WX 440 ; N numbersign ; B 83 0 521 594 ; C 36 ; WX 440 ; N dollar ; B 60 -144 508 709 ; C 37 ; WX 680 ; N percent ; B 132 -160 710 700 ; C 38 ; WX 780 ; N ampersand ; B 126 -16 915 610 ; C 39 ; WX 240 ; N quoteright ; B 168 343 338 610 ; C 40 ; WX 260 ; N parenleft ; B 96 -216 411 664 ; C 41 ; WX 220 ; N parenright ; B -13 -216 302 664 ; C 42 ; WX 420 ; N asterisk ; B 139 263 479 610 ; C 43 ; WX 520 ; N plus ; B 117 0 543 426 ; C 44 ; WX 220 ; N comma ; B 25 -140 213 148 ; C 45 ; WX 280 ; N hyphen ; B 69 190 334 248 ; C 46 ; WX 220 ; N period ; B 102 -14 228 128 ; C 47 ; WX 340 ; N slash ; B 74 -16 458 610 ; C 48 ; WX 440 ; N zero ; B 79 -16 538 610 ; C 49 ; WX 440 ; N one ; B 41 0 428 610 ; C 50 ; WX 440 ; N two ; B 17 -16 485 610 ; C 51 ; WX 440 ; N three ; B 1 -16 485 610 ; C 52 ; WX 440 ; N four ; B 77 -35 499 610 ; C 53 ; WX 440 ; N five ; B 60 -16 595 679 ; C 54 ; WX 440 ; N six ; B 90 -16 556 610 ; C 55 ; WX 440 ; N seven ; B 157 -33 561 645 ; C 56 ; WX 440 ; N eight ; B 65 -16 529 610 ; C 57 ; WX 440 ; N nine ; B 32 -16 517 610 ; C 58 ; WX 260 ; N colon ; B 98 -14 296 438 ; C 59 ; WX 240 ; N semicolon ; B 29 -140 299 438 ; C 60 ; WX 520 ; N less ; B 139 0 527 468 ; C 61 ; WX 520 ; N equal ; B 117 86 543 340 ; C 62 ; WX 520 ; N greater ; B 139 0 527 468 ; C 63 ; WX 380 ; N question ; B 150 -14 455 610 ; C 64 ; WX 700 ; N at ; B 127 -16 753 610 ; C 65 ; WX 620 ; N A ; B 13 -16 697 632 ; C 66 ; WX 600 ; N B ; B 85 -6 674 640 ; C 67 ; WX 520 ; N C ; B 93 -16 631 610 ; C 68 ; WX 700 ; N D ; B 86 -6 768 640 ; C 69 ; WX 620 ; N E ; B 91 -12 709 618 ; C 70 ; WX 580 ; N F ; B 120 -118 793 629 ; C 71 ; WX 620 ; N G ; B 148 -242 709 610 ; C 72 ; WX 680 ; N H ; B 18 -16 878 708 ; C 73 ; WX 380 ; N I ; B 99 0 504 594 ; C 74 ; WX 400 ; N J ; B -14 -147 538 594 ; C 75 ; WX 660 ; N K ; B 53 -153 844 610 ; C 76 ; WX 580 ; N L ; B 53 -16 657 610 ; C 77 ; WX 840 ; N M ; B 58 -16 1020 722 ; C 78 ; WX 700 ; N N ; B 85 -168 915 708 ; C 79 ; WX 600 ; N O ; B 94 -16 660 610 ; C 80 ; WX 540 ; N P ; B 42 0 658 628 ; C 81 ; WX 600 ; N Q ; B 84 -177 775 610 ; C 82 ; WX 600 ; N R ; B 58 -168 805 640 ; C 83 ; WX 460 ; N S ; B 45 -81 558 610 ; C 84 ; WX 500 ; N T ; B 63 0 744 667 ; C 85 ; WX 740 ; N U ; B 126 -16 792 617 ; C 86 ; WX 640 ; N V ; B 124 -16 810 714 ; C 87 ; WX 880 ; N W ; B 94 -16 1046 723 ; C 88 ; WX 560 ; N X ; B -30 -16 699 610 ; C 89 ; WX 560 ; N Y ; B 41 -168 774 647 ; C 90 ; WX 620 ; N Z ; B 42 -19 669 624 ; C 91 ; WX 240 ; N bracketleft ; B -13 -207 405 655 ; C 92 ; WX 480 ; N backslash ; B 140 -16 524 610 ; C 93 ; WX 320 ; N bracketright ; B -27 -207 391 655 ; C 94 ; WX 520 ; N asciicircum ; B 132 239 532 594 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 240 ; N quoteleft ; B 169 343 339 610 ; C 97 ; WX 420 ; N a ; B 92 -15 485 438 ; C 98 ; WX 420 ; N b ; B 82 -23 492 714 ; C 99 ; WX 340 ; N c ; B 87 -14 406 438 ; C 100 ; WX 440 ; N d ; B 102 -14 651 714 ; C 101 ; WX 340 ; N e ; B 87 -14 403 438 ; C 102 ; WX 320 ; N f ; B -119 -314 547 714 ; L i fi ; L l fl ; C 103 ; WX 400 ; N g ; B -108 -314 503 438 ; C 104 ; WX 440 ; N h ; B 55 -14 524 714 ; C 105 ; WX 240 ; N i ; B 100 -14 341 635 ; C 106 ; WX 220 ; N j ; B -112 -314 332 635 ; C 107 ; WX 440 ; N k ; B 87 -184 628 714 ; C 108 ; WX 240 ; N l ; B 102 -14 480 714 ; C 109 ; WX 620 ; N m ; B 86 -14 704 438 ; C 110 ; WX 460 ; N n ; B 101 -14 544 438 ; C 111 ; WX 400 ; N o ; B 87 -14 449 438 ; C 112 ; WX 440 ; N p ; B -23 -314 484 432 ; C 113 ; WX 400 ; N q ; B 87 -300 490 510 ; C 114 ; WX 300 ; N r ; B 101 -14 424 438 ; C 115 ; WX 320 ; N s ; B 46 -14 403 438 ; C 116 ; WX 320 ; N t ; B 106 -14 426 539 ; C 117 ; WX 460 ; N u ; B 102 -14 528 438 ; C 118 ; WX 440 ; N v ; B 87 -14 533 488 ; C 119 ; WX 680 ; N w ; B 87 -14 782 488 ; C 120 ; WX 420 ; N x ; B 70 -195 589 438 ; C 121 ; WX 400 ; N y ; B -24 -314 483 438 ; C 122 ; WX 440 ; N z ; B 26 -14 508 445 ; C 123 ; WX 240 ; N braceleft ; B 55 -207 383 655 ; C 124 ; WX 520 ; N bar ; B 320 -250 378 750 ; C 125 ; WX 240 ; N braceright ; B -10 -207 318 655 ; C 126 ; WX 520 ; N asciitilde ; B 123 186 539 320 ; C 160 ; WX 220 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 280 ; N exclamdown ; B 72 -186 306 438 ; C 162 ; WX 440 ; N cent ; B 122 -134 476 543 ; C 163 ; WX 440 ; N sterling ; B -16 -52 506 610 ; C 164 ; WX 60 ; N fraction ; B -181 -16 320 610 ; C 165 ; WX 440 ; N yen ; B -1 -168 613 647 ; C 166 ; WX 440 ; N florin ; B -64 -314 582 610 ; C 167 ; WX 420 ; N section ; B 53 -215 514 610 ; C 168 ; WX 440 ; N currency ; B 50 85 474 509 ; C 169 ; WX 160 ; N quotesingle ; B 145 343 215 610 ; C 170 ; WX 340 ; N quotedblleft ; B 169 343 464 610 ; C 171 ; WX 340 ; N guillemotleft ; B 98 24 356 414 ; C 172 ; WX 240 ; N guilsinglleft ; B 98 24 258 414 ; C 173 ; WX 260 ; N guilsinglright ; B 106 24 266 414 ; C 174 ; WX 520 ; N fi ; B -124 -314 605 714 ; C 175 ; WX 520 ; N fl ; B -124 -314 670 714 ; C 177 ; WX 500 ; N endash ; B 51 199 565 239 ; C 178 ; WX 460 ; N dagger ; B 138 -37 568 610 ; C 179 ; WX 480 ; N daggerdbl ; B 138 -59 533 610 ; C 180 ; WX 220 ; N periodcentered ; B 139 208 241 310 ; C 182 ; WX 500 ; N paragraph ; B 105 -199 638 594 ; C 183 ; WX 600 ; N bullet ; B 228 149 524 445 ; C 184 ; WX 180 ; N quotesinglbase ; B 21 -121 191 146 ; C 185 ; WX 280 ; N quotedblbase ; B -14 -121 281 146 ; C 186 ; WX 360 ; N quotedblright ; B 158 343 453 610 ; C 187 ; WX 380 ; N guillemotright ; B 117 24 375 414 ; C 188 ; WX 1000 ; N ellipsis ; B 124 -14 916 128 ; C 189 ; WX 960 ; N perthousand ; B 112 -160 1005 700 ; C 191 ; WX 400 ; N questiondown ; B 82 -186 387 438 ; C 193 ; WX 220 ; N grave ; B 193 492 339 659 ; C 194 ; WX 300 ; N acute ; B 265 492 422 659 ; C 195 ; WX 340 ; N circumflex ; B 223 482 443 649 ; C 196 ; WX 440 ; N tilde ; B 243 543 522 619 ; C 197 ; WX 440 ; N macron ; B 292 544 537 584 ; C 198 ; WX 440 ; N breve ; B 253 522 501 631 ; C 199 ; WX 220 ; N dotaccent ; B 236 515 342 635 ; C 200 ; WX 360 ; N dieresis ; B 233 515 503 635 ; C 202 ; WX 300 ; N ring ; B 240 483 416 659 ; C 203 ; WX 300 ; N cedilla ; B 12 -191 184 6 ; C 205 ; WX 400 ; N hungarumlaut ; B 208 492 495 659 ; C 206 ; WX 280 ; N ogonek ; B 114 -191 320 40 ; C 207 ; WX 340 ; N caron ; B 254 492 474 659 ; C 208 ; WX 1000 ; N emdash ; B 51 199 1065 239 ; C 225 ; WX 740 ; N AE ; B -21 -16 799 594 ; C 227 ; WX 260 ; N ordfeminine ; B 111 338 386 610 ; C 232 ; WX 580 ; N Lslash ; B 49 -16 657 610 ; C 233 ; WX 660 ; N Oslash ; B 83 -78 751 672 ; C 234 ; WX 820 ; N OE ; B 63 -16 909 610 ; C 235 ; WX 260 ; N ordmasculine ; B 128 339 373 610 ; C 241 ; WX 540 ; N ae ; B 67 -14 624 468 ; C 245 ; WX 240 ; N dotlessi ; B 100 -14 306 438 ; C 248 ; WX 300 ; N lslash ; B 74 -14 480 714 ; C 249 ; WX 440 ; N oslash ; B 46 -64 540 488 ; C 250 ; WX 560 ; N oe ; B 78 -14 628 438 ; C 251 ; WX 420 ; N germandbls ; B -127 -314 542 714 ; C -1 ; WX 380 ; N Idieresis ; B 99 0 553 762 ; C -1 ; WX 340 ; N eacute ; B 87 -14 462 659 ; C -1 ; WX 420 ; N abreve ; B 92 -15 501 631 ; C -1 ; WX 460 ; N uhungarumlaut ; B 102 -14 565 659 ; C -1 ; WX 340 ; N ecaron ; B 87 -14 474 659 ; C -1 ; WX 560 ; N Ydieresis ; B 41 -168 774 762 ; C -1 ; WX 520 ; N divide ; B 117 -14 543 440 ; C -1 ; WX 560 ; N Yacute ; B 41 -168 774 821 ; C -1 ; WX 620 ; N Acircumflex ; B 13 -16 697 821 ; C -1 ; WX 420 ; N aacute ; B 92 -15 492 659 ; C -1 ; WX 740 ; N Ucircumflex ; B 126 -16 792 821 ; C -1 ; WX 400 ; N yacute ; B -24 -314 483 659 ; C -1 ; WX 320 ; N scommaaccent ; B 42 -304 403 438 ; C -1 ; WX 340 ; N ecircumflex ; B 87 -14 433 649 ; C -1 ; WX 740 ; N Uring ; B 126 -16 792 831 ; C -1 ; WX 740 ; N Udieresis ; B 126 -16 792 762 ; C -1 ; WX 420 ; N aogonek ; B 92 -191 485 438 ; C -1 ; WX 740 ; N Uacute ; B 126 -16 792 821 ; C -1 ; WX 460 ; N uogonek ; B 102 -178 528 438 ; C -1 ; WX 620 ; N Edieresis ; B 91 -12 709 762 ; C -1 ; WX 700 ; N Dcroat ; B 86 -6 768 640 ; C -1 ; WX 180 ; N commaaccent ; B 52 -304 201 -72 ; C -1 ; WX 740 ; N copyright ; B 137 -16 763 610 ; C -1 ; WX 620 ; N Emacron ; B 91 -12 709 746 ; C -1 ; WX 340 ; N ccaron ; B 87 -14 474 659 ; C -1 ; WX 420 ; N aring ; B 92 -15 485 659 ; C -1 ; WX 700 ; N Ncommaaccent ; B 85 -274 915 708 ; C -1 ; WX 240 ; N lacute ; B 102 -14 522 831 ; C -1 ; WX 420 ; N agrave ; B 92 -15 485 659 ; C -1 ; WX 500 ; N Tcommaaccent ; B 63 -304 744 667 ; C -1 ; WX 520 ; N Cacute ; B 93 -16 631 821 ; C -1 ; WX 420 ; N atilde ; B 92 -15 522 619 ; C -1 ; WX 620 ; N Edotaccent ; B 91 -12 709 762 ; C -1 ; WX 320 ; N scaron ; B 46 -14 464 659 ; C -1 ; WX 320 ; N scedilla ; B 42 -191 403 438 ; C -1 ; WX 240 ; N iacute ; B 100 -14 392 659 ; C -1 ; WX 471 ; N lozenge ; B 15 0 457 719 ; C -1 ; WX 600 ; N Rcaron ; B 58 -168 805 821 ; C -1 ; WX 620 ; N Gcommaaccent ; B 148 -304 709 610 ; C -1 ; WX 460 ; N ucircumflex ; B 102 -14 528 649 ; C -1 ; WX 420 ; N acircumflex ; B 92 -15 485 649 ; C -1 ; WX 620 ; N Amacron ; B 13 -16 717 746 ; C -1 ; WX 300 ; N rcaron ; B 101 -14 444 659 ; C -1 ; WX 340 ; N ccedilla ; B 62 -191 406 438 ; C -1 ; WX 620 ; N Zdotaccent ; B 42 -19 669 762 ; C -1 ; WX 540 ; N Thorn ; B 52 0 647 623 ; C -1 ; WX 600 ; N Omacron ; B 94 -16 660 746 ; C -1 ; WX 600 ; N Racute ; B 58 -168 805 821 ; C -1 ; WX 460 ; N Sacute ; B 45 -81 558 821 ; C -1 ; WX 490 ; N dcaron ; B 102 -14 651 714 ; C -1 ; WX 740 ; N Umacron ; B 126 -16 792 746 ; C -1 ; WX 460 ; N uring ; B 102 -14 528 659 ; C -1 ; WX 264 ; N threesuperior ; B 59 234 348 610 ; C -1 ; WX 600 ; N Ograve ; B 94 -16 660 821 ; C -1 ; WX 620 ; N Agrave ; B 13 -16 697 821 ; C -1 ; WX 620 ; N Abreve ; B 13 -16 761 793 ; C -1 ; WX 520 ; N multiply ; B 133 16 527 410 ; C -1 ; WX 460 ; N uacute ; B 102 -14 528 659 ; C -1 ; WX 500 ; N Tcaron ; B 63 0 744 821 ; C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ; C -1 ; WX 400 ; N ydieresis ; B -24 -314 503 610 ; C -1 ; WX 700 ; N Nacute ; B 85 -168 915 821 ; C -1 ; WX 240 ; N icircumflex ; B 100 -14 363 649 ; C -1 ; WX 620 ; N Ecircumflex ; B 91 -12 709 821 ; C -1 ; WX 420 ; N adieresis ; B 92 -15 513 610 ; C -1 ; WX 340 ; N edieresis ; B 87 -14 483 610 ; C -1 ; WX 340 ; N cacute ; B 87 -14 452 659 ; C -1 ; WX 460 ; N nacute ; B 101 -14 544 659 ; C -1 ; WX 460 ; N umacron ; B 102 -14 528 584 ; C -1 ; WX 700 ; N Ncaron ; B 85 -168 915 821 ; C -1 ; WX 380 ; N Iacute ; B 99 0 532 821 ; C -1 ; WX 520 ; N plusminus ; B 117 0 543 436 ; C -1 ; WX 520 ; N brokenbar ; B 320 -175 378 675 ; C -1 ; WX 740 ; N registered ; B 137 -16 763 610 ; C -1 ; WX 620 ; N Gbreve ; B 148 -242 709 793 ; C -1 ; WX 380 ; N Idotaccent ; B 99 0 504 762 ; C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ; C -1 ; WX 620 ; N Egrave ; B 91 -12 709 821 ; C -1 ; WX 300 ; N racute ; B 101 -14 442 659 ; C -1 ; WX 400 ; N omacron ; B 87 -14 507 584 ; C -1 ; WX 620 ; N Zacute ; B 42 -19 669 821 ; C -1 ; WX 620 ; N Zcaron ; B 42 -19 669 821 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 658 ; C -1 ; WX 700 ; N Eth ; B 86 -6 768 640 ; C -1 ; WX 520 ; N Ccedilla ; B 93 -191 631 610 ; C -1 ; WX 240 ; N lcommaaccent ; B 42 -304 480 714 ; C -1 ; WX 320 ; N tcaron ; B 106 -14 501 678 ; C -1 ; WX 340 ; N eogonek ; B 87 -191 403 438 ; C -1 ; WX 740 ; N Uogonek ; B 126 -191 792 617 ; C -1 ; WX 620 ; N Aacute ; B 13 -16 702 821 ; C -1 ; WX 620 ; N Adieresis ; B 13 -16 743 762 ; C -1 ; WX 340 ; N egrave ; B 87 -14 403 659 ; C -1 ; WX 440 ; N zacute ; B 26 -14 512 659 ; C -1 ; WX 240 ; N iogonek ; B 94 -191 341 635 ; C -1 ; WX 600 ; N Oacute ; B 94 -16 660 821 ; C -1 ; WX 400 ; N oacute ; B 87 -14 482 659 ; C -1 ; WX 420 ; N amacron ; B 92 -15 507 584 ; C -1 ; WX 320 ; N sacute ; B 46 -14 442 659 ; C -1 ; WX 240 ; N idieresis ; B 100 -14 403 610 ; C -1 ; WX 600 ; N Ocircumflex ; B 94 -16 660 821 ; C -1 ; WX 740 ; N Ugrave ; B 126 -16 792 821 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 440 ; N thorn ; B -38 -314 505 714 ; C -1 ; WX 264 ; N twosuperior ; B 72 234 354 610 ; C -1 ; WX 600 ; N Odieresis ; B 94 -16 660 762 ; C -1 ; WX 460 ; N mu ; B 7 -314 523 438 ; C -1 ; WX 240 ; N igrave ; B 100 -14 306 659 ; C -1 ; WX 400 ; N ohungarumlaut ; B 87 -14 535 659 ; C -1 ; WX 620 ; N Eogonek ; B 91 -191 709 618 ; C -1 ; WX 440 ; N dcroat ; B 102 -14 651 714 ; C -1 ; WX 660 ; N threequarters ; B 39 -16 706 610 ; C -1 ; WX 460 ; N Scedilla ; B 45 -251 558 610 ; C -1 ; WX 280 ; N lcaron ; B 102 -14 480 714 ; C -1 ; WX 660 ; N Kcommaaccent ; B 53 -274 844 610 ; C -1 ; WX 580 ; N Lacute ; B 53 -16 657 821 ; C -1 ; WX 1000 ; N trademark ; B 127 187 1046 594 ; C -1 ; WX 340 ; N edotaccent ; B 87 -14 403 610 ; C -1 ; WX 380 ; N Igrave ; B 99 0 504 821 ; C -1 ; WX 380 ; N Imacron ; B 99 0 547 746 ; C -1 ; WX 580 ; N Lcaron ; B 53 -16 721 610 ; C -1 ; WX 660 ; N onehalf ; B 56 -16 702 610 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 658 ; C -1 ; WX 400 ; N ocircumflex ; B 87 -14 453 649 ; C -1 ; WX 460 ; N ntilde ; B 101 -14 544 619 ; C -1 ; WX 740 ; N Uhungarumlaut ; B 126 -16 792 821 ; C -1 ; WX 620 ; N Eacute ; B 91 -12 709 821 ; C -1 ; WX 340 ; N emacron ; B 87 -14 477 584 ; C -1 ; WX 400 ; N gbreve ; B -108 -314 503 631 ; C -1 ; WX 660 ; N onequarter ; B 56 -16 702 610 ; C -1 ; WX 460 ; N Scaron ; B 45 -81 594 821 ; C -1 ; WX 460 ; N Scommaaccent ; B 45 -314 558 610 ; C -1 ; WX 600 ; N Ohungarumlaut ; B 94 -16 660 821 ; C -1 ; WX 400 ; N degree ; B 171 324 457 610 ; C -1 ; WX 400 ; N ograve ; B 87 -14 449 659 ; C -1 ; WX 520 ; N Ccaron ; B 93 -16 631 821 ; C -1 ; WX 460 ; N ugrave ; B 102 -14 528 659 ; C -1 ; WX 453 ; N radical ; B 2 -60 452 768 ; C -1 ; WX 700 ; N Dcaron ; B 86 -6 768 821 ; C -1 ; WX 300 ; N rcommaaccent ; B 32 -304 424 438 ; C -1 ; WX 700 ; N Ntilde ; B 85 -168 915 781 ; C -1 ; WX 400 ; N otilde ; B 87 -14 502 619 ; C -1 ; WX 600 ; N Rcommaaccent ; B 58 -304 805 640 ; C -1 ; WX 580 ; N Lcommaaccent ; B 53 -304 657 610 ; C -1 ; WX 620 ; N Atilde ; B 13 -16 702 781 ; C -1 ; WX 620 ; N Aogonek ; B 13 -191 697 632 ; C -1 ; WX 620 ; N Aring ; B 13 -16 697 831 ; C -1 ; WX 600 ; N Otilde ; B 94 -16 660 781 ; C -1 ; WX 440 ; N zdotaccent ; B 26 -14 508 610 ; C -1 ; WX 620 ; N Ecaron ; B 91 -12 709 821 ; C -1 ; WX 380 ; N Iogonek ; B 99 -191 504 594 ; C -1 ; WX 440 ; N kcommaaccent ; B 87 -304 628 714 ; C -1 ; WX 520 ; N minus ; B 117 184 543 242 ; C -1 ; WX 380 ; N Icircumflex ; B 99 0 504 821 ; C -1 ; WX 460 ; N ncaron ; B 101 -14 544 659 ; C -1 ; WX 320 ; N tcommaaccent ; B 72 -304 426 539 ; C -1 ; WX 520 ; N logicalnot ; B 117 86 543 340 ; C -1 ; WX 400 ; N odieresis ; B 87 -14 513 610 ; C -1 ; WX 460 ; N udieresis ; B 102 -14 528 610 ; C -1 ; WX 549 ; N notequal ; B 12 -29 537 541 ; C -1 ; WX 400 ; N gcommaaccent ; B -108 -314 506 714 ; C -1 ; WX 400 ; N eth ; B 87 -14 522 714 ; C -1 ; WX 440 ; N zcaron ; B 26 -14 514 659 ; C -1 ; WX 460 ; N ncommaaccent ; B 101 -304 544 438 ; C -1 ; WX 264 ; N onesuperior ; B 83 244 311 610 ; C -1 ; WX 240 ; N imacron ; B 100 -14 330 584 ; EndCharMetrics StartKernData StartKernPairs 1207 KPX A C 20 KPX A Cacute 20 KPX A Ccaron 20 KPX A Ccedilla 20 KPX A G -30 KPX A Gbreve -30 KPX A Gcommaaccent -30 KPX A O 10 KPX A Oacute 10 KPX A Ocircumflex 10 KPX A Odieresis 10 KPX A Ograve 10 KPX A Ohungarumlaut 10 KPX A Omacron 10 KPX A Oslash 10 KPX A Otilde 10 KPX A Q 10 KPX A T 10 KPX A Tcaron 10 KPX A Tcommaaccent 10 KPX A U -10 KPX A Uacute -10 KPX A Ucircumflex -10 KPX A Udieresis -10 KPX A Ugrave -10 KPX A Uhungarumlaut -10 KPX A Umacron -10 KPX A Uogonek -10 KPX A Uring -10 KPX A quotedblright -40 KPX A quoteright -40 KPX Aacute C 20 KPX Aacute Cacute 20 KPX Aacute Ccaron 20 KPX Aacute Ccedilla 20 KPX Aacute G -30 KPX Aacute Gbreve -30 KPX Aacute Gcommaaccent -30 KPX Aacute O 10 KPX Aacute Oacute 10 KPX Aacute Ocircumflex 10 KPX Aacute Odieresis 10 KPX Aacute Ograve 10 KPX Aacute Ohungarumlaut 10 KPX Aacute Omacron 10 KPX Aacute Oslash 10 KPX Aacute Otilde 10 KPX Aacute Q 10 KPX Aacute T 10 KPX Aacute Tcaron 10 KPX Aacute Tcommaaccent 10 KPX Aacute U -10 KPX Aacute Uacute -10 KPX Aacute Ucircumflex -10 KPX Aacute Udieresis -10 KPX Aacute Ugrave -10 KPX Aacute Uhungarumlaut -10 KPX Aacute Umacron -10 KPX Aacute Uogonek -10 KPX Aacute Uring -10 KPX Abreve C 20 KPX Abreve Cacute 20 KPX Abreve Ccaron 20 KPX Abreve Ccedilla 20 KPX Abreve G -30 KPX Abreve Gbreve -30 KPX Abreve Gcommaaccent -30 KPX Abreve O 10 KPX Abreve Oacute 10 KPX Abreve Ocircumflex 10 KPX Abreve Odieresis 10 KPX Abreve Ograve 10 KPX Abreve Ohungarumlaut 10 KPX Abreve Omacron 10 KPX Abreve Oslash 10 KPX Abreve Otilde 10 KPX Abreve Q 10 KPX Abreve T 10 KPX Abreve Tcaron 10 KPX Abreve Tcommaaccent 10 KPX Abreve U -10 KPX Abreve Uacute -10 KPX Abreve Ucircumflex -10 KPX Abreve Udieresis -10 KPX Abreve Ugrave -10 KPX Abreve Uhungarumlaut -10 KPX Abreve Umacron -10 KPX Abreve Uogonek -10 KPX Abreve Uring -10 KPX Acircumflex C 20 KPX Acircumflex Cacute 20 KPX Acircumflex Ccaron 20 KPX Acircumflex Ccedilla 20 KPX Acircumflex G -30 KPX Acircumflex Gbreve -30 KPX Acircumflex Gcommaaccent -30 KPX Acircumflex O 10 KPX Acircumflex Oacute 10 KPX Acircumflex Ocircumflex 10 KPX Acircumflex Odieresis 10 KPX Acircumflex Ograve 10 KPX Acircumflex Ohungarumlaut 10 KPX Acircumflex Omacron 10 KPX Acircumflex Oslash 10 KPX Acircumflex Otilde 10 KPX Acircumflex Q 10 KPX Acircumflex T 10 KPX Acircumflex Tcaron 10 KPX Acircumflex Tcommaaccent 10 KPX Acircumflex U -10 KPX Acircumflex Uacute -10 KPX Acircumflex Ucircumflex -10 KPX Acircumflex Udieresis -10 KPX Acircumflex Ugrave -10 KPX Acircumflex Uhungarumlaut -10 KPX Acircumflex Umacron -10 KPX Acircumflex Uogonek -10 KPX Acircumflex Uring -10 KPX Adieresis C 20 KPX Adieresis Cacute 20 KPX Adieresis Ccaron 20 KPX Adieresis Ccedilla 20 KPX Adieresis G -30 KPX Adieresis Gbreve -30 KPX Adieresis Gcommaaccent -30 KPX Adieresis O 10 KPX Adieresis Oacute 10 KPX Adieresis Ocircumflex 10 KPX Adieresis Odieresis 10 KPX Adieresis Ograve 10 KPX Adieresis Ohungarumlaut 10 KPX Adieresis Omacron 10 KPX Adieresis Oslash 10 KPX Adieresis Otilde 10 KPX Adieresis Q 10 KPX Adieresis T 10 KPX Adieresis Tcaron 10 KPX Adieresis Tcommaaccent 10 KPX Adieresis U -10 KPX Adieresis Uacute -10 KPX Adieresis Ucircumflex -10 KPX Adieresis Udieresis -10 KPX Adieresis Ugrave -10 KPX Adieresis Uhungarumlaut -10 KPX Adieresis Umacron -10 KPX Adieresis Uogonek -10 KPX Adieresis Uring -10 KPX Agrave C 20 KPX Agrave Cacute 20 KPX Agrave Ccaron 20 KPX Agrave Ccedilla 20 KPX Agrave G -30 KPX Agrave Gbreve -30 KPX Agrave Gcommaaccent -30 KPX Agrave O 10 KPX Agrave Oacute 10 KPX Agrave Ocircumflex 10 KPX Agrave Odieresis 10 KPX Agrave Ograve 10 KPX Agrave Ohungarumlaut 10 KPX Agrave Omacron 10 KPX Agrave Oslash 10 KPX Agrave Otilde 10 KPX Agrave Q 10 KPX Agrave T 10 KPX Agrave Tcaron 10 KPX Agrave Tcommaaccent 10 KPX Agrave U -10 KPX Agrave Uacute -10 KPX Agrave Ucircumflex -10 KPX Agrave Udieresis -10 KPX Agrave Ugrave -10 KPX Agrave Uhungarumlaut -10 KPX Agrave Umacron -10 KPX Agrave Uogonek -10 KPX Agrave Uring -10 KPX Amacron C 20 KPX Amacron Cacute 20 KPX Amacron Ccaron 20 KPX Amacron Ccedilla 20 KPX Amacron G -30 KPX Amacron Gbreve -30 KPX Amacron Gcommaaccent -30 KPX Amacron O 10 KPX Amacron Oacute 10 KPX Amacron Ocircumflex 10 KPX Amacron Odieresis 10 KPX Amacron Ograve 10 KPX Amacron Ohungarumlaut 10 KPX Amacron Omacron 10 KPX Amacron Oslash 10 KPX Amacron Otilde 10 KPX Amacron Q 10 KPX Amacron T 10 KPX Amacron Tcaron 10 KPX Amacron Tcommaaccent 10 KPX Amacron U -10 KPX Amacron Uacute -10 KPX Amacron Ucircumflex -10 KPX Amacron Udieresis -10 KPX Amacron Ugrave -10 KPX Amacron Uhungarumlaut -10 KPX Amacron Umacron -10 KPX Amacron Uogonek -10 KPX Amacron Uring -10 KPX Aogonek C 20 KPX Aogonek Cacute 20 KPX Aogonek Ccaron 20 KPX Aogonek Ccedilla 20 KPX Aogonek G -30 KPX Aogonek Gbreve -30 KPX Aogonek Gcommaaccent -30 KPX Aogonek O 10 KPX Aogonek Oacute 10 KPX Aogonek Ocircumflex 10 KPX Aogonek Odieresis 10 KPX Aogonek Ograve 10 KPX Aogonek Ohungarumlaut 10 KPX Aogonek Omacron 10 KPX Aogonek Oslash 10 KPX Aogonek Otilde 10 KPX Aogonek Q 10 KPX Aogonek T 10 KPX Aogonek Tcaron 10 KPX Aogonek Tcommaaccent 10 KPX Aogonek U -10 KPX Aogonek Uacute -10 KPX Aogonek Ucircumflex -10 KPX Aogonek Udieresis -10 KPX Aogonek Ugrave -10 KPX Aogonek Uhungarumlaut -10 KPX Aogonek Umacron -10 KPX Aogonek Uogonek -10 KPX Aogonek Uring -10 KPX Aogonek y -10 KPX Aogonek yacute -10 KPX Aogonek ydieresis -10 KPX Aring C 20 KPX Aring Cacute 20 KPX Aring Ccaron 20 KPX Aring Ccedilla 20 KPX Aring G -30 KPX Aring Gbreve -30 KPX Aring Gcommaaccent -30 KPX Aring O 10 KPX Aring Oacute 10 KPX Aring Ocircumflex 10 KPX Aring Odieresis 10 KPX Aring Ograve 10 KPX Aring Ohungarumlaut 10 KPX Aring Omacron 10 KPX Aring Oslash 10 KPX Aring Otilde 10 KPX Aring Q 10 KPX Aring T 10 KPX Aring Tcaron 10 KPX Aring Tcommaaccent 10 KPX Aring U -10 KPX Aring Uacute -10 KPX Aring Ucircumflex -10 KPX Aring Udieresis -10 KPX Aring Ugrave -10 KPX Aring Uhungarumlaut -10 KPX Aring Umacron -10 KPX Aring Uogonek -10 KPX Aring Uring -10 KPX Atilde C 20 KPX Atilde Cacute 20 KPX Atilde Ccaron 20 KPX Atilde Ccedilla 20 KPX Atilde G -30 KPX Atilde Gbreve -30 KPX Atilde Gcommaaccent -30 KPX Atilde O 10 KPX Atilde Oacute 10 KPX Atilde Ocircumflex 10 KPX Atilde Odieresis 10 KPX Atilde Ograve 10 KPX Atilde Ohungarumlaut 10 KPX Atilde Omacron 10 KPX Atilde Oslash 10 KPX Atilde Otilde 10 KPX Atilde Q 10 KPX Atilde T 10 KPX Atilde Tcaron 10 KPX Atilde Tcommaaccent 10 KPX Atilde U -10 KPX Atilde Uacute -10 KPX Atilde Ucircumflex -10 KPX Atilde Udieresis -10 KPX Atilde Ugrave -10 KPX Atilde Uhungarumlaut -10 KPX Atilde Umacron -10 KPX Atilde Uogonek -10 KPX Atilde Uring -10 KPX D A -10 KPX D Aacute -10 KPX D Abreve -10 KPX D Acircumflex -10 KPX D Adieresis -10 KPX D Agrave -10 KPX D Amacron -10 KPX D Aogonek -10 KPX D Aring -10 KPX D Atilde -10 KPX D Y 10 KPX D Yacute 10 KPX D Ydieresis 10 KPX D comma -20 KPX D period -30 KPX Dcaron A -10 KPX Dcaron Aacute -10 KPX Dcaron Abreve -10 KPX Dcaron Acircumflex -10 KPX Dcaron Adieresis -10 KPX Dcaron Agrave -10 KPX Dcaron Amacron -10 KPX Dcaron Aogonek -10 KPX Dcaron Aring -10 KPX Dcaron Atilde -10 KPX Dcaron Y 10 KPX Dcaron Yacute 10 KPX Dcaron Ydieresis 10 KPX Dcaron comma -20 KPX Dcaron period -30 KPX Dcroat A -10 KPX Dcroat Aacute -10 KPX Dcroat Abreve -10 KPX Dcroat Acircumflex -10 KPX Dcroat Adieresis -10 KPX Dcroat Agrave -10 KPX Dcroat Amacron -10 KPX Dcroat Aogonek -10 KPX Dcroat Aring -10 KPX Dcroat Atilde -10 KPX Dcroat Y 10 KPX Dcroat Yacute 10 KPX Dcroat Ydieresis 10 KPX Dcroat comma -20 KPX Dcroat period -30 KPX F comma -30 KPX F i 10 KPX F period -40 KPX G comma -10 KPX G period -20 KPX J comma -10 KPX J period -20 KPX K e -20 KPX K eacute -20 KPX K ecaron -20 KPX K ecircumflex -20 KPX K edieresis -20 KPX K edotaccent -20 KPX K egrave -20 KPX K emacron -20 KPX K eogonek -20 KPX K o -20 KPX K oacute -20 KPX K ocircumflex -20 KPX K odieresis -20 KPX K ograve -20 KPX K ohungarumlaut -20 KPX K omacron -20 KPX K otilde -20 KPX K u -20 KPX K uacute -20 KPX K ucircumflex -20 KPX K udieresis -20 KPX K ugrave -20 KPX K uhungarumlaut -20 KPX K umacron -20 KPX K uogonek -20 KPX K uring -20 KPX Kcommaaccent e -20 KPX Kcommaaccent eacute -20 KPX Kcommaaccent ecaron -20 KPX Kcommaaccent ecircumflex -20 KPX Kcommaaccent edieresis -20 KPX Kcommaaccent edotaccent -20 KPX Kcommaaccent egrave -20 KPX Kcommaaccent emacron -20 KPX Kcommaaccent eogonek -20 KPX Kcommaaccent o -20 KPX Kcommaaccent oacute -20 KPX Kcommaaccent ocircumflex -20 KPX Kcommaaccent odieresis -20 KPX Kcommaaccent ograve -20 KPX Kcommaaccent ohungarumlaut -20 KPX Kcommaaccent omacron -20 KPX Kcommaaccent otilde -20 KPX Kcommaaccent u -20 KPX Kcommaaccent uacute -20 KPX Kcommaaccent ucircumflex -20 KPX Kcommaaccent udieresis -20 KPX Kcommaaccent ugrave -20 KPX Kcommaaccent uhungarumlaut -20 KPX Kcommaaccent umacron -20 KPX Kcommaaccent uogonek -20 KPX Kcommaaccent uring -20 KPX L V -20 KPX L W -10 KPX L quotedblright -25 KPX L quoteright -25 KPX L y -10 KPX L yacute -10 KPX L ydieresis -10 KPX Lacute V -20 KPX Lacute W -10 KPX Lacute quotedblright -25 KPX Lacute quoteright -25 KPX Lacute y -10 KPX Lacute yacute -10 KPX Lacute ydieresis -10 KPX Lcommaaccent V -20 KPX Lcommaaccent W -10 KPX Lcommaaccent quotedblright -25 KPX Lcommaaccent quoteright -25 KPX Lcommaaccent y -10 KPX Lcommaaccent yacute -10 KPX Lcommaaccent ydieresis -10 KPX O A -20 KPX O Aacute -20 KPX O Abreve -20 KPX O Acircumflex -20 KPX O Adieresis -20 KPX O Agrave -20 KPX O Amacron -20 KPX O Aogonek -20 KPX O Aring -20 KPX O Atilde -20 KPX O T 20 KPX O Tcaron 20 KPX O Tcommaaccent 20 KPX O Y 10 KPX O Yacute 10 KPX O Ydieresis 10 KPX O comma -10 KPX O period -20 KPX Oacute A -20 KPX Oacute Aacute -20 KPX Oacute Abreve -20 KPX Oacute Acircumflex -20 KPX Oacute Adieresis -20 KPX Oacute Agrave -20 KPX Oacute Amacron -20 KPX Oacute Aogonek -20 KPX Oacute Aring -20 KPX Oacute Atilde -20 KPX Oacute T 20 KPX Oacute Tcaron 20 KPX Oacute Tcommaaccent 20 KPX Oacute Y 10 KPX Oacute Yacute 10 KPX Oacute Ydieresis 10 KPX Oacute comma -10 KPX Oacute period -20 KPX Ocircumflex A -20 KPX Ocircumflex Aacute -20 KPX Ocircumflex Abreve -20 KPX Ocircumflex Acircumflex -20 KPX Ocircumflex Adieresis -20 KPX Ocircumflex Agrave -20 KPX Ocircumflex Amacron -20 KPX Ocircumflex Aogonek -20 KPX Ocircumflex Aring -20 KPX Ocircumflex Atilde -20 KPX Ocircumflex T 20 KPX Ocircumflex Tcaron 20 KPX Ocircumflex Tcommaaccent 20 KPX Ocircumflex Y 10 KPX Ocircumflex Yacute 10 KPX Ocircumflex Ydieresis 10 KPX Ocircumflex comma -10 KPX Ocircumflex period -20 KPX Odieresis A -20 KPX Odieresis Aacute -20 KPX Odieresis Abreve -20 KPX Odieresis Acircumflex -20 KPX Odieresis Adieresis -20 KPX Odieresis Agrave -20 KPX Odieresis Amacron -20 KPX Odieresis Aogonek -20 KPX Odieresis Aring -20 KPX Odieresis Atilde -20 KPX Odieresis T 20 KPX Odieresis Tcaron 20 KPX Odieresis Tcommaaccent 20 KPX Odieresis Y 10 KPX Odieresis Yacute 10 KPX Odieresis Ydieresis 10 KPX Odieresis comma -10 KPX Odieresis period -20 KPX Ograve A -20 KPX Ograve Aacute -20 KPX Ograve Abreve -20 KPX Ograve Acircumflex -20 KPX Ograve Adieresis -20 KPX Ograve Agrave -20 KPX Ograve Amacron -20 KPX Ograve Aogonek -20 KPX Ograve Aring -20 KPX Ograve Atilde -20 KPX Ograve T 20 KPX Ograve Tcaron 20 KPX Ograve Tcommaaccent 20 KPX Ograve Y 10 KPX Ograve Yacute 10 KPX Ograve Ydieresis 10 KPX Ograve comma -10 KPX Ograve period -20 KPX Ohungarumlaut A -20 KPX Ohungarumlaut Aacute -20 KPX Ohungarumlaut Abreve -20 KPX Ohungarumlaut Acircumflex -20 KPX Ohungarumlaut Adieresis -20 KPX Ohungarumlaut Agrave -20 KPX Ohungarumlaut Amacron -20 KPX Ohungarumlaut Aogonek -20 KPX Ohungarumlaut Aring -20 KPX Ohungarumlaut Atilde -20 KPX Ohungarumlaut T 20 KPX Ohungarumlaut Tcaron 20 KPX Ohungarumlaut Tcommaaccent 20 KPX Ohungarumlaut Y 10 KPX Ohungarumlaut Yacute 10 KPX Ohungarumlaut Ydieresis 10 KPX Ohungarumlaut comma -10 KPX Ohungarumlaut period -20 KPX Omacron A -20 KPX Omacron Aacute -20 KPX Omacron Abreve -20 KPX Omacron Acircumflex -20 KPX Omacron Adieresis -20 KPX Omacron Agrave -20 KPX Omacron Amacron -20 KPX Omacron Aogonek -20 KPX Omacron Aring -20 KPX Omacron Atilde -20 KPX Omacron T 20 KPX Omacron Tcaron 20 KPX Omacron Tcommaaccent 20 KPX Omacron Y 10 KPX Omacron Yacute 10 KPX Omacron Ydieresis 10 KPX Omacron comma -10 KPX Omacron period -20 KPX Oslash A -20 KPX Oslash Aacute -20 KPX Oslash Abreve -20 KPX Oslash Acircumflex -20 KPX Oslash Adieresis -20 KPX Oslash Agrave -20 KPX Oslash Amacron -20 KPX Oslash Aogonek -20 KPX Oslash Aring -20 KPX Oslash Atilde -20 KPX Oslash T 20 KPX Oslash Tcaron 20 KPX Oslash Tcommaaccent 20 KPX Oslash Y 10 KPX Oslash Yacute 10 KPX Oslash Ydieresis 10 KPX Oslash comma -10 KPX Oslash period -20 KPX Otilde A -20 KPX Otilde Aacute -20 KPX Otilde Abreve -20 KPX Otilde Acircumflex -20 KPX Otilde Adieresis -20 KPX Otilde Agrave -20 KPX Otilde Amacron -20 KPX Otilde Aogonek -20 KPX Otilde Aring -20 KPX Otilde Atilde -20 KPX Otilde T 20 KPX Otilde Tcaron 20 KPX Otilde Tcommaaccent 20 KPX Otilde Y 10 KPX Otilde Yacute 10 KPX Otilde Ydieresis 10 KPX Otilde comma -10 KPX Otilde period -20 KPX P A -10 KPX P Aacute -10 KPX P Abreve -10 KPX P Acircumflex -10 KPX P Adieresis -10 KPX P Agrave -10 KPX P Amacron -10 KPX P Aogonek -10 KPX P Aring -10 KPX P Atilde -10 KPX P a -20 KPX P aacute -20 KPX P abreve -20 KPX P acircumflex -20 KPX P adieresis -20 KPX P agrave -20 KPX P amacron -20 KPX P aogonek -20 KPX P aring -20 KPX P atilde -20 KPX P comma -40 KPX P e -10 KPX P eacute -10 KPX P ecaron -10 KPX P ecircumflex -10 KPX P edieresis -10 KPX P edotaccent -10 KPX P egrave -10 KPX P emacron -10 KPX P eogonek -10 KPX P o -10 KPX P oacute -10 KPX P ocircumflex -10 KPX P odieresis -10 KPX P ograve -10 KPX P ohungarumlaut -10 KPX P omacron -10 KPX P otilde -10 KPX P period -50 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R T 20 KPX R Tcaron 20 KPX R Tcommaaccent 20 KPX R W 10 KPX R Y 10 KPX R Yacute 10 KPX R Ydieresis 10 KPX Racute T 20 KPX Racute Tcaron 20 KPX Racute Tcommaaccent 20 KPX Racute W 10 KPX Racute Y 10 KPX Racute Yacute 10 KPX Racute Ydieresis 10 KPX Rcaron T 20 KPX Rcaron Tcaron 20 KPX Rcaron Tcommaaccent 20 KPX Rcaron W 10 KPX Rcaron Y 10 KPX Rcaron Yacute 10 KPX Rcaron Ydieresis 10 KPX Rcommaaccent T 20 KPX Rcommaaccent Tcaron 20 KPX Rcommaaccent Tcommaaccent 20 KPX Rcommaaccent W 10 KPX Rcommaaccent Y 10 KPX Rcommaaccent Yacute 10 KPX Rcommaaccent Ydieresis 10 KPX T A 10 KPX T Aacute 10 KPX T Abreve 10 KPX T Acircumflex 10 KPX T Adieresis 10 KPX T Agrave 10 KPX T Amacron 10 KPX T Aogonek 10 KPX T Aring 10 KPX T Atilde 10 KPX T O 30 KPX T Oacute 30 KPX T Ocircumflex 30 KPX T Odieresis 30 KPX T Ograve 30 KPX T Ohungarumlaut 30 KPX T Omacron 30 KPX T Oslash 30 KPX T Otilde 30 KPX T a -20 KPX T aacute -20 KPX T acircumflex -20 KPX T agrave -20 KPX T amacron -20 KPX T aogonek -20 KPX T aring -20 KPX T e -20 KPX T eacute -20 KPX T eogonek -20 KPX T h 20 KPX T hyphen -20 KPX T i 20 KPX T o -20 KPX T oacute -20 KPX T ocircumflex -20 KPX T ohungarumlaut -20 KPX T omacron -20 KPX Tcaron A 10 KPX Tcaron Aacute 10 KPX Tcaron Abreve 10 KPX Tcaron Acircumflex 10 KPX Tcaron Adieresis 10 KPX Tcaron Agrave 10 KPX Tcaron Amacron 10 KPX Tcaron Aogonek 10 KPX Tcaron Aring 10 KPX Tcaron Atilde 10 KPX Tcaron O 30 KPX Tcaron Oacute 30 KPX Tcaron Ocircumflex 30 KPX Tcaron Odieresis 30 KPX Tcaron Ograve 30 KPX Tcaron Ohungarumlaut 30 KPX Tcaron Omacron 30 KPX Tcaron Oslash 30 KPX Tcaron Otilde 30 KPX Tcaron a -20 KPX Tcaron aacute -20 KPX Tcaron acircumflex -20 KPX Tcaron agrave -20 KPX Tcaron amacron -20 KPX Tcaron aogonek -20 KPX Tcaron aring -20 KPX Tcaron e -20 KPX Tcaron eacute -20 KPX Tcaron eogonek -20 KPX Tcaron hyphen -20 KPX Tcaron o -20 KPX Tcaron oacute -20 KPX Tcaron ocircumflex -20 KPX Tcaron ohungarumlaut -20 KPX Tcaron omacron -20 KPX Tcommaaccent A 10 KPX Tcommaaccent Aacute 10 KPX Tcommaaccent Abreve 10 KPX Tcommaaccent Acircumflex 10 KPX Tcommaaccent Adieresis 10 KPX Tcommaaccent Agrave 10 KPX Tcommaaccent Amacron 10 KPX Tcommaaccent Aogonek 10 KPX Tcommaaccent Aring 10 KPX Tcommaaccent Atilde 10 KPX Tcommaaccent O 30 KPX Tcommaaccent Oacute 30 KPX Tcommaaccent Ocircumflex 30 KPX Tcommaaccent Odieresis 30 KPX Tcommaaccent Ograve 30 KPX Tcommaaccent Ohungarumlaut 30 KPX Tcommaaccent Omacron 30 KPX Tcommaaccent Oslash 30 KPX Tcommaaccent Otilde 30 KPX Tcommaaccent a -20 KPX Tcommaaccent aacute -20 KPX Tcommaaccent acircumflex -20 KPX Tcommaaccent agrave -20 KPX Tcommaaccent amacron -20 KPX Tcommaaccent aogonek -20 KPX Tcommaaccent aring -20 KPX Tcommaaccent e -20 KPX Tcommaaccent eacute -20 KPX Tcommaaccent eogonek -20 KPX Tcommaaccent hyphen -20 KPX Tcommaaccent o -20 KPX Tcommaaccent oacute -20 KPX Tcommaaccent ocircumflex -20 KPX Tcommaaccent ohungarumlaut -20 KPX Tcommaaccent omacron -20 KPX V G -20 KPX V Gbreve -20 KPX V Gcommaaccent -20 KPX V O 10 KPX V Oacute 10 KPX V Ocircumflex 10 KPX V Odieresis 10 KPX V Ograve 10 KPX V Ohungarumlaut 10 KPX V Omacron 10 KPX V Oslash 10 KPX V Otilde 10 KPX V a -20 KPX V aacute -20 KPX V abreve -20 KPX V acircumflex -20 KPX V adieresis -20 KPX V agrave -20 KPX V amacron -20 KPX V aogonek -20 KPX V aring -20 KPX V atilde -20 KPX V comma -90 KPX V e -20 KPX V eacute -20 KPX V ecaron -20 KPX V ecircumflex -20 KPX V edieresis -20 KPX V edotaccent -20 KPX V egrave -20 KPX V emacron -20 KPX V eogonek -20 KPX V o -20 KPX V oacute -20 KPX V ocircumflex -20 KPX V odieresis -20 KPX V ograve -20 KPX V ohungarumlaut -20 KPX V omacron -20 KPX V otilde -20 KPX V period -100 KPX W O 10 KPX W Oacute 10 KPX W Ocircumflex 10 KPX W Odieresis 10 KPX W Ograve 10 KPX W Ohungarumlaut 10 KPX W Omacron 10 KPX W Oslash 10 KPX W Otilde 10 KPX W a -20 KPX W aacute -20 KPX W abreve -20 KPX W acircumflex -20 KPX W adieresis -20 KPX W agrave -20 KPX W amacron -20 KPX W aogonek -20 KPX W aring -20 KPX W atilde -20 KPX W comma -40 KPX W e -20 KPX W eacute -20 KPX W ecaron -20 KPX W ecircumflex -20 KPX W edieresis -20 KPX W edotaccent -20 KPX W egrave -20 KPX W emacron -20 KPX W eogonek -20 KPX W h 10 KPX W i 10 KPX W o -20 KPX W oacute -20 KPX W ocircumflex -20 KPX W odieresis -20 KPX W ograve -20 KPX W ohungarumlaut -20 KPX W omacron -20 KPX W otilde -20 KPX W period -50 KPX Y a -60 KPX Y aacute -60 KPX Y abreve -60 KPX Y acircumflex -20 KPX Y adieresis -20 KPX Y agrave -20 KPX Y amacron -20 KPX Y aogonek -60 KPX Y aring -60 KPX Y atilde -20 KPX Y comma -40 KPX Y e -40 KPX Y eacute -40 KPX Y ecaron -40 KPX Y edotaccent -40 KPX Y eogonek -40 KPX Y i 10 KPX Y iacute 10 KPX Y icircumflex 30 KPX Y idieresis 30 KPX Y igrave 30 KPX Y imacron 30 KPX Y iogonek 10 KPX Y o -50 KPX Y oacute -20 KPX Y ocircumflex -20 KPX Y odieresis -20 KPX Y ograve -20 KPX Y ohungarumlaut -20 KPX Y omacron -20 KPX Y otilde -20 KPX Y period -50 KPX Y u -20 KPX Y uacute -20 KPX Y ucircumflex -20 KPX Y udieresis -20 KPX Y ugrave -20 KPX Y uhungarumlaut -20 KPX Y umacron -20 KPX Y uogonek -20 KPX Y uring -20 KPX Yacute a -60 KPX Yacute aacute -60 KPX Yacute abreve -60 KPX Yacute acircumflex -60 KPX Yacute adieresis -20 KPX Yacute agrave -20 KPX Yacute amacron -20 KPX Yacute aogonek -60 KPX Yacute aring -60 KPX Yacute atilde -20 KPX Yacute comma -40 KPX Yacute e -40 KPX Yacute eacute -40 KPX Yacute ecaron -40 KPX Yacute ecircumflex -40 KPX Yacute edotaccent -40 KPX Yacute eogonek -40 KPX Yacute i 10 KPX Yacute iacute 10 KPX Yacute icircumflex 10 KPX Yacute idieresis 30 KPX Yacute igrave 30 KPX Yacute imacron 30 KPX Yacute iogonek 10 KPX Yacute o -50 KPX Yacute oacute -50 KPX Yacute ocircumflex -20 KPX Yacute odieresis -20 KPX Yacute ograve -20 KPX Yacute ohungarumlaut -50 KPX Yacute omacron -20 KPX Yacute otilde -20 KPX Yacute period -50 KPX Yacute u -20 KPX Yacute uacute -20 KPX Yacute ucircumflex -20 KPX Yacute udieresis -20 KPX Yacute ugrave -20 KPX Yacute uhungarumlaut -20 KPX Yacute umacron -20 KPX Yacute uogonek -20 KPX Yacute uring -20 KPX Ydieresis a -60 KPX Ydieresis aacute -60 KPX Ydieresis abreve -60 KPX Ydieresis acircumflex -20 KPX Ydieresis adieresis -20 KPX Ydieresis agrave -20 KPX Ydieresis amacron -20 KPX Ydieresis aogonek -60 KPX Ydieresis aring -60 KPX Ydieresis atilde -20 KPX Ydieresis comma -40 KPX Ydieresis e -40 KPX Ydieresis eacute -40 KPX Ydieresis ecaron -40 KPX Ydieresis ecircumflex -40 KPX Ydieresis edotaccent -40 KPX Ydieresis eogonek -40 KPX Ydieresis i 10 KPX Ydieresis iacute 10 KPX Ydieresis icircumflex 30 KPX Ydieresis idieresis 30 KPX Ydieresis igrave 30 KPX Ydieresis imacron 30 KPX Ydieresis iogonek 10 KPX Ydieresis o -50 KPX Ydieresis oacute -50 KPX Ydieresis ocircumflex -50 KPX Ydieresis odieresis -20 KPX Ydieresis ograve -20 KPX Ydieresis ohungarumlaut -50 KPX Ydieresis omacron -20 KPX Ydieresis otilde -20 KPX Ydieresis period -50 KPX Ydieresis u -20 KPX Ydieresis uacute -20 KPX Ydieresis ucircumflex -20 KPX Ydieresis udieresis -20 KPX Ydieresis ugrave -20 KPX Ydieresis uhungarumlaut -20 KPX Ydieresis umacron -20 KPX Ydieresis uogonek -20 KPX Ydieresis uring -20 KPX b b -20 KPX b comma -20 KPX b l -20 KPX b lacute -20 KPX b lcommaaccent -20 KPX b period -30 KPX c k -10 KPX c kcommaaccent -10 KPX cacute k -10 KPX cacute kcommaaccent -10 KPX ccaron k -10 KPX ccaron kcommaaccent -10 KPX ccedilla k -10 KPX ccedilla kcommaaccent -10 KPX comma quotedblright -70 KPX comma quoteright -70 KPX d d -40 KPX d v -10 KPX d w -20 KPX e y 10 KPX e yacute 10 KPX e ydieresis 10 KPX eacute y 10 KPX eacute yacute 10 KPX eacute ydieresis 10 KPX ecaron y 10 KPX ecaron yacute 10 KPX ecaron ydieresis 10 KPX ecircumflex y 10 KPX ecircumflex yacute 10 KPX ecircumflex ydieresis 10 KPX edieresis y 10 KPX edieresis yacute 10 KPX edieresis ydieresis 10 KPX edotaccent y 10 KPX edotaccent yacute 10 KPX edotaccent ydieresis 10 KPX egrave y 10 KPX egrave yacute 10 KPX egrave ydieresis 10 KPX emacron y 10 KPX emacron yacute 10 KPX emacron ydieresis 10 KPX eogonek y 10 KPX eogonek yacute 10 KPX eogonek ydieresis 10 KPX f a -20 KPX f aacute -20 KPX f abreve -20 KPX f acircumflex -20 KPX f adieresis -20 KPX f agrave -20 KPX f amacron -20 KPX f aogonek -20 KPX f aring -20 KPX f atilde -20 KPX f comma -40 KPX f e -10 KPX f eacute -10 KPX f ecaron -10 KPX f ecircumflex -10 KPX f edieresis -10 KPX f edotaccent -10 KPX f egrave -10 KPX f emacron -10 KPX f eogonek -10 KPX f f -50 KPX f period -50 KPX f quotedblright 30 KPX f quoteright 30 KPX g a 10 KPX g comma -20 KPX g e 10 KPX g i 10 KPX g period -30 KPX g y 10 KPX k e -20 KPX k eacute -20 KPX k ecaron -20 KPX k ecircumflex -20 KPX k edieresis -20 KPX k edotaccent -20 KPX k egrave -20 KPX k emacron -20 KPX k eogonek -20 KPX k o -10 KPX k oacute -10 KPX k ocircumflex -10 KPX k odieresis -10 KPX k ograve -10 KPX k ohungarumlaut -10 KPX k omacron -10 KPX k otilde -10 KPX k y 10 KPX kcommaaccent e -20 KPX kcommaaccent eacute -20 KPX kcommaaccent ecaron -20 KPX kcommaaccent ecircumflex -20 KPX kcommaaccent edieresis -20 KPX kcommaaccent edotaccent -20 KPX kcommaaccent egrave -20 KPX kcommaaccent emacron -20 KPX kcommaaccent eogonek -20 KPX kcommaaccent o -10 KPX kcommaaccent oacute -10 KPX kcommaaccent ocircumflex -10 KPX kcommaaccent odieresis -10 KPX kcommaaccent ograve -10 KPX kcommaaccent ohungarumlaut -10 KPX kcommaaccent omacron -10 KPX kcommaaccent otilde -10 KPX m u 10 KPX m uacute 10 KPX m ucircumflex 10 KPX m udieresis 10 KPX m ugrave 10 KPX m uhungarumlaut 10 KPX m umacron 10 KPX m uogonek 10 KPX m uring 10 KPX m y 10 KPX m yacute 10 KPX m ydieresis 10 KPX n y 20 KPX n yacute 20 KPX n ydieresis 20 KPX nacute y 20 KPX nacute yacute 20 KPX nacute ydieresis 20 KPX ncaron y 20 KPX ncaron yacute 20 KPX ncaron ydieresis 20 KPX ncommaaccent y 20 KPX ncommaaccent yacute 20 KPX ncommaaccent ydieresis 20 KPX ntilde y 20 KPX ntilde yacute 20 KPX ntilde ydieresis 20 KPX o comma -20 KPX o period -30 KPX oacute comma -20 KPX oacute period -30 KPX ocircumflex comma -20 KPX ocircumflex period -30 KPX odieresis comma -20 KPX odieresis period -30 KPX ograve comma -20 KPX ograve period -30 KPX ohungarumlaut comma -20 KPX ohungarumlaut period -30 KPX omacron comma -20 KPX omacron period -30 KPX otilde comma -20 KPX otilde period -30 KPX p comma -20 KPX p p -10 KPX p period -30 KPX period quotedblright -80 KPX period quoteright -80 KPX quotedblleft A 10 KPX quotedblleft quoteleft 20 KPX quoteleft A 10 KPX quoteleft quoteleft -115 KPX quoteright l 20 KPX quoteright quotedblright 20 KPX quoteright quoteright -115 KPX quoteright r 30 KPX quoteright racute 30 KPX quoteright rcaron 30 KPX quoteright rcommaaccent 30 KPX quoteright s -25 KPX quoteright sacute -25 KPX quoteright scaron -25 KPX quoteright scedilla -25 KPX quoteright scommaaccent -25 KPX quoteright t 20 KPX quoteright v 30 KPX r comma -40 KPX r i 10 KPX r iacute 10 KPX r icircumflex 10 KPX r idieresis 10 KPX r igrave 10 KPX r imacron 10 KPX r iogonek 10 KPX r period -50 KPX racute comma -40 KPX racute i 10 KPX racute iacute 10 KPX racute icircumflex 10 KPX racute idieresis 10 KPX racute igrave 10 KPX racute imacron 10 KPX racute iogonek 10 KPX racute period -50 KPX rcaron comma -40 KPX rcaron i 10 KPX rcaron iacute 10 KPX rcaron icircumflex 10 KPX rcaron idieresis 10 KPX rcaron igrave 10 KPX rcaron imacron 10 KPX rcaron iogonek 10 KPX rcaron period -50 KPX rcommaaccent comma -40 KPX rcommaaccent i 10 KPX rcommaaccent iacute 10 KPX rcommaaccent icircumflex 10 KPX rcommaaccent idieresis 10 KPX rcommaaccent igrave 10 KPX rcommaaccent imacron 10 KPX rcommaaccent iogonek 10 KPX rcommaaccent period -50 KPX s comma -10 KPX s period -20 KPX sacute comma -10 KPX sacute period -20 KPX scaron comma -10 KPX scaron period -20 KPX scedilla comma -10 KPX scedilla period -20 KPX scommaaccent comma -10 KPX scommaaccent period -20 KPX v comma -20 KPX v period -30 KPX w comma -20 KPX w h 20 KPX w o 10 KPX w oacute 10 KPX w ocircumflex 10 KPX w odieresis 10 KPX w ograve 10 KPX w ohungarumlaut 10 KPX w omacron 10 KPX w otilde 10 KPX w period -30 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/PMW-Music.afm0000644000222100022210000002014514541067540015106 0ustar ph10ph10StartFontMetrics 2.0 FontName PMW-Music FullName PMW-Music FamilyName PMW-Music Weight Medium ItalicAngle 0 IsFixedPitch false FontBBox -150 -1400 50000 2300 UnderlinePosition -98 UnderlineThickness 54 Version 60 EncodingScheme FontSpecific StartCharMetrics 162 C 32 ; WX 750 ; N sp ; B 0 0 0 0 ; C 33 ; WX 1500 ; N trebleclef ; B 130 -610 1180 2300 ; C 34 ; WX 1500 ; N bassclef ; B 200 100 1400 1600 ; C 35 ; WX 1500 ; N altoclef ; B 200 0 1400 1600 ; C 36 ; WX 1000 ; N star ; B 0 0 750 750 ; C 37 ; WX 600 ; N sharp ; B 0 -430 441 830 ; C 38 ; WX 600 ; N doublesharp ; B 0 -25 475 425 ; C 39 ; WX 500 ; N flat ; B 10 -66 355 892 ; C 40 ; WX 450 ; N natural ; B 0 -430 320 830 ; C 41 ; WX 0 ; N tfermata ; B -150 -100 850 500 ; C 42 ; WX 660 ; N brest ; B 0 0 400 400 ; C 43 ; WX 660 ; N sbrest ; B 0 200 480 400 ; C 44 ; WX 660 ; N mrest ; B 0 0 480 200 ; C 45 ; WX 660 ; N crest ; B -24 -149 475 1400 ; C 46 ; WX 590 ; N qrest ; B 0 0 400 750 ; C 47 ; WX 0 ; N bfermata ; B -150 0 850 600 ; C 48 ; WX 3500 ; N longrest ; B 0 -200 3000 600 ; C 49 ; WX 1340 ; N breve ; B 0 -115 1180 515 ; C 50 ; WX 840 ; N semibreve ; B 10 -20 650 420 ; C 51 ; WX 840 ; N uminim ; B 50 -30 650 1600 ; C 52 ; WX 840 ; N dminim ; B 50 -1200 650 420 ; C 53 ; WX 840 ; N ucrotchet ; B 50 -20 650 1600 ; C 54 ; WX 840 ; N dcrotchet ; B 50 -1200 650 420 ; C 55 ; WX 1200 ; N uquaver ; B 60 -20 1050 1580 ; C 56 ; WX 840 ; N dquaver ; B 60 -1200 650 420 ; C 57 ; WX 1200 ; N usquaver ; B 50 -20 1100 1650 ; C 58 ; WX 840 ; N dsquaver ; B 50 -1200 650 420 ; C 59 ; WX 0 ; N usqtail ; B 600 700 1100 1650 ; C 60 ; WX 0 ; N dsqtail ; B 50 -1200 550 -400 ; C 61 ; WX 0 ; N ledger ; B -70 180 770 220 ; C 62 ; WX 0 ; N vdot ; B 285 535 415 665 ; C 63 ; WX 400 ; N hdot ; B 0 135 130 265 ; C 64 ; WX 600 ; N barsingle ; B 0 -20 40 1620 ; C 65 ; WX 760 ; N bardouble ; B 0 -20 200 1620 ; C 66 ; WX 760 ; N barthick ; B 0 -20 200 1620 ; C 67 ; WX 1000 ; N stave1 ; B 0 -20 1000 1620 ; C 68 ; WX 1000 ; N pstave1 ; B 0 780 1000 820 ; C 69 ; WX 0 ; N uqtail ; B 550 300 1050 1650 ; C 70 ; WX 10000 ; N stave10 ; B 0 -20 10000 1620 ; C 71 ; WX 10000 ; N pstave10 ; B 0 780 10000 820 ; C 72 ; WX 0 ; N dqtail ; B 60 -1200 550 100 ; C 73 ; WX 600 ; N repeatdots ; B 0 135 130 665 ; C 74 ; WX 0 ; N ustem ; B 75 -1200 115 150 ; C 75 ; WX 0 ; N dstem ; B 590 250 630 1600 ; C 76 ; WX 840 ; N cnh ; B 75 -20 630 400 ; C 77 ; WX 840 ; N mnh ; B 75 -20 630 400 ; C 78 ; WX 600 ; N comma ; B 0 -300 300 300 ; C 79 ; WX 0 ; N mordent ; B 0 -200 750 600 ; C 80 ; WX 0 ; N dmordent ; B 0 -200 1025 600 ; C 81 ; WX 0 ; N imordent ; B 0 0 750 400 ; C 82 ; WX 0 ; N dimordent ; B 0 0 1025 400 ; C 83 ; WX 0 ; N turn ; B -50 -50 850 450 ; C 84 ; WX 0 ; N hbar ; B 100 580 700 620 ; C 85 ; WX 0 ; N accent1 ; B 0 460 640 740 ; C 86 ; WX 1000 ; N caesura ; B 0 0 600 800 ; C 87 ; WX 0 ; N accent2 ; B 110 0 650 700 ; C 88 ; WX 0 ; N accent3 ; B 110 0 650 700 ; C 89 ; WX 0 ; N accent4 ; B 250 0 450 400 ; C 90 ; WX 0 ; N accent5 ; B 250 0 450 400 ; C 91 ; WX 600 ; N bardotted ; B 0 0 40 1600 ; C 92 ; WX 1000 ; N caesura1 ; B 0 0 600 800 ; C 93 ; WX 0 ; N little8 ; B 0 0 360 600 ; C 94 ; WX 1000 ; N C ; B 0 0 750 800 ; C 95 ; WX 1000 ; N cut ; B 0 -200 750 1000 ; C 96 ; WX 400 ; N tilde ; B 100 150 600 450 ; C 97 ; WX 0 ; N thumba ; B 0 -100 550 500 ; C 98 ; WX 0 ; N thumbb ; B 0 -100 550 500 ; C 99 ; WX 1500 ; N ds1 ; B 0 -175 1200 1375 ; C 100 ; WX 1500 ; N ds2 ; B 15 0 993 990 ; C 101 ; WX 0 ; N downa ; B 100 25 800 450 ; C 102 ; WX 0 ; N downb ; B 100 -50 800 375 ; C 103 ; WX 0 ; N upa ; B 180 25 600 600 ; C 104 ; WX 0 ; N upb ; B 180 -200 600 375 ; C 105 ; WX 0 ; N iturn ; B -50 -50 850 450 ; C 106 ; WX 550 ; N seven ; B 0 -200 500 650 ; C 107 ; WX 760 ; N four ; B 0 0 684 700 ; C 108 ; WX 840 ; N hcnh ; B 75 0 620 400 ; C 109 ; WX 840 ; N hmnh ; B 75 -70 620 460 ; C 110 ; WX 840 ; N xnh ; B 90 0 610 400 ; C 111 ; WX 0 ; N xustem ; B 590 380 630 1600 ; C 112 ; WX 0 ; N xdstem ; B 75 -1200 115 20 ; C 113 ; WX 0 ; N fustem ; B 590 200 630 400 ; C 114 ; WX 0 ; N fdstem ; B 75 0 115 200 ; C 115 ; WX 500 ; N six ; B 30 -20 560 850 ; C 116 ; WX 550 ; N gdot ; B 396 296 604 504 ; C 117 ; WX 550 ; N gring ; B 380 280 620 720 ; C 118 ; WX 0 ; WY -100 ; N d1 ; B 0 0 0 0 ; C 119 ; WX 0 ; WY -400 ; N d4 ; B 0 0 0 0 ; C 120 ; WX 0 ; WY 400 ; N u4 ; B 0 0 0 0 ; C 121 ; WX -100 ; N l1 ; B 0 0 0 0 ; C 122 ; WX 100 ; N r1 ; B 0 0 0 0 ; C 123 ; WX -330 ; N bs ; B 0 0 0 0 ; C 124 ; WX 0 ; WY -200 ; N ds ; B 0 0 0 0 ; C 125 ; WX 550 ; N fs ; B 0 0 0 0 ; C 126 ; WX 0 ; WY 200 ; N us ; B 0 0 0 0 ; C 128 ; WX 600 ; N tick ; B 0 200 400 800 ; C 129 ; WX 0 ; N uacc ; B 300 720 1050 1250 ; C 130 ; WX 0 ; N dacc ; B -150 -370 440 -1050 ; C 131 ; WX 0 ; N grid ; B 490 0 3260 1935 ; C 132 ; WX 600 ; N barshort ; B 0 0 80 530 ; C 133 ; WX 0 ; N breath ; B 375 -90 975 1200 ; C 134 ; WX 0 ; N vring ; B 120 80 480 340 ; C 135 ; WX 0 ; N cross ; B 100 -30 600 470 ; C 136 ; WX 800 ; N trill ; B -32 0 761 680 ; C 137 ; WX 600 ; N scaesura ; B 0 -200 40 200 ; C 138 ; WX 600 ; N lcaesura ; B 0 0 40 1200 ; C 139 ; WX 350 ; N sbra ; B 0 -350 250 750 ; C 140 ; WX 350 ; N sket ; B -50 -350 200 750 ; C 141 ; WX 350 ; N rbra ; B 0 -350 250 750 ; C 142 ; WX 350 ; N rket ; B -80 -350 170 750 ; C 143 ; WX 500 ; N rep ; B 0 0 800 800 ; C 144 ; WX 0 ; N repdots ; B -50 0 850 800 ; C 145 ; WX 0 ; WY 400 ; N vtilde ; B -450 0 -150 500 ; C 146 ; WX 0 ; WY 400 ; N trem ; B 100 -175 600 175 ; C 147 ; WX 1000 ; N circ ; B 200 -20 1040 820 ; C 148 ; WX 1000 ; N cutcirc ; B 200 -200 1040 1400 ; C 149 ; WX 0 ; N slur1 ; B 300 -650 1200 -245 ; C 150 ; WX 0 ; N slur2 ; B 300 -650 1600 -245 ; C 151 ; WX 0 ; N up ; B 0 0 540 613 ; C 152 ; WX 0 ; N down ; B 0 -613 540 0 ; C 153 ; WX 1000 ; N iC ; B 0 0 750 800 ; C 154 ; WX 1000 ; N icut ; B 0 -200 750 1000 ; C 155 ; WX 1580 ; N unibreve ; B 10 -115 1390 515 ; C 156 ; WX 0 ; N accent6 ; B 340 0 360 400 ; C 157 ; WX 350 ; N srbra ; B 69 0 266 642 ; C 158 ; WX 350 ; N srket ; B -84 0 97 642 ; C 159 ; WX 330 ; N angle1 ; B 44 42 290 258 ; C 160 ; WX 330 ; N angle2 ; B 44 42 290 258 ; C 161 ; WX 330 ; N angle3 ; B 44 194 290 410 ; C 162 ; WX 330 ; N angle4 ; B 44 194 290 410 ; C 163 ; WX 1400 ; N ped ; B -1 0 1327 747 ; C 164 ; WX 0 ; WY 400 ; N uvtilde ; B -576 12 -76 595 ; C 165 ; WX 0 ; WY 400 ; N dvtilde ; B -533 -139 -33 444 ; C 166 ; WX 0 ; N nail ; B -22 447 615 754 ; C 167 ; WX 333 ; N angle5 ; B 44 -406 286 258 ; C 168 ; WX 333 ; N angle6 ; B 44 194 286 858 ; C 169 ; WX 1000 ; N stave21 ; B 0 380 1000 1220 ; C 170 ; WX 1000 ; N stave31 ; B 0 -20 1000 1620 ; C 171 ; WX 1000 ; N stave41 ; B 0 -20 1000 1220 ; C 172 ; WX 1000 ; N stave61 ; B 0 -20 1000 2020 ; C 173 ; WX 1500 ; N hclef ; B 500 400 1100 1200 ; C 174 ; WX 1500 ; N oldbassclef ; B -151 400 1294 1601 ; C 175 ; WX 1500 ; N oldaltoclef ; B 201 0 1153 1600 ; C 176 ; WX 0 ; N bratop ; B 0 0 400 2000 ; C 177 ; WX 0 ; N brabot ; B 0 -400 400 1600 ; C 178 ; WX 1000 ; N direct ; B 0 -10 993 713 ; C 179 ; WX 550 ; N five ; B 30 -20 540 750 ; C 180 ; WX 750 ; N major ; B 0 0 700 650 ; C 181 ; WX 675 ; N dimsh ; B 25 0 620 600 ; C 182 ; WX 675 ; N hdimsh ; B 25 -20 680 620 ; C 183 ; WX 550 ; N gcross ; B 400 270 600 530 ; C 184 ; WX 0 ; N ledger2 ; B -70 170 770 230 ; C 185 ; WX -420 ; WY 400 ; N srm1 ; B 0 0 0 0 ; C 186 ; WX -760 ; WY -400 ; N srm2 ; B 0 0 0 0 ; C 187 ; WX 0 ; WY 1200 ; N u12 ; B 0 0 0 0 ; C 188 ; WX 0 ; WY -1200 ; N d12 ; B 0 0 0 0 ; C 189 ; WX 424 ; N halfsharp1 ; B 59 -414 304 804 ; C 190 ; WX 600 ; N halfsharp2 ; B -8 -430 438 827 ; C 191 ; WX 500 ; N halfflat2 ; B -1 -66 344 892 ; C 192 ; WX 500 ; N halfflat1 ; B -139 -66 355 892 ; C 193 ; WX 600 ; N icomma ; B 0 0 300 600 ; C 194 ; WX 0 ; N accent7 ; B 280 -16 420 420 ; C 195 ; WX 0 ; N accent8 ; B 280 -16 420 420 ; C 196 ; WX 0 ; N rturn ; B -50 -50 850 450 ; C 197 ; WX 0 ; N irturn ; B -50 -50 850 450 ; C 198 ; WX 0 ; N thcirc ; B 200 -20 1040 400 ; C 199 ; WX 0 ; N bhcirc ; B 200 0 1040 420 ; C 200 ; WX 840 ; N rcnh ; B 200 0 600 400 ; C 201 ; WX 840 ; N rmnh ; B 150 0 550 400 ; C 247 ; WX 10000 ; N stave210 ; B 0 380 10000 1220 ; C 248 ; WX 10000 ; N stave310 ; B 0 -20 10000 1620 ; C 249 ; WX 10000 ; N stave410 ; B 0 -20 10000 1220 ; C 250 ; WX 10000 ; N stave610 ; B 0 -20 10000 2020 ; EndCharMetrics EndFontMetrics pmw-5.22/fontmetrics/Courier-Bold.afm0000644000222100022210000004226714541067540015664 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:28:00 1997 Comment PH added entry for Euro character, copied from a different version, 19 July 2009. Comment PH added additional characters (after Euro) 18 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43048 Comment VMusage 41139 52164 FontName Courier-Bold FullName Courier Bold FamilyName Courier Weight Bold ItalicAngle 0 IsFixedPitch true FontBBox -113 -250 749 801 UnderlinePosition -100 UnderlineThickness 50 Version 003.000 Notice Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 562 XHeight 439 Ascender 629 Descender -157 StdHW 84 StdVW 106 StartCharMetrics 358 C 32 ; WX 600 ; N space ; B 0 0 0 0 ; C 33 ; WX 600 ; N exclam ; B 202 -15 398 572 ; C 34 ; WX 600 ; N quotedbl ; B 135 277 465 562 ; C 35 ; WX 600 ; N numbersign ; B 56 -45 544 651 ; C 36 ; WX 600 ; N dollar ; B 82 -126 519 666 ; C 37 ; WX 600 ; N percent ; B 5 -15 595 616 ; C 38 ; WX 600 ; N ampersand ; B 36 -15 546 543 ; C 39 ; WX 600 ; N quoteright ; B 171 277 423 562 ; C 40 ; WX 600 ; N parenleft ; B 219 -102 461 616 ; C 41 ; WX 600 ; N parenright ; B 139 -102 381 616 ; C 42 ; WX 600 ; N asterisk ; B 91 219 509 601 ; C 43 ; WX 600 ; N plus ; B 71 39 529 478 ; C 44 ; WX 600 ; N comma ; B 123 -111 393 174 ; C 45 ; WX 600 ; N hyphen ; B 100 203 500 313 ; C 46 ; WX 600 ; N period ; B 192 -15 408 171 ; C 47 ; WX 600 ; N slash ; B 98 -77 502 626 ; C 48 ; WX 600 ; N zero ; B 87 -15 513 616 ; C 49 ; WX 600 ; N one ; B 81 0 539 616 ; C 50 ; WX 600 ; N two ; B 61 0 499 616 ; C 51 ; WX 600 ; N three ; B 63 -15 501 616 ; C 52 ; WX 600 ; N four ; B 53 0 507 616 ; C 53 ; WX 600 ; N five ; B 70 -15 521 601 ; C 54 ; WX 600 ; N six ; B 90 -15 521 616 ; C 55 ; WX 600 ; N seven ; B 55 0 494 601 ; C 56 ; WX 600 ; N eight ; B 83 -15 517 616 ; C 57 ; WX 600 ; N nine ; B 79 -15 510 616 ; C 58 ; WX 600 ; N colon ; B 191 -15 407 425 ; C 59 ; WX 600 ; N semicolon ; B 123 -111 408 425 ; C 60 ; WX 600 ; N less ; B 66 15 523 501 ; C 61 ; WX 600 ; N equal ; B 71 118 529 398 ; C 62 ; WX 600 ; N greater ; B 77 15 534 501 ; C 63 ; WX 600 ; N question ; B 98 -14 501 580 ; C 64 ; WX 600 ; N at ; B 16 -15 584 616 ; C 65 ; WX 600 ; N A ; B -9 0 609 562 ; C 66 ; WX 600 ; N B ; B 30 0 573 562 ; C 67 ; WX 600 ; N C ; B 22 -18 560 580 ; C 68 ; WX 600 ; N D ; B 30 0 594 562 ; C 69 ; WX 600 ; N E ; B 25 0 560 562 ; C 70 ; WX 600 ; N F ; B 39 0 570 562 ; C 71 ; WX 600 ; N G ; B 22 -18 594 580 ; C 72 ; WX 600 ; N H ; B 20 0 580 562 ; C 73 ; WX 600 ; N I ; B 77 0 523 562 ; C 74 ; WX 600 ; N J ; B 37 -18 601 562 ; C 75 ; WX 600 ; N K ; B 21 0 599 562 ; C 76 ; WX 600 ; N L ; B 39 0 578 562 ; C 77 ; WX 600 ; N M ; B -2 0 602 562 ; C 78 ; WX 600 ; N N ; B 8 -12 610 562 ; C 79 ; WX 600 ; N O ; B 22 -18 578 580 ; C 80 ; WX 600 ; N P ; B 48 0 559 562 ; C 81 ; WX 600 ; N Q ; B 32 -138 578 580 ; C 82 ; WX 600 ; N R ; B 24 0 599 562 ; C 83 ; WX 600 ; N S ; B 47 -22 553 582 ; C 84 ; WX 600 ; N T ; B 21 0 579 562 ; C 85 ; WX 600 ; N U ; B 4 -18 596 562 ; C 86 ; WX 600 ; N V ; B -13 0 613 562 ; C 87 ; WX 600 ; N W ; B -18 0 618 562 ; C 88 ; WX 600 ; N X ; B 12 0 588 562 ; C 89 ; WX 600 ; N Y ; B 12 0 589 562 ; C 90 ; WX 600 ; N Z ; B 62 0 539 562 ; C 91 ; WX 600 ; N bracketleft ; B 245 -102 475 616 ; C 92 ; WX 600 ; N backslash ; B 99 -77 503 626 ; C 93 ; WX 600 ; N bracketright ; B 125 -102 355 616 ; C 94 ; WX 600 ; N asciicircum ; B 108 250 492 616 ; C 95 ; WX 600 ; N underscore ; B 0 -125 600 -75 ; C 96 ; WX 600 ; N quoteleft ; B 178 277 428 562 ; C 97 ; WX 600 ; N a ; B 35 -15 570 454 ; C 98 ; WX 600 ; N b ; B 0 -15 584 626 ; C 99 ; WX 600 ; N c ; B 40 -15 545 459 ; C 100 ; WX 600 ; N d ; B 20 -15 591 626 ; C 101 ; WX 600 ; N e ; B 40 -15 563 454 ; C 102 ; WX 600 ; N f ; B 83 0 547 626 ; L i fi ; L l fl ; C 103 ; WX 600 ; N g ; B 30 -146 580 454 ; C 104 ; WX 600 ; N h ; B 5 0 592 626 ; C 105 ; WX 600 ; N i ; B 77 0 523 658 ; C 106 ; WX 600 ; N j ; B 63 -146 440 658 ; C 107 ; WX 600 ; N k ; B 20 0 585 626 ; C 108 ; WX 600 ; N l ; B 77 0 523 626 ; C 109 ; WX 600 ; N m ; B -22 0 626 454 ; C 110 ; WX 600 ; N n ; B 18 0 592 454 ; C 111 ; WX 600 ; N o ; B 30 -15 570 454 ; C 112 ; WX 600 ; N p ; B -1 -142 570 454 ; C 113 ; WX 600 ; N q ; B 20 -142 591 454 ; C 114 ; WX 600 ; N r ; B 47 0 580 454 ; C 115 ; WX 600 ; N s ; B 68 -17 535 459 ; C 116 ; WX 600 ; N t ; B 47 -15 532 562 ; C 117 ; WX 600 ; N u ; B -1 -15 569 439 ; C 118 ; WX 600 ; N v ; B -1 0 601 439 ; C 119 ; WX 600 ; N w ; B -18 0 618 439 ; C 120 ; WX 600 ; N x ; B 6 0 594 439 ; C 121 ; WX 600 ; N y ; B -4 -142 601 439 ; C 122 ; WX 600 ; N z ; B 81 0 520 439 ; C 123 ; WX 600 ; N braceleft ; B 160 -102 464 616 ; C 124 ; WX 600 ; N bar ; B 255 -250 345 750 ; C 125 ; WX 600 ; N braceright ; B 136 -102 440 616 ; C 126 ; WX 600 ; N asciitilde ; B 71 153 530 356 ; C 160 ; WX 600 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 600 ; N exclamdown ; B 202 -146 398 449 ; C 162 ; WX 600 ; N cent ; B 66 -49 518 614 ; C 163 ; WX 600 ; N sterling ; B 72 -28 558 611 ; C 164 ; WX 600 ; N fraction ; B 25 -60 576 661 ; C 165 ; WX 600 ; N yen ; B 10 0 590 562 ; C 166 ; WX 600 ; N florin ; B -30 -131 572 616 ; C 167 ; WX 600 ; N section ; B 83 -70 517 580 ; C 168 ; WX 600 ; N currency ; B 54 49 546 517 ; C 169 ; WX 600 ; N quotesingle ; B 227 277 373 562 ; C 170 ; WX 600 ; N quotedblleft ; B 71 277 535 562 ; C 171 ; WX 600 ; N guillemotleft ; B 8 70 553 446 ; C 172 ; WX 600 ; N guilsinglleft ; B 141 70 459 446 ; C 173 ; WX 600 ; N guilsinglright ; B 141 70 459 446 ; C 174 ; WX 600 ; N fi ; B 12 0 593 626 ; C 175 ; WX 600 ; N fl ; B 12 0 593 626 ; C 177 ; WX 600 ; N endash ; B 65 203 535 313 ; C 178 ; WX 600 ; N dagger ; B 106 -70 494 580 ; C 179 ; WX 600 ; N daggerdbl ; B 106 -70 494 580 ; C 180 ; WX 600 ; N periodcentered ; B 196 165 404 351 ; C 182 ; WX 600 ; N paragraph ; B 6 -70 576 580 ; C 183 ; WX 600 ; N bullet ; B 140 132 460 430 ; C 184 ; WX 600 ; N quotesinglbase ; B 175 -142 427 143 ; C 185 ; WX 600 ; N quotedblbase ; B 65 -142 529 143 ; C 186 ; WX 600 ; N quotedblright ; B 61 277 525 562 ; C 187 ; WX 600 ; N guillemotright ; B 47 70 592 446 ; C 188 ; WX 600 ; N ellipsis ; B 26 -15 574 116 ; C 189 ; WX 600 ; N perthousand ; B -113 -15 713 616 ; C 191 ; WX 600 ; N questiondown ; B 99 -146 502 449 ; C 193 ; WX 600 ; N grave ; B 132 508 395 661 ; C 194 ; WX 600 ; N acute ; B 205 508 468 661 ; C 195 ; WX 600 ; N circumflex ; B 103 483 497 657 ; C 196 ; WX 600 ; N tilde ; B 89 493 512 636 ; C 197 ; WX 600 ; N macron ; B 88 505 512 585 ; C 198 ; WX 600 ; N breve ; B 83 468 517 631 ; C 199 ; WX 600 ; N dotaccent ; B 230 498 370 638 ; C 200 ; WX 600 ; N dieresis ; B 128 498 472 638 ; C 202 ; WX 600 ; N ring ; B 198 481 402 678 ; C 203 ; WX 600 ; N cedilla ; B 205 -206 387 0 ; C 205 ; WX 600 ; N hungarumlaut ; B 68 488 588 661 ; C 206 ; WX 600 ; N ogonek ; B 169 -199 400 0 ; C 207 ; WX 600 ; N caron ; B 103 493 497 667 ; C 208 ; WX 600 ; N emdash ; B -10 203 610 313 ; C 225 ; WX 600 ; N AE ; B -29 0 602 562 ; C 227 ; WX 600 ; N ordfeminine ; B 147 196 453 580 ; C 232 ; WX 600 ; N Lslash ; B 39 0 578 562 ; C 233 ; WX 600 ; N Oslash ; B 22 -22 578 584 ; C 234 ; WX 600 ; N OE ; B -25 0 595 562 ; C 235 ; WX 600 ; N ordmasculine ; B 147 196 453 580 ; C 241 ; WX 600 ; N ae ; B -4 -15 601 454 ; C 245 ; WX 600 ; N dotlessi ; B 77 0 523 439 ; C 248 ; WX 600 ; N lslash ; B 77 0 523 626 ; C 249 ; WX 600 ; N oslash ; B 30 -24 570 463 ; C 250 ; WX 600 ; N oe ; B -18 -15 611 454 ; C 251 ; WX 600 ; N germandbls ; B 22 -15 596 626 ; C -1 ; WX 600 ; N Idieresis ; B 77 0 523 761 ; C -1 ; WX 600 ; N eacute ; B 40 -15 563 661 ; C -1 ; WX 600 ; N abreve ; B 35 -15 570 661 ; C -1 ; WX 600 ; N uhungarumlaut ; B -1 -15 628 661 ; C -1 ; WX 600 ; N ecaron ; B 40 -15 563 667 ; C -1 ; WX 600 ; N Ydieresis ; B 12 0 589 761 ; C -1 ; WX 600 ; N divide ; B 71 16 529 500 ; C -1 ; WX 600 ; N Yacute ; B 12 0 589 784 ; C -1 ; WX 600 ; N Acircumflex ; B -9 0 609 780 ; C -1 ; WX 600 ; N aacute ; B 35 -15 570 661 ; C -1 ; WX 600 ; N Ucircumflex ; B 4 -18 596 780 ; C -1 ; WX 600 ; N yacute ; B -4 -142 601 661 ; C -1 ; WX 600 ; N scommaaccent ; B 68 -250 535 459 ; C -1 ; WX 600 ; N ecircumflex ; B 40 -15 563 657 ; C -1 ; WX 600 ; N Uring ; B 4 -18 596 801 ; C -1 ; WX 600 ; N Udieresis ; B 4 -18 596 761 ; C -1 ; WX 600 ; N aogonek ; B 35 -199 586 454 ; C -1 ; WX 600 ; N Uacute ; B 4 -18 596 784 ; C -1 ; WX 600 ; N uogonek ; B -1 -199 585 439 ; C -1 ; WX 600 ; N Edieresis ; B 25 0 560 761 ; C -1 ; WX 600 ; N Dcroat ; B 30 0 594 562 ; C -1 ; WX 600 ; N commaaccent ; B 205 -250 397 -57 ; C -1 ; WX 600 ; N copyright ; B 0 -18 600 580 ; C -1 ; WX 600 ; N Emacron ; B 25 0 560 708 ; C -1 ; WX 600 ; N ccaron ; B 40 -15 545 667 ; C -1 ; WX 600 ; N aring ; B 35 -15 570 678 ; C -1 ; WX 600 ; N Ncommaaccent ; B 8 -250 610 562 ; C -1 ; WX 600 ; N lacute ; B 77 0 523 801 ; C -1 ; WX 600 ; N agrave ; B 35 -15 570 661 ; C -1 ; WX 600 ; N Tcommaaccent ; B 21 -250 579 562 ; C -1 ; WX 600 ; N Cacute ; B 22 -18 560 784 ; C -1 ; WX 600 ; N atilde ; B 35 -15 570 636 ; C -1 ; WX 600 ; N Edotaccent ; B 25 0 560 761 ; C -1 ; WX 600 ; N scaron ; B 68 -17 535 667 ; C -1 ; WX 600 ; N scedilla ; B 68 -206 535 459 ; C -1 ; WX 600 ; N iacute ; B 77 0 523 661 ; C -1 ; WX 600 ; N lozenge ; B 66 0 534 740 ; C -1 ; WX 600 ; N Rcaron ; B 24 0 599 790 ; C -1 ; WX 600 ; N Gcommaaccent ; B 22 -250 594 580 ; C -1 ; WX 600 ; N ucircumflex ; B -1 -15 569 657 ; C -1 ; WX 600 ; N acircumflex ; B 35 -15 570 657 ; C -1 ; WX 600 ; N Amacron ; B -9 0 609 708 ; C -1 ; WX 600 ; N rcaron ; B 47 0 580 667 ; C -1 ; WX 600 ; N ccedilla ; B 40 -206 545 459 ; C -1 ; WX 600 ; N Zdotaccent ; B 62 0 539 761 ; C -1 ; WX 600 ; N Thorn ; B 48 0 557 562 ; C -1 ; WX 600 ; N Omacron ; B 22 -18 578 708 ; C -1 ; WX 600 ; N Racute ; B 24 0 599 784 ; C -1 ; WX 600 ; N Sacute ; B 47 -22 553 784 ; C -1 ; WX 600 ; N dcaron ; B 20 -15 727 626 ; C -1 ; WX 600 ; N Umacron ; B 4 -18 596 708 ; C -1 ; WX 600 ; N uring ; B -1 -15 569 678 ; C -1 ; WX 600 ; N threesuperior ; B 138 222 433 616 ; C -1 ; WX 600 ; N Ograve ; B 22 -18 578 784 ; C -1 ; WX 600 ; N Agrave ; B -9 0 609 784 ; C -1 ; WX 600 ; N Abreve ; B -9 0 609 784 ; C -1 ; WX 600 ; N multiply ; B 81 39 520 478 ; C -1 ; WX 600 ; N uacute ; B -1 -15 569 661 ; C -1 ; WX 600 ; N Tcaron ; B 21 0 579 790 ; C -1 ; WX 600 ; N partialdiff ; B 63 -38 537 728 ; C -1 ; WX 600 ; N ydieresis ; B -4 -142 601 638 ; C -1 ; WX 600 ; N Nacute ; B 8 -12 610 784 ; C -1 ; WX 600 ; N icircumflex ; B 73 0 523 657 ; C -1 ; WX 600 ; N Ecircumflex ; B 25 0 560 780 ; C -1 ; WX 600 ; N adieresis ; B 35 -15 570 638 ; C -1 ; WX 600 ; N edieresis ; B 40 -15 563 638 ; C -1 ; WX 600 ; N cacute ; B 40 -15 545 661 ; C -1 ; WX 600 ; N nacute ; B 18 0 592 661 ; C -1 ; WX 600 ; N umacron ; B -1 -15 569 585 ; C -1 ; WX 600 ; N Ncaron ; B 8 -12 610 790 ; C -1 ; WX 600 ; N Iacute ; B 77 0 523 784 ; C -1 ; WX 600 ; N plusminus ; B 71 24 529 515 ; C -1 ; WX 600 ; N brokenbar ; B 255 -175 345 675 ; C -1 ; WX 600 ; N registered ; B 0 -18 600 580 ; C -1 ; WX 600 ; N Gbreve ; B 22 -18 594 784 ; C -1 ; WX 600 ; N Idotaccent ; B 77 0 523 761 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 600 ; N Egrave ; B 25 0 560 784 ; C -1 ; WX 600 ; N racute ; B 47 0 580 661 ; C -1 ; WX 600 ; N omacron ; B 30 -15 570 585 ; C -1 ; WX 600 ; N Zacute ; B 62 0 539 784 ; C -1 ; WX 600 ; N Zcaron ; B 62 0 539 790 ; C -1 ; WX 600 ; N greaterequal ; B 26 0 523 696 ; C -1 ; WX 600 ; N Eth ; B 30 0 594 562 ; C -1 ; WX 600 ; N Ccedilla ; B 22 -206 560 580 ; C -1 ; WX 600 ; N lcommaaccent ; B 77 -250 523 626 ; C -1 ; WX 600 ; N tcaron ; B 47 -15 532 703 ; C -1 ; WX 600 ; N eogonek ; B 40 -199 563 454 ; C -1 ; WX 600 ; N Uogonek ; B 4 -199 596 562 ; C -1 ; WX 600 ; N Aacute ; B -9 0 609 784 ; C -1 ; WX 600 ; N Adieresis ; B -9 0 609 761 ; C -1 ; WX 600 ; N egrave ; B 40 -15 563 661 ; C -1 ; WX 600 ; N zacute ; B 81 0 520 661 ; C -1 ; WX 600 ; N iogonek ; B 77 -199 523 658 ; C -1 ; WX 600 ; N Oacute ; B 22 -18 578 784 ; C -1 ; WX 600 ; N oacute ; B 30 -15 570 661 ; C -1 ; WX 600 ; N amacron ; B 35 -15 570 585 ; C -1 ; WX 600 ; N sacute ; B 68 -17 535 661 ; C -1 ; WX 600 ; N idieresis ; B 77 0 523 618 ; C -1 ; WX 600 ; N Ocircumflex ; B 22 -18 578 780 ; C -1 ; WX 600 ; N Ugrave ; B 4 -18 596 784 ; C -1 ; WX 600 ; N Delta ; B 6 0 594 688 ; C -1 ; WX 600 ; N thorn ; B -14 -142 570 626 ; C -1 ; WX 600 ; N twosuperior ; B 143 230 436 616 ; C -1 ; WX 600 ; N Odieresis ; B 22 -18 578 761 ; C -1 ; WX 600 ; N mu ; B -1 -142 569 439 ; C -1 ; WX 600 ; N igrave ; B 77 0 523 661 ; C -1 ; WX 600 ; N ohungarumlaut ; B 30 -15 668 661 ; C -1 ; WX 600 ; N Eogonek ; B 25 -199 576 562 ; C -1 ; WX 600 ; N dcroat ; B 20 -15 591 626 ; C -1 ; WX 600 ; N threequarters ; B -47 -60 648 661 ; C -1 ; WX 600 ; N Scedilla ; B 47 -206 553 582 ; C -1 ; WX 600 ; N lcaron ; B 77 0 597 626 ; C -1 ; WX 600 ; N Kcommaaccent ; B 21 -250 599 562 ; C -1 ; WX 600 ; N Lacute ; B 39 0 578 784 ; C -1 ; WX 600 ; N trademark ; B -9 230 749 562 ; C -1 ; WX 600 ; N edotaccent ; B 40 -15 563 638 ; C -1 ; WX 600 ; N Igrave ; B 77 0 523 784 ; C -1 ; WX 600 ; N Imacron ; B 77 0 523 708 ; C -1 ; WX 600 ; N Lcaron ; B 39 0 637 562 ; C -1 ; WX 600 ; N onehalf ; B -47 -60 648 661 ; C -1 ; WX 600 ; N lessequal ; B 26 0 523 696 ; C -1 ; WX 600 ; N ocircumflex ; B 30 -15 570 657 ; C -1 ; WX 600 ; N ntilde ; B 18 0 592 636 ; C -1 ; WX 600 ; N Uhungarumlaut ; B 4 -18 638 784 ; C -1 ; WX 600 ; N Eacute ; B 25 0 560 784 ; C -1 ; WX 600 ; N emacron ; B 40 -15 563 585 ; C -1 ; WX 600 ; N gbreve ; B 30 -146 580 661 ; C -1 ; WX 600 ; N onequarter ; B -56 -60 656 661 ; C -1 ; WX 600 ; N Scaron ; B 47 -22 553 790 ; C -1 ; WX 600 ; N Scommaaccent ; B 47 -250 553 582 ; C -1 ; WX 600 ; N Ohungarumlaut ; B 22 -18 628 784 ; C -1 ; WX 600 ; N degree ; B 86 243 474 616 ; C -1 ; WX 600 ; N ograve ; B 30 -15 570 661 ; C -1 ; WX 600 ; N Ccaron ; B 22 -18 560 790 ; C -1 ; WX 600 ; N ugrave ; B -1 -15 569 661 ; C -1 ; WX 600 ; N radical ; B -19 -104 473 778 ; C -1 ; WX 600 ; N Dcaron ; B 30 0 594 790 ; C -1 ; WX 600 ; N rcommaaccent ; B 47 -250 580 454 ; C -1 ; WX 600 ; N Ntilde ; B 8 -12 610 759 ; C -1 ; WX 600 ; N otilde ; B 30 -15 570 636 ; C -1 ; WX 600 ; N Rcommaaccent ; B 24 -250 599 562 ; C -1 ; WX 600 ; N Lcommaaccent ; B 39 -250 578 562 ; C -1 ; WX 600 ; N Atilde ; B -9 0 609 759 ; C -1 ; WX 600 ; N Aogonek ; B -9 -199 625 562 ; C -1 ; WX 600 ; N Aring ; B -9 0 609 801 ; C -1 ; WX 600 ; N Otilde ; B 22 -18 578 759 ; C -1 ; WX 600 ; N zdotaccent ; B 81 0 520 638 ; C -1 ; WX 600 ; N Ecaron ; B 25 0 560 790 ; C -1 ; WX 600 ; N Iogonek ; B 77 -199 523 562 ; C -1 ; WX 600 ; N kcommaaccent ; B 20 -250 585 626 ; C -1 ; WX 600 ; N minus ; B 71 203 529 313 ; C -1 ; WX 600 ; N Icircumflex ; B 77 0 523 780 ; C -1 ; WX 600 ; N ncaron ; B 18 0 592 667 ; C -1 ; WX 600 ; N tcommaaccent ; B 47 -250 532 562 ; C -1 ; WX 600 ; N logicalnot ; B 71 103 529 413 ; C -1 ; WX 600 ; N odieresis ; B 30 -15 570 638 ; C -1 ; WX 600 ; N udieresis ; B -1 -15 569 638 ; C -1 ; WX 600 ; N notequal ; B 12 -47 537 563 ; C -1 ; WX 600 ; N gcommaaccent ; B 30 -146 580 714 ; C -1 ; WX 600 ; N eth ; B 58 -27 543 626 ; C -1 ; WX 600 ; N zcaron ; B 81 0 520 667 ; C -1 ; WX 600 ; N ncommaaccent ; B 18 -250 592 454 ; C -1 ; WX 600 ; N onesuperior ; B 153 230 447 616 ; C -1 ; WX 600 ; N imacron ; B 77 0 523 585 ; C -1 ; WX 600 ; N Euro ; B 0 0 0 0 ; C -1 ; WX 600 ; N Ccircumflex ; B 43 -15 557 797 ; C -1 ; WX 600 ; N ccircumflex ; B 51 -16 549 656 ; C -1 ; WX 600 ; N Cdotaccent ; B 43 -15 557 720 ; C -1 ; WX 600 ; N cdotaccent ; B 51 -16 549 579 ; C -1 ; WX 600 ; N Ebreve ; B 40 0 561 782 ; C -1 ; WX 600 ; N ebreve ; B 50 -16 550 642 ; C -1 ; WX 600 ; N Gcircumflex ; B 29 -15 571 797 ; C -1 ; WX 600 ; N gcircumflex ; B 29 -198 571 656 ; C -1 ; WX 600 ; N Gdotaccent ; B 29 -15 571 720 ; C -1 ; WX 600 ; N gdotaccent ; B 29 -198 571 579 ; C -1 ; WX 600 ; N Hcircumflex ; B 30 0 570 797 ; C -1 ; WX 600 ; N hcircumflex ; B 24 0 576 837 ; C -1 ; WX 600 ; N Hbar ; B 30 0 570 565 ; C -1 ; WX 600 ; N hbar ; B 24 0 576 662 ; C -1 ; WX 600 ; N Itilde ; B 90 0 510 733 ; C -1 ; WX 600 ; N itilde ; B 70 0 530 591 ; C -1 ; WX 600 ; N Ibreve ; B 90 0 510 782 ; C -1 ; WX 600 ; N ibreve ; B 70 0 530 642 ; C -1 ; WX 600 ; N IJ ; B 90 0 510 565 ; C -1 ; WX 600 ; N ij ; B 120 -198 480 604 ; C -1 ; WX 600 ; N Jcircumflex ; B 28 -15 572 797 ; C -1 ; WX 600 ; N jcircumflex ; B 120 -198 480 772 ; C -1 ; WX 600 ; N kgreenlandic ; B 59 0 541 423 ; C -1 ; WX 600 ; N Ldot ; B 39 0 561 565 ; C -1 ; WX 600 ; N ldot ; B 63 0 537 604 ; C -1 ; WX 600 ; N Obreve ; B 30 -15 571 782 ; C -1 ; WX 600 ; N obreve ; B 50 -16 550 642 ; C -1 ; WX 600 ; N Scircumflex ; B 70 -15 531 797 ; C -1 ; WX 600 ; N scircumflex ; B 80 -16 520 656 ; C -1 ; WX 600 ; N Tbar ; B 50 0 550 565 ; C -1 ; WX 600 ; N tbar ; B 50 -16 550 573 ; C -1 ; WX 600 ; N Tcedilla ; B 21 -250 579 562 ; C -1 ; WX 600 ; N tcedilla ; B 47 -250 532 562 ; C -1 ; WX 600 ; N Utilde ; B 18 -15 582 733 ; C -1 ; WX 600 ; N utilde ; B 29 -12 571 591 ; C -1 ; WX 600 ; N Ubreve ; B 18 -15 582 782 ; C -1 ; WX 600 ; N ubreve ; B 29 -12 571 642 ; C -1 ; WX 600 ; N Wcircumflex ; B 0 0 600 797 ; C -1 ; WX 600 ; N wcircumflex ; B 10 0 590 656 ; C -1 ; WX 600 ; N Ycircumflex ; B 30 0 570 797 ; C -1 ; WX 600 ; N ycircumflex ; B 30 -198 570 656 ; C -1 ; WX 600 ; N longs ; B 60 0 540 604 ; C -1 ; WX 600 ; N infinity ; B 12 120 588 484 ; EndCharMetrics EndFontMetrics pmw-5.22/fontmetrics/Utopia-Italic.afm0000644000222100022210000005274614541067540016045 0ustar ph10ph10StartFontMetrics 2.0 Comment Copyright (c) 1989, 1991 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Fri Jan 17 13:15:45 1992 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 37666 Comment VMusage 34143 41035 FontName Utopia-Italic FullName Utopia Italic FamilyName Utopia Weight Regular ItalicAngle -13 IsFixedPitch false FontBBox -201 -250 1170 890 UnderlinePosition -100 UnderlineThickness 50 Version 001.002 Notice Copyright (c) 1989, 1991 Adobe Systems Incorporated. All Rights Reserved.Utopia is a registered trademark of Adobe Systems Incorporated. EncodingScheme AdobeStandardEncoding CapHeight 692 XHeight 502 Ascender 742 Descender -242 StartCharMetrics 228 C 32 ; WX 225 ; N space ; B 0 0 0 0 ; C 33 ; WX 240 ; N exclam ; B 34 -12 290 707 ; C 34 ; WX 402 ; N quotedbl ; B 171 469 454 742 ; C 35 ; WX 530 ; N numbersign ; B 54 0 585 668 ; C 36 ; WX 530 ; N dollar ; B 31 -109 551 743 ; C 37 ; WX 826 ; N percent ; B 98 -25 795 702 ; C 38 ; WX 725 ; N ampersand ; B 60 -12 703 680 ; C 39 ; WX 216 ; N quoteright ; B 112 482 265 742 ; C 40 ; WX 350 ; N parenleft ; B 106 -128 458 692 ; C 41 ; WX 350 ; N parenright ; B -46 -128 306 692 ; C 42 ; WX 412 ; N asterisk ; B 106 356 458 707 ; C 43 ; WX 570 ; N plus ; B 58 0 542 490 ; C 44 ; WX 265 ; N comma ; B 11 -134 173 142 ; C 45 ; WX 392 ; N hyphen ; B 82 216 341 286 ; C 46 ; WX 265 ; N period ; B 47 -12 169 113 ; C 47 ; WX 270 ; N slash ; B 0 -15 341 707 ; C 48 ; WX 530 ; N zero ; B 60 -12 541 680 ; C 49 ; WX 530 ; N one ; B 74 0 429 680 ; C 50 ; WX 530 ; N two ; B -2 0 538 680 ; C 51 ; WX 530 ; N three ; B 19 -12 524 680 ; C 52 ; WX 530 ; N four ; B 32 0 509 668 ; C 53 ; WX 530 ; N five ; B 24 -12 550 668 ; C 54 ; WX 530 ; N six ; B 56 -12 551 680 ; C 55 ; WX 530 ; N seven ; B 130 -12 600 668 ; C 56 ; WX 530 ; N eight ; B 46 -12 535 680 ; C 57 ; WX 530 ; N nine ; B 51 -12 536 680 ; C 58 ; WX 265 ; N colon ; B 47 -12 248 490 ; C 59 ; WX 265 ; N semicolon ; B 11 -134 248 490 ; C 60 ; WX 570 ; N less ; B 51 1 529 497 ; C 61 ; WX 570 ; N equal ; B 58 111 542 389 ; C 62 ; WX 570 ; N greater ; B 51 1 529 497 ; C 63 ; WX 425 ; N question ; B 115 -12 456 707 ; C 64 ; WX 794 ; N at ; B 88 -15 797 707 ; C 65 ; WX 624 ; N A ; B -58 0 623 692 ; C 66 ; WX 632 ; N B ; B 3 0 636 692 ; C 67 ; WX 661 ; N C ; B 79 -15 723 707 ; C 68 ; WX 763 ; N D ; B 5 0 767 692 ; C 69 ; WX 596 ; N E ; B 3 0 657 692 ; C 70 ; WX 571 ; N F ; B 3 0 660 692 ; C 71 ; WX 709 ; N G ; B 79 -15 737 707 ; C 72 ; WX 775 ; N H ; B 5 0 857 692 ; C 73 ; WX 345 ; N I ; B 5 0 428 692 ; C 74 ; WX 352 ; N J ; B -78 -119 436 692 ; C 75 ; WX 650 ; N K ; B 5 -5 786 692 ; C 76 ; WX 565 ; N L ; B 5 0 568 692 ; C 77 ; WX 920 ; N M ; B -4 0 1002 692 ; C 78 ; WX 763 ; N N ; B -4 0 855 692 ; C 79 ; WX 753 ; N O ; B 79 -15 754 707 ; C 80 ; WX 614 ; N P ; B 5 0 646 692 ; C 81 ; WX 753 ; N Q ; B 79 -203 754 707 ; C 82 ; WX 640 ; N R ; B 5 0 642 692 ; C 83 ; WX 533 ; N S ; B 34 -15 542 707 ; C 84 ; WX 606 ; N T ; B 102 0 708 692 ; C 85 ; WX 794 ; N U ; B 131 -15 880 692 ; C 86 ; WX 637 ; N V ; B 96 0 786 692 ; C 87 ; WX 946 ; N W ; B 86 0 1075 692 ; C 88 ; WX 632 ; N X ; B -36 0 735 692 ; C 89 ; WX 591 ; N Y ; B 96 0 744 692 ; C 90 ; WX 622 ; N Z ; B -20 0 703 692 ; C 91 ; WX 330 ; N bracketleft ; B 69 -128 414 692 ; C 92 ; WX 390 ; N backslash ; B 89 -15 371 707 ; C 93 ; WX 330 ; N bracketright ; B -21 -128 324 692 ; C 94 ; WX 570 ; N asciicircum ; B 83 228 547 668 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 216 ; N quoteleft ; B 130 488 283 748 ; C 97 ; WX 561 ; N a ; B 31 -12 563 502 ; C 98 ; WX 559 ; N b ; B 47 -12 557 742 ; C 99 ; WX 441 ; N c ; B 46 -12 465 502 ; C 100 ; WX 587 ; N d ; B 37 -12 612 742 ; C 101 ; WX 453 ; N e ; B 45 -12 471 502 ; C 102 ; WX 315 ; N f ; B -107 -242 504 742 ; L i fi ; L l fl ; C 103 ; WX 499 ; N g ; B -5 -242 573 512 ; C 104 ; WX 607 ; N h ; B 57 -12 588 742 ; C 105 ; WX 317 ; N i ; B 79 -12 328 715 ; C 106 ; WX 309 ; N j ; B -95 -242 330 715 ; C 107 ; WX 545 ; N k ; B 57 -12 567 742 ; C 108 ; WX 306 ; N l ; B 76 -12 331 742 ; C 109 ; WX 912 ; N m ; B 63 -12 894 502 ; C 110 ; WX 618 ; N n ; B 63 -12 600 502 ; C 111 ; WX 537 ; N o ; B 49 -12 522 502 ; C 112 ; WX 590 ; N p ; B 22 -242 586 502 ; C 113 ; WX 559 ; N q ; B 38 -242 567 525 ; C 114 ; WX 402 ; N r ; B 69 -12 448 502 ; C 115 ; WX 389 ; N s ; B 19 -12 397 502 ; C 116 ; WX 341 ; N t ; B 84 -12 404 616 ; C 117 ; WX 618 ; N u ; B 89 -12 609 502 ; C 118 ; WX 510 ; N v ; B 84 -12 528 502 ; C 119 ; WX 785 ; N w ; B 87 -12 808 502 ; C 120 ; WX 516 ; N x ; B -4 -12 531 502 ; C 121 ; WX 468 ; N y ; B -40 -242 505 502 ; C 122 ; WX 468 ; N z ; B 4 -12 483 490 ; C 123 ; WX 340 ; N braceleft ; B 100 -128 423 692 ; C 124 ; WX 270 ; N bar ; B 130 -250 198 750 ; C 125 ; WX 340 ; N braceright ; B -20 -128 302 692 ; C 126 ; WX 570 ; N asciitilde ; B 98 176 522 318 ; C 160 ; WX 225 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 240 ; N exclamdown ; B -18 -217 238 502 ; C 162 ; WX 530 ; N cent ; B 94 -21 563 669 ; C 163 ; WX 530 ; N sterling ; B 9 0 549 680 ; C 164 ; WX 100 ; N fraction ; B -201 -24 369 698 ; C 165 ; WX 530 ; N yen ; B 72 0 645 668 ; C 166 ; WX 530 ; N florin ; B 4 -135 588 691 ; C 167 ; WX 530 ; N section ; B 55 -115 533 707 ; C 168 ; WX 530 ; N currency ; B 56 90 536 578 ; C 169 ; WX 216 ; N quotesingle ; B 161 469 274 742 ; C 170 ; WX 402 ; N quotedblleft ; B 134 488 473 748 ; C 171 ; WX 462 ; N guillemotleft ; B 79 41 470 435 ; C 172 ; WX 277 ; N guilsinglleft ; B 71 41 267 435 ; C 173 ; WX 277 ; N guilsinglright ; B 44 41 240 435 ; C 174 ; WX 607 ; N fi ; B -107 -242 589 742 ; C 175 ; WX 603 ; N fl ; B -107 -242 628 742 ; C 177 ; WX 500 ; N endash ; B 12 221 524 279 ; C 178 ; WX 500 ; N dagger ; B 101 -125 519 717 ; C 179 ; WX 490 ; N daggerdbl ; B 39 -119 509 717 ; C 180 ; WX 265 ; N periodcentered ; B 89 187 211 312 ; C 182 ; WX 560 ; N paragraph ; B 109 -101 637 692 ; C 183 ; WX 500 ; N bullet ; B 110 192 429 512 ; C 184 ; WX 216 ; N quotesinglbase ; B -7 -109 146 151 ; C 185 ; WX 402 ; N quotedblbase ; B -7 -109 332 151 ; C 186 ; WX 402 ; N quotedblright ; B 107 484 446 744 ; C 187 ; WX 462 ; N guillemotright ; B 29 41 420 435 ; C 188 ; WX 1000 ; N ellipsis ; B 85 -12 873 113 ; C 189 ; WX 1200 ; N perthousand ; B 98 -25 1170 702 ; C 191 ; WX 425 ; N questiondown ; B 3 -217 344 502 ; C 193 ; WX 400 ; N grave ; B 146 542 368 723 ; C 194 ; WX 400 ; N acute ; B 214 542 436 723 ; C 195 ; WX 400 ; N circumflex ; B 187 546 484 720 ; C 196 ; WX 400 ; N tilde ; B 137 563 492 682 ; C 197 ; WX 400 ; N macron ; B 193 597 489 656 ; C 198 ; WX 400 ; N breve ; B 227 568 501 698 ; C 199 ; WX 402 ; N dotaccent ; B 252 570 359 680 ; C 200 ; WX 400 ; N dieresis ; B 172 572 487 682 ; C 202 ; WX 400 ; N ring ; B 186 550 402 752 ; C 203 ; WX 400 ; N cedilla ; B 62 -230 241 0 ; C 205 ; WX 400 ; N hungarumlaut ; B 176 546 455 750 ; C 206 ; WX 350 ; N ogonek ; B 68 -219 248 0 ; C 207 ; WX 400 ; N caron ; B 213 557 510 731 ; C 208 ; WX 1000 ; N emdash ; B 12 221 1024 279 ; C 225 ; WX 880 ; N AE ; B -88 0 941 692 ; C 227 ; WX 425 ; N ordfeminine ; B 77 265 460 590 ; C 232 ; WX 571 ; N Lslash ; B 11 0 574 692 ; C 233 ; WX 753 ; N Oslash ; B 79 -45 754 736 ; C 234 ; WX 1020 ; N OE ; B 79 0 1081 692 ; C 235 ; WX 389 ; N ordmasculine ; B 86 265 420 590 ; C 241 ; WX 779 ; N ae ; B 34 -12 797 514 ; C 245 ; WX 317 ; N dotlessi ; B 79 -12 299 502 ; C 248 ; WX 318 ; N lslash ; B 45 -12 376 742 ; C 249 ; WX 537 ; N oslash ; B 49 -39 522 529 ; C 250 ; WX 806 ; N oe ; B 49 -12 824 502 ; C 251 ; WX 577 ; N germandbls ; B -107 -242 630 742 ; C -1 ; WX 370 ; N onesuperior ; B 90 272 326 680 ; C -1 ; WX 570 ; N minus ; B 58 221 542 279 ; C -1 ; WX 400 ; N degree ; B 152 404 428 680 ; C -1 ; WX 537 ; N oacute ; B 49 -12 530 723 ; C -1 ; WX 753 ; N Odieresis ; B 79 -15 754 848 ; C -1 ; WX 537 ; N odieresis ; B 49 -12 532 682 ; C -1 ; WX 596 ; N Eacute ; B 3 0 657 890 ; C -1 ; WX 618 ; N ucircumflex ; B 89 -12 609 720 ; C -1 ; WX 890 ; N onequarter ; B 97 -24 805 698 ; C -1 ; WX 570 ; N logicalnot ; B 58 102 542 389 ; C -1 ; WX 596 ; N Ecircumflex ; B 3 0 657 876 ; C -1 ; WX 890 ; N onehalf ; B 71 -24 812 698 ; C -1 ; WX 753 ; N Otilde ; B 79 -15 754 842 ; C -1 ; WX 618 ; N uacute ; B 89 -12 609 723 ; C -1 ; WX 453 ; N eacute ; B 45 -12 508 723 ; C -1 ; WX 317 ; N iacute ; B 79 -12 398 723 ; C -1 ; WX 596 ; N Egrave ; B 3 0 657 890 ; C -1 ; WX 317 ; N icircumflex ; B 79 -12 383 720 ; C -1 ; WX 618 ; N mu ; B 11 -232 609 502 ; C -1 ; WX 270 ; N brokenbar ; B 130 -175 198 675 ; C -1 ; WX 584 ; N thorn ; B 16 -242 580 700 ; C -1 ; WX 624 ; N Aring ; B -58 0 623 861 ; C -1 ; WX 468 ; N yacute ; B -40 -242 505 723 ; C -1 ; WX 591 ; N Ydieresis ; B 96 0 744 848 ; C -1 ; WX 1100 ; N trademark ; B 91 277 1094 692 ; C -1 ; WX 836 ; N registered ; B 91 -15 819 707 ; C -1 ; WX 537 ; N ocircumflex ; B 49 -12 522 720 ; C -1 ; WX 624 ; N Agrave ; B -58 0 623 890 ; C -1 ; WX 533 ; N Scaron ; B 34 -15 561 888 ; C -1 ; WX 794 ; N Ugrave ; B 131 -15 880 890 ; C -1 ; WX 596 ; N Edieresis ; B 3 0 657 848 ; C -1 ; WX 794 ; N Uacute ; B 131 -15 880 890 ; C -1 ; WX 537 ; N otilde ; B 49 -12 525 682 ; C -1 ; WX 618 ; N ntilde ; B 63 -12 600 682 ; C -1 ; WX 468 ; N ydieresis ; B -40 -242 513 682 ; C -1 ; WX 624 ; N Aacute ; B -58 0 642 890 ; C -1 ; WX 537 ; N eth ; B 47 -12 521 742 ; C -1 ; WX 561 ; N acircumflex ; B 31 -12 563 720 ; C -1 ; WX 561 ; N aring ; B 31 -12 563 752 ; C -1 ; WX 753 ; N Ograve ; B 79 -15 754 890 ; C -1 ; WX 441 ; N ccedilla ; B 46 -230 465 502 ; C -1 ; WX 570 ; N multiply ; B 88 22 532 478 ; C -1 ; WX 570 ; N divide ; B 58 25 542 475 ; C -1 ; WX 370 ; N twosuperior ; B 35 272 399 680 ; C -1 ; WX 763 ; N Ntilde ; B -4 0 855 842 ; C -1 ; WX 618 ; N ugrave ; B 89 -12 609 723 ; C -1 ; WX 794 ; N Ucircumflex ; B 131 -15 880 876 ; C -1 ; WX 624 ; N Atilde ; B -58 0 623 842 ; C -1 ; WX 468 ; N zcaron ; B 4 -12 484 731 ; C -1 ; WX 317 ; N idieresis ; B 79 -12 398 682 ; C -1 ; WX 624 ; N Acircumflex ; B -58 0 623 876 ; C -1 ; WX 345 ; N Icircumflex ; B 5 0 453 876 ; C -1 ; WX 591 ; N Yacute ; B 96 0 744 890 ; C -1 ; WX 753 ; N Oacute ; B 79 -15 754 890 ; C -1 ; WX 624 ; N Adieresis ; B -58 0 623 848 ; C -1 ; WX 622 ; N Zcaron ; B -20 0 703 888 ; C -1 ; WX 561 ; N agrave ; B 31 -12 563 723 ; C -1 ; WX 370 ; N threesuperior ; B 59 265 389 680 ; C -1 ; WX 537 ; N ograve ; B 49 -12 522 723 ; C -1 ; WX 890 ; N threequarters ; B 105 -24 816 698 ; C -1 ; WX 770 ; N Eth ; B 12 0 774 692 ; C -1 ; WX 570 ; N plusminus ; B 58 0 542 556 ; C -1 ; WX 618 ; N udieresis ; B 89 -12 609 682 ; C -1 ; WX 453 ; N edieresis ; B 45 -12 490 682 ; C -1 ; WX 561 ; N aacute ; B 31 -12 571 723 ; C -1 ; WX 317 ; N igrave ; B 55 -12 299 723 ; C -1 ; WX 345 ; N Idieresis ; B 5 0 461 848 ; C -1 ; WX 561 ; N adieresis ; B 31 -12 563 682 ; C -1 ; WX 345 ; N Iacute ; B 5 0 506 890 ; C -1 ; WX 836 ; N copyright ; B 91 -15 819 707 ; C -1 ; WX 345 ; N Igrave ; B 5 0 428 890 ; C -1 ; WX 661 ; N Ccedilla ; B 79 -230 723 707 ; C -1 ; WX 389 ; N scaron ; B 19 -12 457 731 ; C -1 ; WX 453 ; N egrave ; B 45 -12 471 723 ; C -1 ; WX 753 ; N Ocircumflex ; B 79 -15 754 876 ; C -1 ; WX 604 ; N Thorn ; B 5 0 616 692 ; C -1 ; WX 561 ; N atilde ; B 31 -12 563 682 ; C -1 ; WX 794 ; N Udieresis ; B 131 -15 880 848 ; C -1 ; WX 453 ; N ecircumflex ; B 45 -12 475 720 ; EndCharMetrics StartKernData StartKernPairs 690 KPX A y -20 KPX A x 10 KPX A w -30 KPX A v -30 KPX A u -10 KPX A t -6 KPX A s 15 KPX A r -12 KPX A quoteright -110 KPX A quotedblright -110 KPX A q 10 KPX A p -12 KPX A o -10 KPX A n -18 KPX A m -18 KPX A l -18 KPX A j 6 KPX A h -6 KPX A d 10 KPX A c -6 KPX A b -6 KPX A a 12 KPX A Y -76 KPX A X -8 KPX A W -80 KPX A V -90 KPX A U -60 KPX A T -72 KPX A Q -30 KPX A O -30 KPX A G -30 KPX A C -30 KPX B y -6 KPX B u -20 KPX B r -15 KPX B quoteright -40 KPX B quotedblright -30 KPX B o 6 KPX B l -20 KPX B k -15 KPX B i -12 KPX B h -15 KPX B e 6 KPX B a 12 KPX B W -20 KPX B V -50 KPX B U -50 KPX B T -20 KPX C z -6 KPX C y -18 KPX C u -18 KPX C quotedblright 20 KPX C i -5 KPX C e -6 KPX C a -6 KPX D y 18 KPX D u -10 KPX D quoteright -40 KPX D quotedblright -50 KPX D period -30 KPX D o 6 KPX D i 6 KPX D h -25 KPX D e 6 KPX D comma -20 KPX D a 6 KPX D Y -70 KPX D W -50 KPX D V -60 KPX E z -6 KPX E y -18 KPX E x 5 KPX E w -20 KPX E v -18 KPX E u -24 KPX E t -18 KPX E s 5 KPX E r -6 KPX E quoteright 10 KPX E quotedblright 10 KPX E q 10 KPX E period 10 KPX E p -12 KPX E o -6 KPX E n -12 KPX E m -12 KPX E l -12 KPX E k -10 KPX E j -6 KPX E i -12 KPX E g -12 KPX E e 5 KPX E d 10 KPX E comma 10 KPX E b -6 KPX F y -12 KPX F u -30 KPX F r -18 KPX F quoteright 15 KPX F quotedblright 35 KPX F period -180 KPX F o -30 KPX F l -6 KPX F i -12 KPX F e -30 KPX F comma -170 KPX F a -30 KPX F A -45 KPX G y -16 KPX G u -22 KPX G r -22 KPX G quoteright -20 KPX G quotedblright -20 KPX G o 10 KPX G n -22 KPX G l -24 KPX G i -12 KPX G h -18 KPX G e 10 KPX G a 5 KPX H y -18 KPX H u -30 KPX H quoteright 10 KPX H quotedblright 10 KPX H o -12 KPX H i -12 KPX H e -12 KPX H a -12 KPX I z -20 KPX I y -6 KPX I x -6 KPX I w -30 KPX I v -30 KPX I u -30 KPX I t -18 KPX I s -18 KPX I r -12 KPX I quoteright 10 KPX I quotedblright 10 KPX I p -18 KPX I o -12 KPX I n -18 KPX I m -18 KPX I l -6 KPX I k -6 KPX I g -12 KPX I f -6 KPX I d -6 KPX I c -12 KPX I b -6 KPX I a -6 KPX J y -12 KPX J u -36 KPX J quoteright 6 KPX J quotedblright 15 KPX J o -36 KPX J i -30 KPX J e -36 KPX J braceright 10 KPX J a -36 KPX K y -40 KPX K w -30 KPX K v -20 KPX K u -24 KPX K r -12 KPX K quoteright 25 KPX K quotedblright 40 KPX K o -24 KPX K n -18 KPX K i -6 KPX K h 6 KPX K e -12 KPX K a -6 KPX K Q -24 KPX K O -24 KPX K G -24 KPX K C -24 KPX L y -55 KPX L w -30 KPX L u -18 KPX L quoteright -110 KPX L quotedblright -110 KPX L l -16 KPX L j -18 KPX L i -18 KPX L a 10 KPX L Y -80 KPX L W -90 KPX L V -110 KPX L U -42 KPX L T -80 KPX L Q -48 KPX L O -48 KPX L G -48 KPX L C -48 KPX L A 30 KPX M y -18 KPX M u -24 KPX M quoteright 6 KPX M quotedblright 15 KPX M o -25 KPX M n -12 KPX M j -18 KPX M i -12 KPX M e -20 KPX M d -10 KPX M c -20 KPX M a -6 KPX N y -18 KPX N u -24 KPX N quoteright 10 KPX N quotedblright 10 KPX N o -25 KPX N i -12 KPX N e -20 KPX N a -22 KPX O z -6 KPX O y 12 KPX O w -10 KPX O v -10 KPX O u -6 KPX O t -6 KPX O s -6 KPX O r -6 KPX O quoteright -40 KPX O quotedblright -40 KPX O q 5 KPX O period -20 KPX O p -6 KPX O n -6 KPX O m -6 KPX O l -20 KPX O k -10 KPX O j -6 KPX O h -10 KPX O g -6 KPX O e 5 KPX O d 6 KPX O comma -10 KPX O c 5 KPX O b -6 KPX O a 5 KPX O Y -75 KPX O X -30 KPX O W -40 KPX O V -60 KPX O T -48 KPX O A -18 KPX P y 6 KPX P u -18 KPX P t -6 KPX P s -24 KPX P r -6 KPX P period -220 KPX P o -24 KPX P n -12 KPX P l -25 KPX P h -15 KPX P e -24 KPX P comma -220 KPX P a -24 KPX P I -30 KPX P H -30 KPX P E -30 KPX P A -75 KPX Q u -6 KPX Q quoteright -40 KPX Q quotedblright -50 KPX Q a -6 KPX Q Y -70 KPX Q X -12 KPX Q W -35 KPX Q V -60 KPX Q U -35 KPX Q T -36 KPX Q A -18 KPX R y -14 KPX R u -12 KPX R quoteright -30 KPX R quotedblright -20 KPX R o -12 KPX R hyphen -20 KPX R e -12 KPX R Y -50 KPX R W -30 KPX R V -40 KPX R U -40 KPX R T -30 KPX R Q -10 KPX R O -10 KPX R G -10 KPX R C -10 KPX R A -6 KPX S y -30 KPX S w -30 KPX S v -30 KPX S u -18 KPX S t -30 KPX S r -20 KPX S quoteright -38 KPX S quotedblright -30 KPX S p -18 KPX S n -24 KPX S m -24 KPX S l -30 KPX S k -24 KPX S j -25 KPX S i -30 KPX S h -30 KPX S e -6 KPX T z -70 KPX T y -60 KPX T w -64 KPX T u -74 KPX T semicolon -36 KPX T s -72 KPX T r -64 KPX T quoteright 45 KPX T quotedblright 50 KPX T period -100 KPX T parenright 54 KPX T o -90 KPX T m -64 KPX T i -34 KPX T hyphen -100 KPX T endash -60 KPX T emdash -60 KPX T e -90 KPX T comma -110 KPX T colon -10 KPX T bracketright 45 KPX T braceright 54 KPX T a -90 KPX T Y 12 KPX T X 18 KPX T W 6 KPX T T 18 KPX T Q -12 KPX T O -12 KPX T G -12 KPX T C -12 KPX T A -56 KPX U z -30 KPX U x -40 KPX U t -24 KPX U s -30 KPX U r -30 KPX U quoteright 10 KPX U quotedblright 10 KPX U p -40 KPX U n -45 KPX U m -45 KPX U l -12 KPX U k -12 KPX U i -24 KPX U h -6 KPX U g -30 KPX U d -40 KPX U c -35 KPX U b -6 KPX U a -40 KPX U A -45 KPX V y -46 KPX V u -42 KPX V semicolon -35 KPX V r -50 KPX V quoteright 75 KPX V quotedblright 70 KPX V period -130 KPX V parenright 64 KPX V o -62 KPX V i -10 KPX V hyphen -60 KPX V endash -20 KPX V emdash -20 KPX V e -52 KPX V comma -120 KPX V colon -18 KPX V bracketright 64 KPX V braceright 64 KPX V a -60 KPX V T 6 KPX V A -70 KPX W y -42 KPX W u -56 KPX W t -20 KPX W semicolon -28 KPX W r -40 KPX W quoteright 55 KPX W quotedblright 60 KPX W period -108 KPX W parenright 64 KPX W o -60 KPX W m -35 KPX W i -10 KPX W hyphen -40 KPX W endash -2 KPX W emdash -10 KPX W e -54 KPX W d -50 KPX W comma -108 KPX W colon -28 KPX W bracketright 55 KPX W braceright 64 KPX W a -60 KPX W T 12 KPX W Q -10 KPX W O -10 KPX W G -10 KPX W C -10 KPX W A -58 KPX X y -35 KPX X u -30 KPX X r -6 KPX X quoteright 35 KPX X quotedblright 15 KPX X i -6 KPX X e -10 KPX X a 5 KPX X Y -6 KPX X W -6 KPX X Q -30 KPX X O -30 KPX X G -30 KPX X C -30 KPX X A -18 KPX Y v -50 KPX Y u -58 KPX Y t -32 KPX Y semicolon -36 KPX Y quoteright 65 KPX Y quotedblright 70 KPX Y q -100 KPX Y period -90 KPX Y parenright 60 KPX Y o -72 KPX Y l 10 KPX Y hyphen -95 KPX Y endash -20 KPX Y emdash -20 KPX Y e -72 KPX Y d -80 KPX Y comma -80 KPX Y colon -36 KPX Y bracketright 64 KPX Y braceright 75 KPX Y a -82 KPX Y Y 12 KPX Y X 12 KPX Y W 12 KPX Y V 6 KPX Y T 25 KPX Y Q -5 KPX Y O -5 KPX Y G -5 KPX Y C -5 KPX Y A -36 KPX Z y -36 KPX Z w -36 KPX Z u -12 KPX Z quoteright 10 KPX Z quotedblright 10 KPX Z o -6 KPX Z i -12 KPX Z e -6 KPX Z a -6 KPX Z Q -30 KPX Z O -30 KPX Z G -30 KPX Z C -30 KPX Z A 12 KPX a quoteright -40 KPX a quotedblright -40 KPX b y -6 KPX b w -15 KPX b v -15 KPX b quoteright -50 KPX b quotedblright -50 KPX b period -40 KPX b comma -30 KPX braceleft Y 64 KPX braceleft W 64 KPX braceleft V 64 KPX braceleft T 54 KPX braceleft J 80 KPX bracketleft Y 64 KPX bracketleft W 64 KPX bracketleft V 64 KPX bracketleft T 54 KPX bracketleft J 80 KPX c quoteright -20 KPX c quotedblright -20 KPX colon space -30 KPX comma space -40 KPX comma quoteright -80 KPX comma quotedblright -80 KPX d quoteright -12 KPX d quotedblright -12 KPX e x -10 KPX e w -10 KPX e quoteright -30 KPX e quotedblright -30 KPX f quoteright 110 KPX f quotedblright 110 KPX f period -20 KPX f parenright 100 KPX f comma -20 KPX f bracketright 90 KPX f braceright 90 KPX g y 30 KPX g p 12 KPX g f 42 KPX h quoteright -80 KPX h quotedblright -80 KPX j quoteright -20 KPX j quotedblright -20 KPX j period -35 KPX j comma -20 KPX k quoteright -30 KPX k quotedblright -50 KPX m quoteright -80 KPX m quotedblright -80 KPX n quoteright -80 KPX n quotedblright -80 KPX o z -10 KPX o y -20 KPX o x -20 KPX o w -30 KPX o v -35 KPX o quoteright -60 KPX o quotedblright -50 KPX o period -30 KPX o comma -20 KPX p z -10 KPX p w -15 KPX p quoteright -50 KPX p quotedblright -70 KPX p period -30 KPX p comma -20 KPX parenleft Y 75 KPX parenleft W 75 KPX parenleft V 75 KPX parenleft T 64 KPX parenleft J 80 KPX period space -40 KPX period quoteright -80 KPX period quotedblright -80 KPX q quoteright -20 KPX q quotedblright -30 KPX q period -20 KPX q comma -10 KPX quotedblleft z -30 KPX quotedblleft x -40 KPX quotedblleft w -12 KPX quotedblleft v -12 KPX quotedblleft u -12 KPX quotedblleft t -12 KPX quotedblleft s -30 KPX quotedblleft r -12 KPX quotedblleft q -40 KPX quotedblleft p -12 KPX quotedblleft o -30 KPX quotedblleft n -12 KPX quotedblleft m -12 KPX quotedblleft l 10 KPX quotedblleft k 10 KPX quotedblleft h 10 KPX quotedblleft g -30 KPX quotedblleft e -40 KPX quotedblleft d -40 KPX quotedblleft c -40 KPX quotedblleft b 24 KPX quotedblleft a -60 KPX quotedblleft Y 12 KPX quotedblleft X 28 KPX quotedblleft W 28 KPX quotedblleft V 28 KPX quotedblleft T 36 KPX quotedblleft A -90 KPX quotedblright space -40 KPX quotedblright period -100 KPX quotedblright comma -100 KPX quoteleft z -30 KPX quoteleft y -10 KPX quoteleft x -40 KPX quoteleft w -12 KPX quoteleft v -12 KPX quoteleft u -12 KPX quoteleft t -12 KPX quoteleft s -30 KPX quoteleft r -12 KPX quoteleft quoteleft -18 KPX quoteleft q -30 KPX quoteleft p -12 KPX quoteleft o -30 KPX quoteleft n -12 KPX quoteleft m -12 KPX quoteleft l 10 KPX quoteleft k 10 KPX quoteleft h 10 KPX quoteleft g -30 KPX quoteleft e -30 KPX quoteleft d -30 KPX quoteleft c -30 KPX quoteleft b 24 KPX quoteleft a -45 KPX quoteleft Y 12 KPX quoteleft X 28 KPX quoteleft W 28 KPX quoteleft V 28 KPX quoteleft T 36 KPX quoteleft A -90 KPX quoteright v -35 KPX quoteright t -35 KPX quoteright space -40 KPX quoteright s -55 KPX quoteright r -25 KPX quoteright quoteright -18 KPX quoteright period -100 KPX quoteright m -25 KPX quoteright l -12 KPX quoteright d -70 KPX quoteright comma -100 KPX r y 18 KPX r w 6 KPX r v 6 KPX r t 8 KPX r quotedblright -15 KPX r q -24 KPX r period -120 KPX r o -6 KPX r l -20 KPX r k -20 KPX r hyphen -30 KPX r h -20 KPX r f 8 KPX r emdash -20 KPX r e -26 KPX r d -26 KPX r comma -110 KPX r c -12 KPX r a -20 KPX s quoteright -40 KPX s quotedblright -45 KPX semicolon space -30 KPX space quotesinglbase -30 KPX space quoteleft -40 KPX space quotedblleft -40 KPX space quotedblbase -30 KPX space Y -70 KPX space W -70 KPX space V -70 KPX t quoteright 10 KPX t quotedblright -10 KPX u quoteright -55 KPX u quotedblright -50 KPX v quoteright -20 KPX v quotedblright -30 KPX v q -6 KPX v period -70 KPX v o -6 KPX v e -6 KPX v d -6 KPX v comma -70 KPX v c -6 KPX v a -6 KPX w quoteright -20 KPX w quotedblright -30 KPX w period -62 KPX w comma -62 KPX x y 12 KPX x w -6 KPX x quoteright -40 KPX x quotedblright -50 KPX x q -6 KPX x o -6 KPX x e -6 KPX x d -6 KPX x c -6 KPX y quoteright -10 KPX y quotedblright -20 KPX y period -70 KPX y emdash 40 KPX y comma -60 KPX z quoteright -40 KPX z quotedblright -50 KPX z o -6 KPX z e -6 KPX z d -6 KPX z c -6 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Helvetica-Oblique.afm0000644000222100022210000022600514541067540016672 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:44:31 1997 Comment PH added entry for Euro character, copied from a different version, 19 July 2009. Comment PH added additional characters (after Euro) 18 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43055 Comment VMusage 14960 69346 FontName Helvetica-Oblique FullName Helvetica Oblique FamilyName Helvetica Weight Medium ItalicAngle -12 IsFixedPitch false FontBBox -170 -225 1116 931 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 718 XHeight 523 Ascender 718 Descender -207 StdHW 76 StdVW 88 StartCharMetrics 361 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 278 ; N exclam ; B 90 0 340 718 ; C 34 ; WX 355 ; N quotedbl ; B 168 463 438 718 ; C 35 ; WX 556 ; N numbersign ; B 73 0 631 688 ; C 36 ; WX 556 ; N dollar ; B 69 -115 617 775 ; C 37 ; WX 889 ; N percent ; B 147 -19 889 703 ; C 38 ; WX 667 ; N ampersand ; B 77 -15 647 718 ; C 39 ; WX 222 ; N quoteright ; B 151 463 310 718 ; C 40 ; WX 333 ; N parenleft ; B 108 -207 454 733 ; C 41 ; WX 333 ; N parenright ; B -9 -207 337 733 ; C 42 ; WX 389 ; N asterisk ; B 165 431 475 718 ; C 43 ; WX 584 ; N plus ; B 85 0 606 505 ; C 44 ; WX 278 ; N comma ; B 56 -147 214 106 ; C 45 ; WX 333 ; N hyphen ; B 93 232 357 322 ; C 46 ; WX 278 ; N period ; B 87 0 214 106 ; C 47 ; WX 278 ; N slash ; B -21 -19 452 737 ; C 48 ; WX 556 ; N zero ; B 93 -19 608 703 ; C 49 ; WX 556 ; N one ; B 207 0 508 703 ; C 50 ; WX 556 ; N two ; B 26 0 617 703 ; C 51 ; WX 556 ; N three ; B 75 -19 610 703 ; C 52 ; WX 556 ; N four ; B 61 0 576 703 ; C 53 ; WX 556 ; N five ; B 68 -19 621 688 ; C 54 ; WX 556 ; N six ; B 91 -19 615 703 ; C 55 ; WX 556 ; N seven ; B 137 0 669 688 ; C 56 ; WX 556 ; N eight ; B 74 -19 607 703 ; C 57 ; WX 556 ; N nine ; B 82 -19 609 703 ; C 58 ; WX 278 ; N colon ; B 87 0 301 516 ; C 59 ; WX 278 ; N semicolon ; B 56 -147 301 516 ; C 60 ; WX 584 ; N less ; B 94 11 641 495 ; C 61 ; WX 584 ; N equal ; B 63 115 628 390 ; C 62 ; WX 584 ; N greater ; B 50 11 597 495 ; C 63 ; WX 556 ; N question ; B 161 0 610 727 ; C 64 ; WX 1015 ; N at ; B 215 -19 965 737 ; C 65 ; WX 667 ; N A ; B 14 0 654 718 ; C 66 ; WX 667 ; N B ; B 74 0 712 718 ; C 67 ; WX 722 ; N C ; B 108 -19 782 737 ; C 68 ; WX 722 ; N D ; B 81 0 764 718 ; C 69 ; WX 667 ; N E ; B 86 0 762 718 ; C 70 ; WX 611 ; N F ; B 86 0 736 718 ; C 71 ; WX 778 ; N G ; B 111 -19 799 737 ; C 72 ; WX 722 ; N H ; B 77 0 799 718 ; C 73 ; WX 278 ; N I ; B 91 0 341 718 ; C 74 ; WX 500 ; N J ; B 47 -19 581 718 ; C 75 ; WX 667 ; N K ; B 76 0 808 718 ; C 76 ; WX 556 ; N L ; B 76 0 555 718 ; C 77 ; WX 833 ; N M ; B 73 0 914 718 ; C 78 ; WX 722 ; N N ; B 76 0 799 718 ; C 79 ; WX 778 ; N O ; B 105 -19 826 737 ; C 80 ; WX 667 ; N P ; B 86 0 737 718 ; C 81 ; WX 778 ; N Q ; B 105 -56 826 737 ; C 82 ; WX 722 ; N R ; B 88 0 773 718 ; C 83 ; WX 667 ; N S ; B 90 -19 713 737 ; C 84 ; WX 611 ; N T ; B 148 0 750 718 ; C 85 ; WX 722 ; N U ; B 123 -19 797 718 ; C 86 ; WX 667 ; N V ; B 173 0 800 718 ; C 87 ; WX 944 ; N W ; B 169 0 1081 718 ; C 88 ; WX 667 ; N X ; B 19 0 790 718 ; C 89 ; WX 667 ; N Y ; B 167 0 806 718 ; C 90 ; WX 611 ; N Z ; B 23 0 741 718 ; C 91 ; WX 278 ; N bracketleft ; B 21 -196 403 722 ; C 92 ; WX 278 ; N backslash ; B 140 -19 291 737 ; C 93 ; WX 278 ; N bracketright ; B -14 -196 368 722 ; C 94 ; WX 469 ; N asciicircum ; B 42 264 539 688 ; C 95 ; WX 556 ; N underscore ; B -27 -125 540 -75 ; C 96 ; WX 222 ; N quoteleft ; B 165 470 323 725 ; C 97 ; WX 556 ; N a ; B 61 -15 559 538 ; C 98 ; WX 556 ; N b ; B 58 -15 584 718 ; C 99 ; WX 500 ; N c ; B 74 -15 553 538 ; C 100 ; WX 556 ; N d ; B 84 -15 652 718 ; C 101 ; WX 556 ; N e ; B 84 -15 578 538 ; C 102 ; WX 278 ; N f ; B 86 0 416 728 ; L i fi ; L l fl ; C 103 ; WX 556 ; N g ; B 42 -220 610 538 ; C 104 ; WX 556 ; N h ; B 65 0 573 718 ; C 105 ; WX 222 ; N i ; B 67 0 308 718 ; C 106 ; WX 222 ; N j ; B -60 -210 308 718 ; C 107 ; WX 500 ; N k ; B 67 0 600 718 ; C 108 ; WX 222 ; N l ; B 67 0 308 718 ; C 109 ; WX 833 ; N m ; B 65 0 852 538 ; C 110 ; WX 556 ; N n ; B 65 0 573 538 ; C 111 ; WX 556 ; N o ; B 83 -14 585 538 ; C 112 ; WX 556 ; N p ; B 14 -207 584 538 ; C 113 ; WX 556 ; N q ; B 84 -207 605 538 ; C 114 ; WX 333 ; N r ; B 77 0 446 538 ; C 115 ; WX 500 ; N s ; B 63 -15 529 538 ; C 116 ; WX 278 ; N t ; B 102 -7 368 669 ; C 117 ; WX 556 ; N u ; B 94 -15 600 523 ; C 118 ; WX 500 ; N v ; B 119 0 603 523 ; C 119 ; WX 722 ; N w ; B 125 0 820 523 ; C 120 ; WX 500 ; N x ; B 11 0 594 523 ; C 121 ; WX 500 ; N y ; B 15 -214 600 523 ; C 122 ; WX 500 ; N z ; B 31 0 571 523 ; C 123 ; WX 334 ; N braceleft ; B 92 -196 445 722 ; C 124 ; WX 260 ; N bar ; B 46 -225 332 775 ; C 125 ; WX 334 ; N braceright ; B 0 -196 354 722 ; C 126 ; WX 584 ; N asciitilde ; B 111 180 580 326 ; C 160 ; WX 278 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 333 ; N exclamdown ; B 77 -195 326 523 ; C 162 ; WX 556 ; N cent ; B 95 -115 584 623 ; C 163 ; WX 556 ; N sterling ; B 49 -16 634 718 ; C 164 ; WX 167 ; N fraction ; B -170 -19 482 703 ; C 165 ; WX 556 ; N yen ; B 81 0 699 688 ; C 166 ; WX 556 ; N florin ; B -52 -207 654 737 ; C 167 ; WX 556 ; N section ; B 76 -191 584 737 ; C 168 ; WX 556 ; N currency ; B 60 99 646 603 ; C 169 ; WX 191 ; N quotesingle ; B 157 463 285 718 ; C 170 ; WX 333 ; N quotedblleft ; B 138 470 461 725 ; C 171 ; WX 556 ; N guillemotleft ; B 146 108 554 446 ; C 172 ; WX 333 ; N guilsinglleft ; B 137 108 340 446 ; C 173 ; WX 333 ; N guilsinglright ; B 111 108 314 446 ; C 174 ; WX 500 ; N fi ; B 86 0 587 728 ; C 175 ; WX 500 ; N fl ; B 86 0 585 728 ; C 177 ; WX 556 ; N endash ; B 51 240 623 313 ; C 178 ; WX 556 ; N dagger ; B 135 -159 622 718 ; C 179 ; WX 556 ; N daggerdbl ; B 52 -159 623 718 ; C 180 ; WX 278 ; N periodcentered ; B 129 190 257 315 ; C 182 ; WX 537 ; N paragraph ; B 126 -173 650 718 ; C 183 ; WX 350 ; N bullet ; B 91 202 413 517 ; C 184 ; WX 222 ; N quotesinglbase ; B 21 -149 180 106 ; C 185 ; WX 333 ; N quotedblbase ; B -6 -149 318 106 ; C 186 ; WX 333 ; N quotedblright ; B 124 463 448 718 ; C 187 ; WX 556 ; N guillemotright ; B 120 108 528 446 ; C 188 ; WX 1000 ; N ellipsis ; B 115 0 908 106 ; C 189 ; WX 1000 ; N perthousand ; B 88 -19 1029 703 ; C 191 ; WX 611 ; N questiondown ; B 85 -201 534 525 ; C 193 ; WX 333 ; N grave ; B 170 593 337 734 ; C 194 ; WX 333 ; N acute ; B 248 593 475 734 ; C 195 ; WX 333 ; N circumflex ; B 147 593 438 734 ; C 196 ; WX 333 ; N tilde ; B 125 606 490 722 ; C 197 ; WX 333 ; N macron ; B 143 627 468 684 ; C 198 ; WX 333 ; N breve ; B 167 595 476 731 ; C 199 ; WX 333 ; N dotaccent ; B 249 604 362 706 ; C 200 ; WX 333 ; N dieresis ; B 168 604 443 706 ; C 202 ; WX 333 ; N ring ; B 214 572 402 756 ; C 203 ; WX 333 ; N cedilla ; B 2 -225 232 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 157 593 565 734 ; C 206 ; WX 333 ; N ogonek ; B 43 -225 249 0 ; C 207 ; WX 333 ; N caron ; B 177 593 468 734 ; C 208 ; WX 1000 ; N emdash ; B 51 240 1067 313 ; C 225 ; WX 1000 ; N AE ; B 8 0 1097 718 ; C 227 ; WX 370 ; N ordfeminine ; B 127 405 449 737 ; C 232 ; WX 556 ; N Lslash ; B 41 0 555 718 ; C 233 ; WX 778 ; N Oslash ; B 43 -19 890 737 ; C 234 ; WX 1000 ; N OE ; B 98 -19 1116 737 ; C 235 ; WX 365 ; N ordmasculine ; B 141 405 468 737 ; C 241 ; WX 889 ; N ae ; B 61 -15 909 538 ; C 245 ; WX 278 ; N dotlessi ; B 95 0 294 523 ; C 248 ; WX 222 ; N lslash ; B 41 0 347 718 ; C 249 ; WX 611 ; N oslash ; B 29 -22 647 545 ; C 250 ; WX 944 ; N oe ; B 83 -15 964 538 ; C 251 ; WX 611 ; N germandbls ; B 67 -15 658 728 ; C -1 ; WX 278 ; N Idieresis ; B 91 0 458 901 ; C -1 ; WX 556 ; N eacute ; B 84 -15 587 734 ; C -1 ; WX 556 ; N abreve ; B 61 -15 578 731 ; C -1 ; WX 556 ; N uhungarumlaut ; B 94 -15 677 734 ; C -1 ; WX 556 ; N ecaron ; B 84 -15 580 734 ; C -1 ; WX 667 ; N Ydieresis ; B 167 0 806 901 ; C -1 ; WX 584 ; N divide ; B 85 -19 606 524 ; C -1 ; WX 667 ; N Yacute ; B 167 0 806 929 ; C -1 ; WX 667 ; N Acircumflex ; B 14 0 654 929 ; C -1 ; WX 556 ; N aacute ; B 61 -15 587 734 ; C -1 ; WX 722 ; N Ucircumflex ; B 123 -19 797 929 ; C -1 ; WX 500 ; N yacute ; B 15 -214 600 734 ; C -1 ; WX 500 ; N scommaaccent ; B 63 -225 529 538 ; C -1 ; WX 556 ; N ecircumflex ; B 84 -15 578 734 ; C -1 ; WX 722 ; N Uring ; B 123 -19 797 931 ; C -1 ; WX 722 ; N Udieresis ; B 123 -19 797 901 ; C -1 ; WX 556 ; N aogonek ; B 61 -220 559 538 ; C -1 ; WX 722 ; N Uacute ; B 123 -19 797 929 ; C -1 ; WX 556 ; N uogonek ; B 94 -225 600 523 ; C -1 ; WX 667 ; N Edieresis ; B 86 0 762 901 ; C -1 ; WX 722 ; N Dcroat ; B 69 0 764 718 ; C -1 ; WX 250 ; N commaaccent ; B 39 -225 172 -40 ; C -1 ; WX 737 ; N copyright ; B 54 -19 837 737 ; C -1 ; WX 667 ; N Emacron ; B 86 0 762 879 ; C -1 ; WX 500 ; N ccaron ; B 74 -15 553 734 ; C -1 ; WX 556 ; N aring ; B 61 -15 559 756 ; C -1 ; WX 722 ; N Ncommaaccent ; B 76 -225 799 718 ; C -1 ; WX 222 ; N lacute ; B 67 0 461 929 ; C -1 ; WX 556 ; N agrave ; B 61 -15 559 734 ; C -1 ; WX 611 ; N Tcommaaccent ; B 148 -225 750 718 ; C -1 ; WX 722 ; N Cacute ; B 108 -19 782 929 ; C -1 ; WX 556 ; N atilde ; B 61 -15 592 722 ; C -1 ; WX 667 ; N Edotaccent ; B 86 0 762 901 ; C -1 ; WX 500 ; N scaron ; B 63 -15 552 734 ; C -1 ; WX 500 ; N scedilla ; B 63 -225 529 538 ; C -1 ; WX 278 ; N iacute ; B 95 0 448 734 ; C -1 ; WX 471 ; N lozenge ; B 88 0 540 728 ; C -1 ; WX 722 ; N Rcaron ; B 88 0 773 929 ; C -1 ; WX 778 ; N Gcommaaccent ; B 111 -225 799 737 ; C -1 ; WX 556 ; N ucircumflex ; B 94 -15 600 734 ; C -1 ; WX 556 ; N acircumflex ; B 61 -15 559 734 ; C -1 ; WX 667 ; N Amacron ; B 14 0 677 879 ; C -1 ; WX 333 ; N rcaron ; B 77 0 508 734 ; C -1 ; WX 500 ; N ccedilla ; B 74 -225 553 538 ; C -1 ; WX 611 ; N Zdotaccent ; B 23 0 741 901 ; C -1 ; WX 667 ; N Thorn ; B 86 0 712 718 ; C -1 ; WX 778 ; N Omacron ; B 105 -19 826 879 ; C -1 ; WX 722 ; N Racute ; B 88 0 773 929 ; C -1 ; WX 667 ; N Sacute ; B 90 -19 713 929 ; C -1 ; WX 643 ; N dcaron ; B 84 -15 808 718 ; C -1 ; WX 722 ; N Umacron ; B 123 -19 797 879 ; C -1 ; WX 556 ; N uring ; B 94 -15 600 756 ; C -1 ; WX 333 ; N threesuperior ; B 90 270 436 703 ; C -1 ; WX 778 ; N Ograve ; B 105 -19 826 929 ; C -1 ; WX 667 ; N Agrave ; B 14 0 654 929 ; C -1 ; WX 667 ; N Abreve ; B 14 0 685 926 ; C -1 ; WX 584 ; N multiply ; B 50 0 642 506 ; C -1 ; WX 556 ; N uacute ; B 94 -15 600 734 ; C -1 ; WX 611 ; N Tcaron ; B 148 0 750 929 ; C -1 ; WX 476 ; N partialdiff ; B 41 -38 550 714 ; C -1 ; WX 500 ; N ydieresis ; B 15 -214 600 706 ; C -1 ; WX 722 ; N Nacute ; B 76 0 799 929 ; C -1 ; WX 278 ; N icircumflex ; B 95 0 411 734 ; C -1 ; WX 667 ; N Ecircumflex ; B 86 0 762 929 ; C -1 ; WX 556 ; N adieresis ; B 61 -15 559 706 ; C -1 ; WX 556 ; N edieresis ; B 84 -15 578 706 ; C -1 ; WX 500 ; N cacute ; B 74 -15 559 734 ; C -1 ; WX 556 ; N nacute ; B 65 0 587 734 ; C -1 ; WX 556 ; N umacron ; B 94 -15 600 684 ; C -1 ; WX 722 ; N Ncaron ; B 76 0 799 929 ; C -1 ; WX 278 ; N Iacute ; B 91 0 489 929 ; C -1 ; WX 584 ; N plusminus ; B 39 0 618 506 ; C -1 ; WX 260 ; N brokenbar ; B 62 -150 316 700 ; C -1 ; WX 737 ; N registered ; B 54 -19 837 737 ; C -1 ; WX 778 ; N Gbreve ; B 111 -19 799 926 ; C -1 ; WX 278 ; N Idotaccent ; B 91 0 377 901 ; C -1 ; WX 600 ; N summation ; B 15 -10 671 706 ; C -1 ; WX 667 ; N Egrave ; B 86 0 762 929 ; C -1 ; WX 333 ; N racute ; B 77 0 475 734 ; C -1 ; WX 556 ; N omacron ; B 83 -14 585 684 ; C -1 ; WX 611 ; N Zacute ; B 23 0 741 929 ; C -1 ; WX 611 ; N Zcaron ; B 23 0 741 929 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 620 674 ; C -1 ; WX 722 ; N Eth ; B 69 0 764 718 ; C -1 ; WX 722 ; N Ccedilla ; B 108 -225 782 737 ; C -1 ; WX 222 ; N lcommaaccent ; B 25 -225 308 718 ; C -1 ; WX 317 ; N tcaron ; B 102 -7 501 808 ; C -1 ; WX 556 ; N eogonek ; B 84 -225 578 538 ; C -1 ; WX 722 ; N Uogonek ; B 123 -225 797 718 ; C -1 ; WX 667 ; N Aacute ; B 14 0 683 929 ; C -1 ; WX 667 ; N Adieresis ; B 14 0 654 901 ; C -1 ; WX 556 ; N egrave ; B 84 -15 578 734 ; C -1 ; WX 500 ; N zacute ; B 31 0 571 734 ; C -1 ; WX 222 ; N iogonek ; B -61 -225 308 718 ; C -1 ; WX 778 ; N Oacute ; B 105 -19 826 929 ; C -1 ; WX 556 ; N oacute ; B 83 -14 587 734 ; C -1 ; WX 556 ; N amacron ; B 61 -15 580 684 ; C -1 ; WX 500 ; N sacute ; B 63 -15 559 734 ; C -1 ; WX 278 ; N idieresis ; B 95 0 416 706 ; C -1 ; WX 778 ; N Ocircumflex ; B 105 -19 826 929 ; C -1 ; WX 722 ; N Ugrave ; B 123 -19 797 929 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 556 ; N thorn ; B 14 -207 584 718 ; C -1 ; WX 333 ; N twosuperior ; B 64 281 449 703 ; C -1 ; WX 778 ; N Odieresis ; B 105 -19 826 901 ; C -1 ; WX 556 ; N mu ; B 24 -207 600 523 ; C -1 ; WX 278 ; N igrave ; B 95 0 310 734 ; C -1 ; WX 556 ; N ohungarumlaut ; B 83 -14 677 734 ; C -1 ; WX 667 ; N Eogonek ; B 86 -220 762 718 ; C -1 ; WX 556 ; N dcroat ; B 84 -15 689 718 ; C -1 ; WX 834 ; N threequarters ; B 130 -19 861 703 ; C -1 ; WX 667 ; N Scedilla ; B 90 -225 713 737 ; C -1 ; WX 299 ; N lcaron ; B 67 0 464 718 ; C -1 ; WX 667 ; N Kcommaaccent ; B 76 -225 808 718 ; C -1 ; WX 556 ; N Lacute ; B 76 0 555 929 ; C -1 ; WX 1000 ; N trademark ; B 186 306 1056 718 ; C -1 ; WX 556 ; N edotaccent ; B 84 -15 578 706 ; C -1 ; WX 278 ; N Igrave ; B 91 0 351 929 ; C -1 ; WX 278 ; N Imacron ; B 91 0 483 879 ; C -1 ; WX 556 ; N Lcaron ; B 76 0 570 718 ; C -1 ; WX 834 ; N onehalf ; B 114 -19 839 703 ; C -1 ; WX 549 ; N lessequal ; B 26 0 666 674 ; C -1 ; WX 556 ; N ocircumflex ; B 83 -14 585 734 ; C -1 ; WX 556 ; N ntilde ; B 65 0 592 722 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 123 -19 801 929 ; C -1 ; WX 667 ; N Eacute ; B 86 0 762 929 ; C -1 ; WX 556 ; N emacron ; B 84 -15 580 684 ; C -1 ; WX 556 ; N gbreve ; B 42 -220 610 731 ; C -1 ; WX 834 ; N onequarter ; B 150 -19 802 703 ; C -1 ; WX 667 ; N Scaron ; B 90 -19 713 929 ; C -1 ; WX 667 ; N Scommaaccent ; B 90 -225 713 737 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 105 -19 829 929 ; C -1 ; WX 400 ; N degree ; B 169 411 468 703 ; C -1 ; WX 556 ; N ograve ; B 83 -14 585 734 ; C -1 ; WX 722 ; N Ccaron ; B 108 -19 782 929 ; C -1 ; WX 556 ; N ugrave ; B 94 -15 600 734 ; C -1 ; WX 453 ; N radical ; B 79 -80 617 762 ; C -1 ; WX 722 ; N Dcaron ; B 81 0 764 929 ; C -1 ; WX 333 ; N rcommaaccent ; B 30 -225 446 538 ; C -1 ; WX 722 ; N Ntilde ; B 76 0 799 917 ; C -1 ; WX 556 ; N otilde ; B 83 -14 602 722 ; C -1 ; WX 722 ; N Rcommaaccent ; B 88 -225 773 718 ; C -1 ; WX 556 ; N Lcommaaccent ; B 76 -225 555 718 ; C -1 ; WX 667 ; N Atilde ; B 14 0 699 917 ; C -1 ; WX 667 ; N Aogonek ; B 14 -225 654 718 ; C -1 ; WX 667 ; N Aring ; B 14 0 654 931 ; C -1 ; WX 778 ; N Otilde ; B 105 -19 826 917 ; C -1 ; WX 500 ; N zdotaccent ; B 31 0 571 706 ; C -1 ; WX 667 ; N Ecaron ; B 86 0 762 929 ; C -1 ; WX 278 ; N Iogonek ; B -33 -225 341 718 ; C -1 ; WX 500 ; N kcommaaccent ; B 67 -225 600 718 ; C -1 ; WX 584 ; N minus ; B 85 216 606 289 ; C -1 ; WX 278 ; N Icircumflex ; B 91 0 452 929 ; C -1 ; WX 556 ; N ncaron ; B 65 0 580 734 ; C -1 ; WX 278 ; N tcommaaccent ; B 63 -225 368 669 ; C -1 ; WX 584 ; N logicalnot ; B 106 108 628 390 ; C -1 ; WX 556 ; N odieresis ; B 83 -14 585 706 ; C -1 ; WX 556 ; N udieresis ; B 94 -15 600 706 ; C -1 ; WX 549 ; N notequal ; B 34 -35 623 551 ; C -1 ; WX 556 ; N gcommaaccent ; B 42 -220 610 822 ; C -1 ; WX 556 ; N eth ; B 81 -15 617 737 ; C -1 ; WX 500 ; N zcaron ; B 31 0 571 734 ; C -1 ; WX 556 ; N ncommaaccent ; B 65 -225 573 538 ; C -1 ; WX 333 ; N onesuperior ; B 166 281 371 703 ; C -1 ; WX 278 ; N imacron ; B 95 0 417 684 ; C -1 ; WX 556 ; N Euro ; B 0 0 0 0 ; C -1 ; WX 722 ; N Ccircumflex ; B 112 -23 770 979 ; C -1 ; WX 500 ; N ccircumflex ; B 76 -23 554 774 ; C -1 ; WX 722 ; N Cdotaccent ; B 112 -23 770 932 ; C -1 ; WX 500 ; N cdotaccent ; B 76 -23 554 727 ; C -1 ; WX 667 ; N Ebreve ; B 90 0 751 964 ; C -1 ; WX 556 ; N ebreve ; B 84 -23 592 759 ; C -1 ; WX 778 ; N Gcircumflex ; B 109 -23 809 979 ; C -1 ; WX 556 ; N gcircumflex ; B 32 -218 601 774 ; C -1 ; WX 778 ; N Gdotaccent ; B 109 -23 809 932 ; C -1 ; WX 556 ; N gdotaccent ; B 32 -218 601 727 ; C -1 ; WX 722 ; N Hcircumflex ; B 83 0 799 979 ; C -1 ; WX 556 ; N hcircumflex ; B 70 0 600 979 ; C -1 ; WX 772 ; N Hbar ; B 103 0 864 729 ; C -1 ; WX 575 ; N hbar ; B 89 0 593 729 ; C -1 ; WX 278 ; N Itilde ; B 100 0 505 937 ; C -1 ; WX 278 ; N itilde ; B 94 0 451 732 ; C -1 ; WX 278 ; N Ibreve ; B 100 0 503 964 ; C -1 ; WX 278 ; N ibreve ; B 94 0 448 759 ; C -1 ; WX 742 ; N IJ ; B 100 -23 812 729 ; C -1 ; WX 362 ; N ij ; B 66 -218 443 729 ; C -1 ; WX 500 ; N Jcircumflex ; B 47 -23 693 951 ; C -1 ; WX 222 ; N jcircumflex ; B -65 -218 387 828 ; C -1 ; WX 510 ; N kgreenlandic ; B 70 0 593 524 ; C -1 ; WX 556 ; N Ldot ; B 80 0 551 729 ; C -1 ; WX 500 ; N ldot ; B 68 0 445 729 ; C -1 ; WX 556 ; N napostrophe ; B 70 0 574 788 ; C -1 ; WX 722 ; N Eng ; B 76 -156 801 729 ; C -1 ; WX 556 ; N eng ; B 70 -126 574 539 ; C -1 ; WX 778 ; N Obreve ; B 104 -23 828 964 ; C -1 ; WX 556 ; N obreve ; B 80 -23 585 759 ; C -1 ; WX 667 ; N Scircumflex ; B 89 -23 714 979 ; C -1 ; WX 500 ; N scircumflex ; B 61 -23 521 774 ; C -1 ; WX 611 ; N Tbar ; B 158 0 748 729 ; C -1 ; WX 278 ; N tbar ; B 66 -23 366 668 ; C -1 ; WX 611 ; N Tcedilla ; B 148 -225 750 718 ; C -1 ; WX 278 ; N tcedilla ; B 63 -225 368 669 ; C -1 ; WX 722 ; N Utilde ; B 124 -23 800 937 ; C -1 ; WX 556 ; N utilde ; B 88 -23 594 732 ; C -1 ; WX 722 ; N Ubreve ; B 124 -23 800 964 ; C -1 ; WX 556 ; N ubreve ; B 88 -23 594 759 ; C -1 ; WX 944 ; N Wcircumflex ; B 177 0 1084 979 ; C -1 ; WX 722 ; N wcircumflex ; B 118 0 820 774 ; C -1 ; WX 667 ; N Ycircumflex ; B 168 0 816 979 ; C -1 ; WX 500 ; N ycircumflex ; B 8 -218 590 774 ; C -1 ; WX 278 ; N longs ; B 89 0 413 732 ; C -1 ; WX 838 ; N infinity ; B 79 119 898 547 ; EndCharMetrics StartKernData StartKernPairs 2705 KPX A C -30 KPX A Cacute -30 KPX A Ccaron -30 KPX A Ccedilla -30 KPX A G -30 KPX A Gbreve -30 KPX A Gcommaaccent -30 KPX A O -30 KPX A Oacute -30 KPX A Ocircumflex -30 KPX A Odieresis -30 KPX A Ograve -30 KPX A Ohungarumlaut -30 KPX A Omacron -30 KPX A Oslash -30 KPX A Otilde -30 KPX A Q -30 KPX A T -120 KPX A Tcaron -120 KPX A Tcommaaccent -120 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -70 KPX A W -50 KPX A Y -100 KPX A Yacute -100 KPX A Ydieresis -100 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -40 KPX A w -40 KPX A y -40 KPX A yacute -40 KPX A ydieresis -40 KPX Aacute C -30 KPX Aacute Cacute -30 KPX Aacute Ccaron -30 KPX Aacute Ccedilla -30 KPX Aacute G -30 KPX Aacute Gbreve -30 KPX Aacute Gcommaaccent -30 KPX Aacute O -30 KPX Aacute Oacute -30 KPX Aacute Ocircumflex -30 KPX Aacute Odieresis -30 KPX Aacute Ograve -30 KPX Aacute Ohungarumlaut -30 KPX Aacute Omacron -30 KPX Aacute Oslash -30 KPX Aacute Otilde -30 KPX Aacute Q -30 KPX Aacute T -120 KPX Aacute Tcaron -120 KPX Aacute Tcommaaccent -120 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -70 KPX Aacute W -50 KPX Aacute Y -100 KPX Aacute Yacute -100 KPX Aacute Ydieresis -100 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -40 KPX Aacute w -40 KPX Aacute y -40 KPX Aacute yacute -40 KPX Aacute ydieresis -40 KPX Abreve C -30 KPX Abreve Cacute -30 KPX Abreve Ccaron -30 KPX Abreve Ccedilla -30 KPX Abreve G -30 KPX Abreve Gbreve -30 KPX Abreve Gcommaaccent -30 KPX Abreve O -30 KPX Abreve Oacute -30 KPX Abreve Ocircumflex -30 KPX Abreve Odieresis -30 KPX Abreve Ograve -30 KPX Abreve Ohungarumlaut -30 KPX Abreve Omacron -30 KPX Abreve Oslash -30 KPX Abreve Otilde -30 KPX Abreve Q -30 KPX Abreve T -120 KPX Abreve Tcaron -120 KPX Abreve Tcommaaccent -120 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -70 KPX Abreve W -50 KPX Abreve Y -100 KPX Abreve Yacute -100 KPX Abreve Ydieresis -100 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -40 KPX Abreve w -40 KPX Abreve y -40 KPX Abreve yacute -40 KPX Abreve ydieresis -40 KPX Acircumflex C -30 KPX Acircumflex Cacute -30 KPX Acircumflex Ccaron -30 KPX Acircumflex Ccedilla -30 KPX Acircumflex G -30 KPX Acircumflex Gbreve -30 KPX Acircumflex Gcommaaccent -30 KPX Acircumflex O -30 KPX Acircumflex Oacute -30 KPX Acircumflex Ocircumflex -30 KPX Acircumflex Odieresis -30 KPX Acircumflex Ograve -30 KPX Acircumflex Ohungarumlaut -30 KPX Acircumflex Omacron -30 KPX Acircumflex Oslash -30 KPX Acircumflex Otilde -30 KPX Acircumflex Q -30 KPX Acircumflex T -120 KPX Acircumflex Tcaron -120 KPX Acircumflex Tcommaaccent -120 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -70 KPX Acircumflex W -50 KPX Acircumflex Y -100 KPX Acircumflex Yacute -100 KPX Acircumflex Ydieresis -100 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -40 KPX Acircumflex w -40 KPX Acircumflex y -40 KPX Acircumflex yacute -40 KPX Acircumflex ydieresis -40 KPX Adieresis C -30 KPX Adieresis Cacute -30 KPX Adieresis Ccaron -30 KPX Adieresis Ccedilla -30 KPX Adieresis G -30 KPX Adieresis Gbreve -30 KPX Adieresis Gcommaaccent -30 KPX Adieresis O -30 KPX Adieresis Oacute -30 KPX Adieresis Ocircumflex -30 KPX Adieresis Odieresis -30 KPX Adieresis Ograve -30 KPX Adieresis Ohungarumlaut -30 KPX Adieresis Omacron -30 KPX Adieresis Oslash -30 KPX Adieresis Otilde -30 KPX Adieresis Q -30 KPX Adieresis T -120 KPX Adieresis Tcaron -120 KPX Adieresis Tcommaaccent -120 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -70 KPX Adieresis W -50 KPX Adieresis Y -100 KPX Adieresis Yacute -100 KPX Adieresis Ydieresis -100 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -40 KPX Adieresis w -40 KPX Adieresis y -40 KPX Adieresis yacute -40 KPX Adieresis ydieresis -40 KPX Agrave C -30 KPX Agrave Cacute -30 KPX Agrave Ccaron -30 KPX Agrave Ccedilla -30 KPX Agrave G -30 KPX Agrave Gbreve -30 KPX Agrave Gcommaaccent -30 KPX Agrave O -30 KPX Agrave Oacute -30 KPX Agrave Ocircumflex -30 KPX Agrave Odieresis -30 KPX Agrave Ograve -30 KPX Agrave Ohungarumlaut -30 KPX Agrave Omacron -30 KPX Agrave Oslash -30 KPX Agrave Otilde -30 KPX Agrave Q -30 KPX Agrave T -120 KPX Agrave Tcaron -120 KPX Agrave Tcommaaccent -120 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -70 KPX Agrave W -50 KPX Agrave Y -100 KPX Agrave Yacute -100 KPX Agrave Ydieresis -100 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -40 KPX Agrave w -40 KPX Agrave y -40 KPX Agrave yacute -40 KPX Agrave ydieresis -40 KPX Amacron C -30 KPX Amacron Cacute -30 KPX Amacron Ccaron -30 KPX Amacron Ccedilla -30 KPX Amacron G -30 KPX Amacron Gbreve -30 KPX Amacron Gcommaaccent -30 KPX Amacron O -30 KPX Amacron Oacute -30 KPX Amacron Ocircumflex -30 KPX Amacron Odieresis -30 KPX Amacron Ograve -30 KPX Amacron Ohungarumlaut -30 KPX Amacron Omacron -30 KPX Amacron Oslash -30 KPX Amacron Otilde -30 KPX Amacron Q -30 KPX Amacron T -120 KPX Amacron Tcaron -120 KPX Amacron Tcommaaccent -120 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -70 KPX Amacron W -50 KPX Amacron Y -100 KPX Amacron Yacute -100 KPX Amacron Ydieresis -100 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -40 KPX Amacron w -40 KPX Amacron y -40 KPX Amacron yacute -40 KPX Amacron ydieresis -40 KPX Aogonek C -30 KPX Aogonek Cacute -30 KPX Aogonek Ccaron -30 KPX Aogonek Ccedilla -30 KPX Aogonek G -30 KPX Aogonek Gbreve -30 KPX Aogonek Gcommaaccent -30 KPX Aogonek O -30 KPX Aogonek Oacute -30 KPX Aogonek Ocircumflex -30 KPX Aogonek Odieresis -30 KPX Aogonek Ograve -30 KPX Aogonek Ohungarumlaut -30 KPX Aogonek Omacron -30 KPX Aogonek Oslash -30 KPX Aogonek Otilde -30 KPX Aogonek Q -30 KPX Aogonek T -120 KPX Aogonek Tcaron -120 KPX Aogonek Tcommaaccent -120 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -70 KPX Aogonek W -50 KPX Aogonek Y -100 KPX Aogonek Yacute -100 KPX Aogonek Ydieresis -100 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -40 KPX Aogonek w -40 KPX Aogonek y -40 KPX Aogonek yacute -40 KPX Aogonek ydieresis -40 KPX Aring C -30 KPX Aring Cacute -30 KPX Aring Ccaron -30 KPX Aring Ccedilla -30 KPX Aring G -30 KPX Aring Gbreve -30 KPX Aring Gcommaaccent -30 KPX Aring O -30 KPX Aring Oacute -30 KPX Aring Ocircumflex -30 KPX Aring Odieresis -30 KPX Aring Ograve -30 KPX Aring Ohungarumlaut -30 KPX Aring Omacron -30 KPX Aring Oslash -30 KPX Aring Otilde -30 KPX Aring Q -30 KPX Aring T -120 KPX Aring Tcaron -120 KPX Aring Tcommaaccent -120 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -70 KPX Aring W -50 KPX Aring Y -100 KPX Aring Yacute -100 KPX Aring Ydieresis -100 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -40 KPX Aring w -40 KPX Aring y -40 KPX Aring yacute -40 KPX Aring ydieresis -40 KPX Atilde C -30 KPX Atilde Cacute -30 KPX Atilde Ccaron -30 KPX Atilde Ccedilla -30 KPX Atilde G -30 KPX Atilde Gbreve -30 KPX Atilde Gcommaaccent -30 KPX Atilde O -30 KPX Atilde Oacute -30 KPX Atilde Ocircumflex -30 KPX Atilde Odieresis -30 KPX Atilde Ograve -30 KPX Atilde Ohungarumlaut -30 KPX Atilde Omacron -30 KPX Atilde Oslash -30 KPX Atilde Otilde -30 KPX Atilde Q -30 KPX Atilde T -120 KPX Atilde Tcaron -120 KPX Atilde Tcommaaccent -120 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -70 KPX Atilde W -50 KPX Atilde Y -100 KPX Atilde Yacute -100 KPX Atilde Ydieresis -100 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -40 KPX Atilde w -40 KPX Atilde y -40 KPX Atilde yacute -40 KPX Atilde ydieresis -40 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX B comma -20 KPX B period -20 KPX C comma -30 KPX C period -30 KPX Cacute comma -30 KPX Cacute period -30 KPX Ccaron comma -30 KPX Ccaron period -30 KPX Ccedilla comma -30 KPX Ccedilla period -30 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -70 KPX D W -40 KPX D Y -90 KPX D Yacute -90 KPX D Ydieresis -90 KPX D comma -70 KPX D period -70 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -70 KPX Dcaron W -40 KPX Dcaron Y -90 KPX Dcaron Yacute -90 KPX Dcaron Ydieresis -90 KPX Dcaron comma -70 KPX Dcaron period -70 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -70 KPX Dcroat W -40 KPX Dcroat Y -90 KPX Dcroat Yacute -90 KPX Dcroat Ydieresis -90 KPX Dcroat comma -70 KPX Dcroat period -70 KPX F A -80 KPX F Aacute -80 KPX F Abreve -80 KPX F Acircumflex -80 KPX F Adieresis -80 KPX F Agrave -80 KPX F Amacron -80 KPX F Aogonek -80 KPX F Aring -80 KPX F Atilde -80 KPX F a -50 KPX F aacute -50 KPX F abreve -50 KPX F acircumflex -50 KPX F adieresis -50 KPX F agrave -50 KPX F amacron -50 KPX F aogonek -50 KPX F aring -50 KPX F atilde -50 KPX F comma -150 KPX F e -30 KPX F eacute -30 KPX F ecaron -30 KPX F ecircumflex -30 KPX F edieresis -30 KPX F edotaccent -30 KPX F egrave -30 KPX F emacron -30 KPX F eogonek -30 KPX F o -30 KPX F oacute -30 KPX F ocircumflex -30 KPX F odieresis -30 KPX F ograve -30 KPX F ohungarumlaut -30 KPX F omacron -30 KPX F oslash -30 KPX F otilde -30 KPX F period -150 KPX F r -45 KPX F racute -45 KPX F rcaron -45 KPX F rcommaaccent -45 KPX J A -20 KPX J Aacute -20 KPX J Abreve -20 KPX J Acircumflex -20 KPX J Adieresis -20 KPX J Agrave -20 KPX J Amacron -20 KPX J Aogonek -20 KPX J Aring -20 KPX J Atilde -20 KPX J a -20 KPX J aacute -20 KPX J abreve -20 KPX J acircumflex -20 KPX J adieresis -20 KPX J agrave -20 KPX J amacron -20 KPX J aogonek -20 KPX J aring -20 KPX J atilde -20 KPX J comma -30 KPX J period -30 KPX J u -20 KPX J uacute -20 KPX J ucircumflex -20 KPX J udieresis -20 KPX J ugrave -20 KPX J uhungarumlaut -20 KPX J umacron -20 KPX J uogonek -20 KPX J uring -20 KPX K O -50 KPX K Oacute -50 KPX K Ocircumflex -50 KPX K Odieresis -50 KPX K Ograve -50 KPX K Ohungarumlaut -50 KPX K Omacron -50 KPX K Oslash -50 KPX K Otilde -50 KPX K e -40 KPX K eacute -40 KPX K ecaron -40 KPX K ecircumflex -40 KPX K edieresis -40 KPX K edotaccent -40 KPX K egrave -40 KPX K emacron -40 KPX K eogonek -40 KPX K o -40 KPX K oacute -40 KPX K ocircumflex -40 KPX K odieresis -40 KPX K ograve -40 KPX K ohungarumlaut -40 KPX K omacron -40 KPX K oslash -40 KPX K otilde -40 KPX K u -30 KPX K uacute -30 KPX K ucircumflex -30 KPX K udieresis -30 KPX K ugrave -30 KPX K uhungarumlaut -30 KPX K umacron -30 KPX K uogonek -30 KPX K uring -30 KPX K y -50 KPX K yacute -50 KPX K ydieresis -50 KPX Kcommaaccent O -50 KPX Kcommaaccent Oacute -50 KPX Kcommaaccent Ocircumflex -50 KPX Kcommaaccent Odieresis -50 KPX Kcommaaccent Ograve -50 KPX Kcommaaccent Ohungarumlaut -50 KPX Kcommaaccent Omacron -50 KPX Kcommaaccent Oslash -50 KPX Kcommaaccent Otilde -50 KPX Kcommaaccent e -40 KPX Kcommaaccent eacute -40 KPX Kcommaaccent ecaron -40 KPX Kcommaaccent ecircumflex -40 KPX Kcommaaccent edieresis -40 KPX Kcommaaccent edotaccent -40 KPX Kcommaaccent egrave -40 KPX Kcommaaccent emacron -40 KPX Kcommaaccent eogonek -40 KPX Kcommaaccent o -40 KPX Kcommaaccent oacute -40 KPX Kcommaaccent ocircumflex -40 KPX Kcommaaccent odieresis -40 KPX Kcommaaccent ograve -40 KPX Kcommaaccent ohungarumlaut -40 KPX Kcommaaccent omacron -40 KPX Kcommaaccent oslash -40 KPX Kcommaaccent otilde -40 KPX Kcommaaccent u -30 KPX Kcommaaccent uacute -30 KPX Kcommaaccent ucircumflex -30 KPX Kcommaaccent udieresis -30 KPX Kcommaaccent ugrave -30 KPX Kcommaaccent uhungarumlaut -30 KPX Kcommaaccent umacron -30 KPX Kcommaaccent uogonek -30 KPX Kcommaaccent uring -30 KPX Kcommaaccent y -50 KPX Kcommaaccent yacute -50 KPX Kcommaaccent ydieresis -50 KPX L T -110 KPX L Tcaron -110 KPX L Tcommaaccent -110 KPX L V -110 KPX L W -70 KPX L Y -140 KPX L Yacute -140 KPX L Ydieresis -140 KPX L quotedblright -140 KPX L quoteright -160 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -110 KPX Lacute Tcaron -110 KPX Lacute Tcommaaccent -110 KPX Lacute V -110 KPX Lacute W -70 KPX Lacute Y -140 KPX Lacute Yacute -140 KPX Lacute Ydieresis -140 KPX Lacute quotedblright -140 KPX Lacute quoteright -160 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcaron T -110 KPX Lcaron Tcaron -110 KPX Lcaron Tcommaaccent -110 KPX Lcaron V -110 KPX Lcaron W -70 KPX Lcaron Y -140 KPX Lcaron Yacute -140 KPX Lcaron Ydieresis -140 KPX Lcaron quotedblright -140 KPX Lcaron quoteright -160 KPX Lcaron y -30 KPX Lcaron yacute -30 KPX Lcaron ydieresis -30 KPX Lcommaaccent T -110 KPX Lcommaaccent Tcaron -110 KPX Lcommaaccent Tcommaaccent -110 KPX Lcommaaccent V -110 KPX Lcommaaccent W -70 KPX Lcommaaccent Y -140 KPX Lcommaaccent Yacute -140 KPX Lcommaaccent Ydieresis -140 KPX Lcommaaccent quotedblright -140 KPX Lcommaaccent quoteright -160 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -110 KPX Lslash Tcaron -110 KPX Lslash Tcommaaccent -110 KPX Lslash V -110 KPX Lslash W -70 KPX Lslash Y -140 KPX Lslash Yacute -140 KPX Lslash Ydieresis -140 KPX Lslash quotedblright -140 KPX Lslash quoteright -160 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX O A -20 KPX O Aacute -20 KPX O Abreve -20 KPX O Acircumflex -20 KPX O Adieresis -20 KPX O Agrave -20 KPX O Amacron -20 KPX O Aogonek -20 KPX O Aring -20 KPX O Atilde -20 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -30 KPX O X -60 KPX O Y -70 KPX O Yacute -70 KPX O Ydieresis -70 KPX O comma -40 KPX O period -40 KPX Oacute A -20 KPX Oacute Aacute -20 KPX Oacute Abreve -20 KPX Oacute Acircumflex -20 KPX Oacute Adieresis -20 KPX Oacute Agrave -20 KPX Oacute Amacron -20 KPX Oacute Aogonek -20 KPX Oacute Aring -20 KPX Oacute Atilde -20 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -30 KPX Oacute X -60 KPX Oacute Y -70 KPX Oacute Yacute -70 KPX Oacute Ydieresis -70 KPX Oacute comma -40 KPX Oacute period -40 KPX Ocircumflex A -20 KPX Ocircumflex Aacute -20 KPX Ocircumflex Abreve -20 KPX Ocircumflex Acircumflex -20 KPX Ocircumflex Adieresis -20 KPX Ocircumflex Agrave -20 KPX Ocircumflex Amacron -20 KPX Ocircumflex Aogonek -20 KPX Ocircumflex Aring -20 KPX Ocircumflex Atilde -20 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -30 KPX Ocircumflex X -60 KPX Ocircumflex Y -70 KPX Ocircumflex Yacute -70 KPX Ocircumflex Ydieresis -70 KPX Ocircumflex comma -40 KPX Ocircumflex period -40 KPX Odieresis A -20 KPX Odieresis Aacute -20 KPX Odieresis Abreve -20 KPX Odieresis Acircumflex -20 KPX Odieresis Adieresis -20 KPX Odieresis Agrave -20 KPX Odieresis Amacron -20 KPX Odieresis Aogonek -20 KPX Odieresis Aring -20 KPX Odieresis Atilde -20 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -30 KPX Odieresis X -60 KPX Odieresis Y -70 KPX Odieresis Yacute -70 KPX Odieresis Ydieresis -70 KPX Odieresis comma -40 KPX Odieresis period -40 KPX Ograve A -20 KPX Ograve Aacute -20 KPX Ograve Abreve -20 KPX Ograve Acircumflex -20 KPX Ograve Adieresis -20 KPX Ograve Agrave -20 KPX Ograve Amacron -20 KPX Ograve Aogonek -20 KPX Ograve Aring -20 KPX Ograve Atilde -20 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -30 KPX Ograve X -60 KPX Ograve Y -70 KPX Ograve Yacute -70 KPX Ograve Ydieresis -70 KPX Ograve comma -40 KPX Ograve period -40 KPX Ohungarumlaut A -20 KPX Ohungarumlaut Aacute -20 KPX Ohungarumlaut Abreve -20 KPX Ohungarumlaut Acircumflex -20 KPX Ohungarumlaut Adieresis -20 KPX Ohungarumlaut Agrave -20 KPX Ohungarumlaut Amacron -20 KPX Ohungarumlaut Aogonek -20 KPX Ohungarumlaut Aring -20 KPX Ohungarumlaut Atilde -20 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -30 KPX Ohungarumlaut X -60 KPX Ohungarumlaut Y -70 KPX Ohungarumlaut Yacute -70 KPX Ohungarumlaut Ydieresis -70 KPX Ohungarumlaut comma -40 KPX Ohungarumlaut period -40 KPX Omacron A -20 KPX Omacron Aacute -20 KPX Omacron Abreve -20 KPX Omacron Acircumflex -20 KPX Omacron Adieresis -20 KPX Omacron Agrave -20 KPX Omacron Amacron -20 KPX Omacron Aogonek -20 KPX Omacron Aring -20 KPX Omacron Atilde -20 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -30 KPX Omacron X -60 KPX Omacron Y -70 KPX Omacron Yacute -70 KPX Omacron Ydieresis -70 KPX Omacron comma -40 KPX Omacron period -40 KPX Oslash A -20 KPX Oslash Aacute -20 KPX Oslash Abreve -20 KPX Oslash Acircumflex -20 KPX Oslash Adieresis -20 KPX Oslash Agrave -20 KPX Oslash Amacron -20 KPX Oslash Aogonek -20 KPX Oslash Aring -20 KPX Oslash Atilde -20 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -30 KPX Oslash X -60 KPX Oslash Y -70 KPX Oslash Yacute -70 KPX Oslash Ydieresis -70 KPX Oslash comma -40 KPX Oslash period -40 KPX Otilde A -20 KPX Otilde Aacute -20 KPX Otilde Abreve -20 KPX Otilde Acircumflex -20 KPX Otilde Adieresis -20 KPX Otilde Agrave -20 KPX Otilde Amacron -20 KPX Otilde Aogonek -20 KPX Otilde Aring -20 KPX Otilde Atilde -20 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -30 KPX Otilde X -60 KPX Otilde Y -70 KPX Otilde Yacute -70 KPX Otilde Ydieresis -70 KPX Otilde comma -40 KPX Otilde period -40 KPX P A -120 KPX P Aacute -120 KPX P Abreve -120 KPX P Acircumflex -120 KPX P Adieresis -120 KPX P Agrave -120 KPX P Amacron -120 KPX P Aogonek -120 KPX P Aring -120 KPX P Atilde -120 KPX P a -40 KPX P aacute -40 KPX P abreve -40 KPX P acircumflex -40 KPX P adieresis -40 KPX P agrave -40 KPX P amacron -40 KPX P aogonek -40 KPX P aring -40 KPX P atilde -40 KPX P comma -180 KPX P e -50 KPX P eacute -50 KPX P ecaron -50 KPX P ecircumflex -50 KPX P edieresis -50 KPX P edotaccent -50 KPX P egrave -50 KPX P emacron -50 KPX P eogonek -50 KPX P o -50 KPX P oacute -50 KPX P ocircumflex -50 KPX P odieresis -50 KPX P ograve -50 KPX P ohungarumlaut -50 KPX P omacron -50 KPX P oslash -50 KPX P otilde -50 KPX P period -180 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R O -20 KPX R Oacute -20 KPX R Ocircumflex -20 KPX R Odieresis -20 KPX R Ograve -20 KPX R Ohungarumlaut -20 KPX R Omacron -20 KPX R Oslash -20 KPX R Otilde -20 KPX R T -30 KPX R Tcaron -30 KPX R Tcommaaccent -30 KPX R U -40 KPX R Uacute -40 KPX R Ucircumflex -40 KPX R Udieresis -40 KPX R Ugrave -40 KPX R Uhungarumlaut -40 KPX R Umacron -40 KPX R Uogonek -40 KPX R Uring -40 KPX R V -50 KPX R W -30 KPX R Y -50 KPX R Yacute -50 KPX R Ydieresis -50 KPX Racute O -20 KPX Racute Oacute -20 KPX Racute Ocircumflex -20 KPX Racute Odieresis -20 KPX Racute Ograve -20 KPX Racute Ohungarumlaut -20 KPX Racute Omacron -20 KPX Racute Oslash -20 KPX Racute Otilde -20 KPX Racute T -30 KPX Racute Tcaron -30 KPX Racute Tcommaaccent -30 KPX Racute U -40 KPX Racute Uacute -40 KPX Racute Ucircumflex -40 KPX Racute Udieresis -40 KPX Racute Ugrave -40 KPX Racute Uhungarumlaut -40 KPX Racute Umacron -40 KPX Racute Uogonek -40 KPX Racute Uring -40 KPX Racute V -50 KPX Racute W -30 KPX Racute Y -50 KPX Racute Yacute -50 KPX Racute Ydieresis -50 KPX Rcaron O -20 KPX Rcaron Oacute -20 KPX Rcaron Ocircumflex -20 KPX Rcaron Odieresis -20 KPX Rcaron Ograve -20 KPX Rcaron Ohungarumlaut -20 KPX Rcaron Omacron -20 KPX Rcaron Oslash -20 KPX Rcaron Otilde -20 KPX Rcaron T -30 KPX Rcaron Tcaron -30 KPX Rcaron Tcommaaccent -30 KPX Rcaron U -40 KPX Rcaron Uacute -40 KPX Rcaron Ucircumflex -40 KPX Rcaron Udieresis -40 KPX Rcaron Ugrave -40 KPX Rcaron Uhungarumlaut -40 KPX Rcaron Umacron -40 KPX Rcaron Uogonek -40 KPX Rcaron Uring -40 KPX Rcaron V -50 KPX Rcaron W -30 KPX Rcaron Y -50 KPX Rcaron Yacute -50 KPX Rcaron Ydieresis -50 KPX Rcommaaccent O -20 KPX Rcommaaccent Oacute -20 KPX Rcommaaccent Ocircumflex -20 KPX Rcommaaccent Odieresis -20 KPX Rcommaaccent Ograve -20 KPX Rcommaaccent Ohungarumlaut -20 KPX Rcommaaccent Omacron -20 KPX Rcommaaccent Oslash -20 KPX Rcommaaccent Otilde -20 KPX Rcommaaccent T -30 KPX Rcommaaccent Tcaron -30 KPX Rcommaaccent Tcommaaccent -30 KPX Rcommaaccent U -40 KPX Rcommaaccent Uacute -40 KPX Rcommaaccent Ucircumflex -40 KPX Rcommaaccent Udieresis -40 KPX Rcommaaccent Ugrave -40 KPX Rcommaaccent Uhungarumlaut -40 KPX Rcommaaccent Umacron -40 KPX Rcommaaccent Uogonek -40 KPX Rcommaaccent Uring -40 KPX Rcommaaccent V -50 KPX Rcommaaccent W -30 KPX Rcommaaccent Y -50 KPX Rcommaaccent Yacute -50 KPX Rcommaaccent Ydieresis -50 KPX S comma -20 KPX S period -20 KPX Sacute comma -20 KPX Sacute period -20 KPX Scaron comma -20 KPX Scaron period -20 KPX Scedilla comma -20 KPX Scedilla period -20 KPX Scommaaccent comma -20 KPX Scommaaccent period -20 KPX T A -120 KPX T Aacute -120 KPX T Abreve -120 KPX T Acircumflex -120 KPX T Adieresis -120 KPX T Agrave -120 KPX T Amacron -120 KPX T Aogonek -120 KPX T Aring -120 KPX T Atilde -120 KPX T O -40 KPX T Oacute -40 KPX T Ocircumflex -40 KPX T Odieresis -40 KPX T Ograve -40 KPX T Ohungarumlaut -40 KPX T Omacron -40 KPX T Oslash -40 KPX T Otilde -40 KPX T a -120 KPX T aacute -120 KPX T abreve -60 KPX T acircumflex -120 KPX T adieresis -120 KPX T agrave -120 KPX T amacron -60 KPX T aogonek -120 KPX T aring -120 KPX T atilde -60 KPX T colon -20 KPX T comma -120 KPX T e -120 KPX T eacute -120 KPX T ecaron -120 KPX T ecircumflex -120 KPX T edieresis -120 KPX T edotaccent -120 KPX T egrave -60 KPX T emacron -60 KPX T eogonek -120 KPX T hyphen -140 KPX T o -120 KPX T oacute -120 KPX T ocircumflex -120 KPX T odieresis -120 KPX T ograve -120 KPX T ohungarumlaut -120 KPX T omacron -60 KPX T oslash -120 KPX T otilde -60 KPX T period -120 KPX T r -120 KPX T racute -120 KPX T rcaron -120 KPX T rcommaaccent -120 KPX T semicolon -20 KPX T u -120 KPX T uacute -120 KPX T ucircumflex -120 KPX T udieresis -120 KPX T ugrave -120 KPX T uhungarumlaut -120 KPX T umacron -60 KPX T uogonek -120 KPX T uring -120 KPX T w -120 KPX T y -120 KPX T yacute -120 KPX T ydieresis -60 KPX Tcaron A -120 KPX Tcaron Aacute -120 KPX Tcaron Abreve -120 KPX Tcaron Acircumflex -120 KPX Tcaron Adieresis -120 KPX Tcaron Agrave -120 KPX Tcaron Amacron -120 KPX Tcaron Aogonek -120 KPX Tcaron Aring -120 KPX Tcaron Atilde -120 KPX Tcaron O -40 KPX Tcaron Oacute -40 KPX Tcaron Ocircumflex -40 KPX Tcaron Odieresis -40 KPX Tcaron Ograve -40 KPX Tcaron Ohungarumlaut -40 KPX Tcaron Omacron -40 KPX Tcaron Oslash -40 KPX Tcaron Otilde -40 KPX Tcaron a -120 KPX Tcaron aacute -120 KPX Tcaron abreve -60 KPX Tcaron acircumflex -120 KPX Tcaron adieresis -120 KPX Tcaron agrave -120 KPX Tcaron amacron -60 KPX Tcaron aogonek -120 KPX Tcaron aring -120 KPX Tcaron atilde -60 KPX Tcaron colon -20 KPX Tcaron comma -120 KPX Tcaron e -120 KPX Tcaron eacute -120 KPX Tcaron ecaron -120 KPX Tcaron ecircumflex -120 KPX Tcaron edieresis -120 KPX Tcaron edotaccent -120 KPX Tcaron egrave -60 KPX Tcaron emacron -60 KPX Tcaron eogonek -120 KPX Tcaron hyphen -140 KPX Tcaron o -120 KPX Tcaron oacute -120 KPX Tcaron ocircumflex -120 KPX Tcaron odieresis -120 KPX Tcaron ograve -120 KPX Tcaron ohungarumlaut -120 KPX Tcaron omacron -60 KPX Tcaron oslash -120 KPX Tcaron otilde -60 KPX Tcaron period -120 KPX Tcaron r -120 KPX Tcaron racute -120 KPX Tcaron rcaron -120 KPX Tcaron rcommaaccent -120 KPX Tcaron semicolon -20 KPX Tcaron u -120 KPX Tcaron uacute -120 KPX Tcaron ucircumflex -120 KPX Tcaron udieresis -120 KPX Tcaron ugrave -120 KPX Tcaron uhungarumlaut -120 KPX Tcaron umacron -60 KPX Tcaron uogonek -120 KPX Tcaron uring -120 KPX Tcaron w -120 KPX Tcaron y -120 KPX Tcaron yacute -120 KPX Tcaron ydieresis -60 KPX Tcommaaccent A -120 KPX Tcommaaccent Aacute -120 KPX Tcommaaccent Abreve -120 KPX Tcommaaccent Acircumflex -120 KPX Tcommaaccent Adieresis -120 KPX Tcommaaccent Agrave -120 KPX Tcommaaccent Amacron -120 KPX Tcommaaccent Aogonek -120 KPX Tcommaaccent Aring -120 KPX Tcommaaccent Atilde -120 KPX Tcommaaccent O -40 KPX Tcommaaccent Oacute -40 KPX Tcommaaccent Ocircumflex -40 KPX Tcommaaccent Odieresis -40 KPX Tcommaaccent Ograve -40 KPX Tcommaaccent Ohungarumlaut -40 KPX Tcommaaccent Omacron -40 KPX Tcommaaccent Oslash -40 KPX Tcommaaccent Otilde -40 KPX Tcommaaccent a -120 KPX Tcommaaccent aacute -120 KPX Tcommaaccent abreve -60 KPX Tcommaaccent acircumflex -120 KPX Tcommaaccent adieresis -120 KPX Tcommaaccent agrave -120 KPX Tcommaaccent amacron -60 KPX Tcommaaccent aogonek -120 KPX Tcommaaccent aring -120 KPX Tcommaaccent atilde -60 KPX Tcommaaccent colon -20 KPX Tcommaaccent comma -120 KPX Tcommaaccent e -120 KPX Tcommaaccent eacute -120 KPX Tcommaaccent ecaron -120 KPX Tcommaaccent ecircumflex -120 KPX Tcommaaccent edieresis -120 KPX Tcommaaccent edotaccent -120 KPX Tcommaaccent egrave -60 KPX Tcommaaccent emacron -60 KPX Tcommaaccent eogonek -120 KPX Tcommaaccent hyphen -140 KPX Tcommaaccent o -120 KPX Tcommaaccent oacute -120 KPX Tcommaaccent ocircumflex -120 KPX Tcommaaccent odieresis -120 KPX Tcommaaccent ograve -120 KPX Tcommaaccent ohungarumlaut -120 KPX Tcommaaccent omacron -60 KPX Tcommaaccent oslash -120 KPX Tcommaaccent otilde -60 KPX Tcommaaccent period -120 KPX Tcommaaccent r -120 KPX Tcommaaccent racute -120 KPX Tcommaaccent rcaron -120 KPX Tcommaaccent rcommaaccent -120 KPX Tcommaaccent semicolon -20 KPX Tcommaaccent u -120 KPX Tcommaaccent uacute -120 KPX Tcommaaccent ucircumflex -120 KPX Tcommaaccent udieresis -120 KPX Tcommaaccent ugrave -120 KPX Tcommaaccent uhungarumlaut -120 KPX Tcommaaccent umacron -60 KPX Tcommaaccent uogonek -120 KPX Tcommaaccent uring -120 KPX Tcommaaccent w -120 KPX Tcommaaccent y -120 KPX Tcommaaccent yacute -120 KPX Tcommaaccent ydieresis -60 KPX U A -40 KPX U Aacute -40 KPX U Abreve -40 KPX U Acircumflex -40 KPX U Adieresis -40 KPX U Agrave -40 KPX U Amacron -40 KPX U Aogonek -40 KPX U Aring -40 KPX U Atilde -40 KPX U comma -40 KPX U period -40 KPX Uacute A -40 KPX Uacute Aacute -40 KPX Uacute Abreve -40 KPX Uacute Acircumflex -40 KPX Uacute Adieresis -40 KPX Uacute Agrave -40 KPX Uacute Amacron -40 KPX Uacute Aogonek -40 KPX Uacute Aring -40 KPX Uacute Atilde -40 KPX Uacute comma -40 KPX Uacute period -40 KPX Ucircumflex A -40 KPX Ucircumflex Aacute -40 KPX Ucircumflex Abreve -40 KPX Ucircumflex Acircumflex -40 KPX Ucircumflex Adieresis -40 KPX Ucircumflex Agrave -40 KPX Ucircumflex Amacron -40 KPX Ucircumflex Aogonek -40 KPX Ucircumflex Aring -40 KPX Ucircumflex Atilde -40 KPX Ucircumflex comma -40 KPX Ucircumflex period -40 KPX Udieresis A -40 KPX Udieresis Aacute -40 KPX Udieresis Abreve -40 KPX Udieresis Acircumflex -40 KPX Udieresis Adieresis -40 KPX Udieresis Agrave -40 KPX Udieresis Amacron -40 KPX Udieresis Aogonek -40 KPX Udieresis Aring -40 KPX Udieresis Atilde -40 KPX Udieresis comma -40 KPX Udieresis period -40 KPX Ugrave A -40 KPX Ugrave Aacute -40 KPX Ugrave Abreve -40 KPX Ugrave Acircumflex -40 KPX Ugrave Adieresis -40 KPX Ugrave Agrave -40 KPX Ugrave Amacron -40 KPX Ugrave Aogonek -40 KPX Ugrave Aring -40 KPX Ugrave Atilde -40 KPX Ugrave comma -40 KPX Ugrave period -40 KPX Uhungarumlaut A -40 KPX Uhungarumlaut Aacute -40 KPX Uhungarumlaut Abreve -40 KPX Uhungarumlaut Acircumflex -40 KPX Uhungarumlaut Adieresis -40 KPX Uhungarumlaut Agrave -40 KPX Uhungarumlaut Amacron -40 KPX Uhungarumlaut Aogonek -40 KPX Uhungarumlaut Aring -40 KPX Uhungarumlaut Atilde -40 KPX Uhungarumlaut comma -40 KPX Uhungarumlaut period -40 KPX Umacron A -40 KPX Umacron Aacute -40 KPX Umacron Abreve -40 KPX Umacron Acircumflex -40 KPX Umacron Adieresis -40 KPX Umacron Agrave -40 KPX Umacron Amacron -40 KPX Umacron Aogonek -40 KPX Umacron Aring -40 KPX Umacron Atilde -40 KPX Umacron comma -40 KPX Umacron period -40 KPX Uogonek A -40 KPX Uogonek Aacute -40 KPX Uogonek Abreve -40 KPX Uogonek Acircumflex -40 KPX Uogonek Adieresis -40 KPX Uogonek Agrave -40 KPX Uogonek Amacron -40 KPX Uogonek Aogonek -40 KPX Uogonek Aring -40 KPX Uogonek Atilde -40 KPX Uogonek comma -40 KPX Uogonek period -40 KPX Uring A -40 KPX Uring Aacute -40 KPX Uring Abreve -40 KPX Uring Acircumflex -40 KPX Uring Adieresis -40 KPX Uring Agrave -40 KPX Uring Amacron -40 KPX Uring Aogonek -40 KPX Uring Aring -40 KPX Uring Atilde -40 KPX Uring comma -40 KPX Uring period -40 KPX V A -80 KPX V Aacute -80 KPX V Abreve -80 KPX V Acircumflex -80 KPX V Adieresis -80 KPX V Agrave -80 KPX V Amacron -80 KPX V Aogonek -80 KPX V Aring -80 KPX V Atilde -80 KPX V G -40 KPX V Gbreve -40 KPX V Gcommaaccent -40 KPX V O -40 KPX V Oacute -40 KPX V Ocircumflex -40 KPX V Odieresis -40 KPX V Ograve -40 KPX V Ohungarumlaut -40 KPX V Omacron -40 KPX V Oslash -40 KPX V Otilde -40 KPX V a -70 KPX V aacute -70 KPX V abreve -70 KPX V acircumflex -70 KPX V adieresis -70 KPX V agrave -70 KPX V amacron -70 KPX V aogonek -70 KPX V aring -70 KPX V atilde -70 KPX V colon -40 KPX V comma -125 KPX V e -80 KPX V eacute -80 KPX V ecaron -80 KPX V ecircumflex -80 KPX V edieresis -80 KPX V edotaccent -80 KPX V egrave -80 KPX V emacron -80 KPX V eogonek -80 KPX V hyphen -80 KPX V o -80 KPX V oacute -80 KPX V ocircumflex -80 KPX V odieresis -80 KPX V ograve -80 KPX V ohungarumlaut -80 KPX V omacron -80 KPX V oslash -80 KPX V otilde -80 KPX V period -125 KPX V semicolon -40 KPX V u -70 KPX V uacute -70 KPX V ucircumflex -70 KPX V udieresis -70 KPX V ugrave -70 KPX V uhungarumlaut -70 KPX V umacron -70 KPX V uogonek -70 KPX V uring -70 KPX W A -50 KPX W Aacute -50 KPX W Abreve -50 KPX W Acircumflex -50 KPX W Adieresis -50 KPX W Agrave -50 KPX W Amacron -50 KPX W Aogonek -50 KPX W Aring -50 KPX W Atilde -50 KPX W O -20 KPX W Oacute -20 KPX W Ocircumflex -20 KPX W Odieresis -20 KPX W Ograve -20 KPX W Ohungarumlaut -20 KPX W Omacron -20 KPX W Oslash -20 KPX W Otilde -20 KPX W a -40 KPX W aacute -40 KPX W abreve -40 KPX W acircumflex -40 KPX W adieresis -40 KPX W agrave -40 KPX W amacron -40 KPX W aogonek -40 KPX W aring -40 KPX W atilde -40 KPX W comma -80 KPX W e -30 KPX W eacute -30 KPX W ecaron -30 KPX W ecircumflex -30 KPX W edieresis -30 KPX W edotaccent -30 KPX W egrave -30 KPX W emacron -30 KPX W eogonek -30 KPX W hyphen -40 KPX W o -30 KPX W oacute -30 KPX W ocircumflex -30 KPX W odieresis -30 KPX W ograve -30 KPX W ohungarumlaut -30 KPX W omacron -30 KPX W oslash -30 KPX W otilde -30 KPX W period -80 KPX W u -30 KPX W uacute -30 KPX W ucircumflex -30 KPX W udieresis -30 KPX W ugrave -30 KPX W uhungarumlaut -30 KPX W umacron -30 KPX W uogonek -30 KPX W uring -30 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -85 KPX Y Oacute -85 KPX Y Ocircumflex -85 KPX Y Odieresis -85 KPX Y Ograve -85 KPX Y Ohungarumlaut -85 KPX Y Omacron -85 KPX Y Oslash -85 KPX Y Otilde -85 KPX Y a -140 KPX Y aacute -140 KPX Y abreve -70 KPX Y acircumflex -140 KPX Y adieresis -140 KPX Y agrave -140 KPX Y amacron -70 KPX Y aogonek -140 KPX Y aring -140 KPX Y atilde -140 KPX Y colon -60 KPX Y comma -140 KPX Y e -140 KPX Y eacute -140 KPX Y ecaron -140 KPX Y ecircumflex -140 KPX Y edieresis -140 KPX Y edotaccent -140 KPX Y egrave -140 KPX Y emacron -70 KPX Y eogonek -140 KPX Y hyphen -140 KPX Y i -20 KPX Y iacute -20 KPX Y iogonek -20 KPX Y o -140 KPX Y oacute -140 KPX Y ocircumflex -140 KPX Y odieresis -140 KPX Y ograve -140 KPX Y ohungarumlaut -140 KPX Y omacron -140 KPX Y oslash -140 KPX Y otilde -140 KPX Y period -140 KPX Y semicolon -60 KPX Y u -110 KPX Y uacute -110 KPX Y ucircumflex -110 KPX Y udieresis -110 KPX Y ugrave -110 KPX Y uhungarumlaut -110 KPX Y umacron -110 KPX Y uogonek -110 KPX Y uring -110 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -85 KPX Yacute Oacute -85 KPX Yacute Ocircumflex -85 KPX Yacute Odieresis -85 KPX Yacute Ograve -85 KPX Yacute Ohungarumlaut -85 KPX Yacute Omacron -85 KPX Yacute Oslash -85 KPX Yacute Otilde -85 KPX Yacute a -140 KPX Yacute aacute -140 KPX Yacute abreve -70 KPX Yacute acircumflex -140 KPX Yacute adieresis -140 KPX Yacute agrave -140 KPX Yacute amacron -70 KPX Yacute aogonek -140 KPX Yacute aring -140 KPX Yacute atilde -70 KPX Yacute colon -60 KPX Yacute comma -140 KPX Yacute e -140 KPX Yacute eacute -140 KPX Yacute ecaron -140 KPX Yacute ecircumflex -140 KPX Yacute edieresis -140 KPX Yacute edotaccent -140 KPX Yacute egrave -140 KPX Yacute emacron -70 KPX Yacute eogonek -140 KPX Yacute hyphen -140 KPX Yacute i -20 KPX Yacute iacute -20 KPX Yacute iogonek -20 KPX Yacute o -140 KPX Yacute oacute -140 KPX Yacute ocircumflex -140 KPX Yacute odieresis -140 KPX Yacute ograve -140 KPX Yacute ohungarumlaut -140 KPX Yacute omacron -70 KPX Yacute oslash -140 KPX Yacute otilde -140 KPX Yacute period -140 KPX Yacute semicolon -60 KPX Yacute u -110 KPX Yacute uacute -110 KPX Yacute ucircumflex -110 KPX Yacute udieresis -110 KPX Yacute ugrave -110 KPX Yacute uhungarumlaut -110 KPX Yacute umacron -110 KPX Yacute uogonek -110 KPX Yacute uring -110 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -85 KPX Ydieresis Oacute -85 KPX Ydieresis Ocircumflex -85 KPX Ydieresis Odieresis -85 KPX Ydieresis Ograve -85 KPX Ydieresis Ohungarumlaut -85 KPX Ydieresis Omacron -85 KPX Ydieresis Oslash -85 KPX Ydieresis Otilde -85 KPX Ydieresis a -140 KPX Ydieresis aacute -140 KPX Ydieresis abreve -70 KPX Ydieresis acircumflex -140 KPX Ydieresis adieresis -140 KPX Ydieresis agrave -140 KPX Ydieresis amacron -70 KPX Ydieresis aogonek -140 KPX Ydieresis aring -140 KPX Ydieresis atilde -70 KPX Ydieresis colon -60 KPX Ydieresis comma -140 KPX Ydieresis e -140 KPX Ydieresis eacute -140 KPX Ydieresis ecaron -140 KPX Ydieresis ecircumflex -140 KPX Ydieresis edieresis -140 KPX Ydieresis edotaccent -140 KPX Ydieresis egrave -140 KPX Ydieresis emacron -70 KPX Ydieresis eogonek -140 KPX Ydieresis hyphen -140 KPX Ydieresis i -20 KPX Ydieresis iacute -20 KPX Ydieresis iogonek -20 KPX Ydieresis o -140 KPX Ydieresis oacute -140 KPX Ydieresis ocircumflex -140 KPX Ydieresis odieresis -140 KPX Ydieresis ograve -140 KPX Ydieresis ohungarumlaut -140 KPX Ydieresis omacron -140 KPX Ydieresis oslash -140 KPX Ydieresis otilde -140 KPX Ydieresis period -140 KPX Ydieresis semicolon -60 KPX Ydieresis u -110 KPX Ydieresis uacute -110 KPX Ydieresis ucircumflex -110 KPX Ydieresis udieresis -110 KPX Ydieresis ugrave -110 KPX Ydieresis uhungarumlaut -110 KPX Ydieresis umacron -110 KPX Ydieresis uogonek -110 KPX Ydieresis uring -110 KPX a v -20 KPX a w -20 KPX a y -30 KPX a yacute -30 KPX a ydieresis -30 KPX aacute v -20 KPX aacute w -20 KPX aacute y -30 KPX aacute yacute -30 KPX aacute ydieresis -30 KPX abreve v -20 KPX abreve w -20 KPX abreve y -30 KPX abreve yacute -30 KPX abreve ydieresis -30 KPX acircumflex v -20 KPX acircumflex w -20 KPX acircumflex y -30 KPX acircumflex yacute -30 KPX acircumflex ydieresis -30 KPX adieresis v -20 KPX adieresis w -20 KPX adieresis y -30 KPX adieresis yacute -30 KPX adieresis ydieresis -30 KPX agrave v -20 KPX agrave w -20 KPX agrave y -30 KPX agrave yacute -30 KPX agrave ydieresis -30 KPX amacron v -20 KPX amacron w -20 KPX amacron y -30 KPX amacron yacute -30 KPX amacron ydieresis -30 KPX aogonek v -20 KPX aogonek w -20 KPX aogonek y -30 KPX aogonek yacute -30 KPX aogonek ydieresis -30 KPX aring v -20 KPX aring w -20 KPX aring y -30 KPX aring yacute -30 KPX aring ydieresis -30 KPX atilde v -20 KPX atilde w -20 KPX atilde y -30 KPX atilde yacute -30 KPX atilde ydieresis -30 KPX b b -10 KPX b comma -40 KPX b l -20 KPX b lacute -20 KPX b lcommaaccent -20 KPX b lslash -20 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -20 KPX b y -20 KPX b yacute -20 KPX b ydieresis -20 KPX c comma -15 KPX c k -20 KPX c kcommaaccent -20 KPX cacute comma -15 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX ccaron comma -15 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccedilla comma -15 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX colon space -50 KPX comma quotedblright -100 KPX comma quoteright -100 KPX e comma -15 KPX e period -15 KPX e v -30 KPX e w -20 KPX e x -30 KPX e y -20 KPX e yacute -20 KPX e ydieresis -20 KPX eacute comma -15 KPX eacute period -15 KPX eacute v -30 KPX eacute w -20 KPX eacute x -30 KPX eacute y -20 KPX eacute yacute -20 KPX eacute ydieresis -20 KPX ecaron comma -15 KPX ecaron period -15 KPX ecaron v -30 KPX ecaron w -20 KPX ecaron x -30 KPX ecaron y -20 KPX ecaron yacute -20 KPX ecaron ydieresis -20 KPX ecircumflex comma -15 KPX ecircumflex period -15 KPX ecircumflex v -30 KPX ecircumflex w -20 KPX ecircumflex x -30 KPX ecircumflex y -20 KPX ecircumflex yacute -20 KPX ecircumflex ydieresis -20 KPX edieresis comma -15 KPX edieresis period -15 KPX edieresis v -30 KPX edieresis w -20 KPX edieresis x -30 KPX edieresis y -20 KPX edieresis yacute -20 KPX edieresis ydieresis -20 KPX edotaccent comma -15 KPX edotaccent period -15 KPX edotaccent v -30 KPX edotaccent w -20 KPX edotaccent x -30 KPX edotaccent y -20 KPX edotaccent yacute -20 KPX edotaccent ydieresis -20 KPX egrave comma -15 KPX egrave period -15 KPX egrave v -30 KPX egrave w -20 KPX egrave x -30 KPX egrave y -20 KPX egrave yacute -20 KPX egrave ydieresis -20 KPX emacron comma -15 KPX emacron period -15 KPX emacron v -30 KPX emacron w -20 KPX emacron x -30 KPX emacron y -20 KPX emacron yacute -20 KPX emacron ydieresis -20 KPX eogonek comma -15 KPX eogonek period -15 KPX eogonek v -30 KPX eogonek w -20 KPX eogonek x -30 KPX eogonek y -20 KPX eogonek yacute -20 KPX eogonek ydieresis -20 KPX f a -30 KPX f aacute -30 KPX f abreve -30 KPX f acircumflex -30 KPX f adieresis -30 KPX f agrave -30 KPX f amacron -30 KPX f aogonek -30 KPX f aring -30 KPX f atilde -30 KPX f comma -30 KPX f dotlessi -28 KPX f e -30 KPX f eacute -30 KPX f ecaron -30 KPX f ecircumflex -30 KPX f edieresis -30 KPX f edotaccent -30 KPX f egrave -30 KPX f emacron -30 KPX f eogonek -30 KPX f o -30 KPX f oacute -30 KPX f ocircumflex -30 KPX f odieresis -30 KPX f ograve -30 KPX f ohungarumlaut -30 KPX f omacron -30 KPX f oslash -30 KPX f otilde -30 KPX f period -30 KPX f quotedblright 60 KPX f quoteright 50 KPX g r -10 KPX g racute -10 KPX g rcaron -10 KPX g rcommaaccent -10 KPX gbreve r -10 KPX gbreve racute -10 KPX gbreve rcaron -10 KPX gbreve rcommaaccent -10 KPX gcommaaccent r -10 KPX gcommaaccent racute -10 KPX gcommaaccent rcaron -10 KPX gcommaaccent rcommaaccent -10 KPX h y -30 KPX h yacute -30 KPX h ydieresis -30 KPX k e -20 KPX k eacute -20 KPX k ecaron -20 KPX k ecircumflex -20 KPX k edieresis -20 KPX k edotaccent -20 KPX k egrave -20 KPX k emacron -20 KPX k eogonek -20 KPX k o -20 KPX k oacute -20 KPX k ocircumflex -20 KPX k odieresis -20 KPX k ograve -20 KPX k ohungarumlaut -20 KPX k omacron -20 KPX k oslash -20 KPX k otilde -20 KPX kcommaaccent e -20 KPX kcommaaccent eacute -20 KPX kcommaaccent ecaron -20 KPX kcommaaccent ecircumflex -20 KPX kcommaaccent edieresis -20 KPX kcommaaccent edotaccent -20 KPX kcommaaccent egrave -20 KPX kcommaaccent emacron -20 KPX kcommaaccent eogonek -20 KPX kcommaaccent o -20 KPX kcommaaccent oacute -20 KPX kcommaaccent ocircumflex -20 KPX kcommaaccent odieresis -20 KPX kcommaaccent ograve -20 KPX kcommaaccent ohungarumlaut -20 KPX kcommaaccent omacron -20 KPX kcommaaccent oslash -20 KPX kcommaaccent otilde -20 KPX m u -10 KPX m uacute -10 KPX m ucircumflex -10 KPX m udieresis -10 KPX m ugrave -10 KPX m uhungarumlaut -10 KPX m umacron -10 KPX m uogonek -10 KPX m uring -10 KPX m y -15 KPX m yacute -15 KPX m ydieresis -15 KPX n u -10 KPX n uacute -10 KPX n ucircumflex -10 KPX n udieresis -10 KPX n ugrave -10 KPX n uhungarumlaut -10 KPX n umacron -10 KPX n uogonek -10 KPX n uring -10 KPX n v -20 KPX n y -15 KPX n yacute -15 KPX n ydieresis -15 KPX nacute u -10 KPX nacute uacute -10 KPX nacute ucircumflex -10 KPX nacute udieresis -10 KPX nacute ugrave -10 KPX nacute uhungarumlaut -10 KPX nacute umacron -10 KPX nacute uogonek -10 KPX nacute uring -10 KPX nacute v -20 KPX nacute y -15 KPX nacute yacute -15 KPX nacute ydieresis -15 KPX ncaron u -10 KPX ncaron uacute -10 KPX ncaron ucircumflex -10 KPX ncaron udieresis -10 KPX ncaron ugrave -10 KPX ncaron uhungarumlaut -10 KPX ncaron umacron -10 KPX ncaron uogonek -10 KPX ncaron uring -10 KPX ncaron v -20 KPX ncaron y -15 KPX ncaron yacute -15 KPX ncaron ydieresis -15 KPX ncommaaccent u -10 KPX ncommaaccent uacute -10 KPX ncommaaccent ucircumflex -10 KPX ncommaaccent udieresis -10 KPX ncommaaccent ugrave -10 KPX ncommaaccent uhungarumlaut -10 KPX ncommaaccent umacron -10 KPX ncommaaccent uogonek -10 KPX ncommaaccent uring -10 KPX ncommaaccent v -20 KPX ncommaaccent y -15 KPX ncommaaccent yacute -15 KPX ncommaaccent ydieresis -15 KPX ntilde u -10 KPX ntilde uacute -10 KPX ntilde ucircumflex -10 KPX ntilde udieresis -10 KPX ntilde ugrave -10 KPX ntilde uhungarumlaut -10 KPX ntilde umacron -10 KPX ntilde uogonek -10 KPX ntilde uring -10 KPX ntilde v -20 KPX ntilde y -15 KPX ntilde yacute -15 KPX ntilde ydieresis -15 KPX o comma -40 KPX o period -40 KPX o v -15 KPX o w -15 KPX o x -30 KPX o y -30 KPX o yacute -30 KPX o ydieresis -30 KPX oacute comma -40 KPX oacute period -40 KPX oacute v -15 KPX oacute w -15 KPX oacute x -30 KPX oacute y -30 KPX oacute yacute -30 KPX oacute ydieresis -30 KPX ocircumflex comma -40 KPX ocircumflex period -40 KPX ocircumflex v -15 KPX ocircumflex w -15 KPX ocircumflex x -30 KPX ocircumflex y -30 KPX ocircumflex yacute -30 KPX ocircumflex ydieresis -30 KPX odieresis comma -40 KPX odieresis period -40 KPX odieresis v -15 KPX odieresis w -15 KPX odieresis x -30 KPX odieresis y -30 KPX odieresis yacute -30 KPX odieresis ydieresis -30 KPX ograve comma -40 KPX ograve period -40 KPX ograve v -15 KPX ograve w -15 KPX ograve x -30 KPX ograve y -30 KPX ograve yacute -30 KPX ograve ydieresis -30 KPX ohungarumlaut comma -40 KPX ohungarumlaut period -40 KPX ohungarumlaut v -15 KPX ohungarumlaut w -15 KPX ohungarumlaut x -30 KPX ohungarumlaut y -30 KPX ohungarumlaut yacute -30 KPX ohungarumlaut ydieresis -30 KPX omacron comma -40 KPX omacron period -40 KPX omacron v -15 KPX omacron w -15 KPX omacron x -30 KPX omacron y -30 KPX omacron yacute -30 KPX omacron ydieresis -30 KPX oslash a -55 KPX oslash aacute -55 KPX oslash abreve -55 KPX oslash acircumflex -55 KPX oslash adieresis -55 KPX oslash agrave -55 KPX oslash amacron -55 KPX oslash aogonek -55 KPX oslash aring -55 KPX oslash atilde -55 KPX oslash b -55 KPX oslash c -55 KPX oslash cacute -55 KPX oslash ccaron -55 KPX oslash ccedilla -55 KPX oslash comma -95 KPX oslash d -55 KPX oslash dcroat -55 KPX oslash e -55 KPX oslash eacute -55 KPX oslash ecaron -55 KPX oslash ecircumflex -55 KPX oslash edieresis -55 KPX oslash edotaccent -55 KPX oslash egrave -55 KPX oslash emacron -55 KPX oslash eogonek -55 KPX oslash f -55 KPX oslash g -55 KPX oslash gbreve -55 KPX oslash gcommaaccent -55 KPX oslash h -55 KPX oslash i -55 KPX oslash iacute -55 KPX oslash icircumflex -55 KPX oslash idieresis -55 KPX oslash igrave -55 KPX oslash imacron -55 KPX oslash iogonek -55 KPX oslash j -55 KPX oslash k -55 KPX oslash kcommaaccent -55 KPX oslash l -55 KPX oslash lacute -55 KPX oslash lcommaaccent -55 KPX oslash lslash -55 KPX oslash m -55 KPX oslash n -55 KPX oslash nacute -55 KPX oslash ncaron -55 KPX oslash ncommaaccent -55 KPX oslash ntilde -55 KPX oslash o -55 KPX oslash oacute -55 KPX oslash ocircumflex -55 KPX oslash odieresis -55 KPX oslash ograve -55 KPX oslash ohungarumlaut -55 KPX oslash omacron -55 KPX oslash oslash -55 KPX oslash otilde -55 KPX oslash p -55 KPX oslash period -95 KPX oslash q -55 KPX oslash r -55 KPX oslash racute -55 KPX oslash rcaron -55 KPX oslash rcommaaccent -55 KPX oslash s -55 KPX oslash sacute -55 KPX oslash scaron -55 KPX oslash scedilla -55 KPX oslash scommaaccent -55 KPX oslash t -55 KPX oslash tcommaaccent -55 KPX oslash u -55 KPX oslash uacute -55 KPX oslash ucircumflex -55 KPX oslash udieresis -55 KPX oslash ugrave -55 KPX oslash uhungarumlaut -55 KPX oslash umacron -55 KPX oslash uogonek -55 KPX oslash uring -55 KPX oslash v -70 KPX oslash w -70 KPX oslash x -85 KPX oslash y -70 KPX oslash yacute -70 KPX oslash ydieresis -70 KPX oslash z -55 KPX oslash zacute -55 KPX oslash zcaron -55 KPX oslash zdotaccent -55 KPX otilde comma -40 KPX otilde period -40 KPX otilde v -15 KPX otilde w -15 KPX otilde x -30 KPX otilde y -30 KPX otilde yacute -30 KPX otilde ydieresis -30 KPX p comma -35 KPX p period -35 KPX p y -30 KPX p yacute -30 KPX p ydieresis -30 KPX period quotedblright -100 KPX period quoteright -100 KPX period space -60 KPX quotedblright space -40 KPX quoteleft quoteleft -57 KPX quoteright d -50 KPX quoteright dcroat -50 KPX quoteright quoteright -57 KPX quoteright r -50 KPX quoteright racute -50 KPX quoteright rcaron -50 KPX quoteright rcommaaccent -50 KPX quoteright s -50 KPX quoteright sacute -50 KPX quoteright scaron -50 KPX quoteright scedilla -50 KPX quoteright scommaaccent -50 KPX quoteright space -70 KPX r a -10 KPX r aacute -10 KPX r abreve -10 KPX r acircumflex -10 KPX r adieresis -10 KPX r agrave -10 KPX r amacron -10 KPX r aogonek -10 KPX r aring -10 KPX r atilde -10 KPX r colon 30 KPX r comma -50 KPX r i 15 KPX r iacute 15 KPX r icircumflex 15 KPX r idieresis 15 KPX r igrave 15 KPX r imacron 15 KPX r iogonek 15 KPX r k 15 KPX r kcommaaccent 15 KPX r l 15 KPX r lacute 15 KPX r lcommaaccent 15 KPX r lslash 15 KPX r m 25 KPX r n 25 KPX r nacute 25 KPX r ncaron 25 KPX r ncommaaccent 25 KPX r ntilde 25 KPX r p 30 KPX r period -50 KPX r semicolon 30 KPX r t 40 KPX r tcommaaccent 40 KPX r u 15 KPX r uacute 15 KPX r ucircumflex 15 KPX r udieresis 15 KPX r ugrave 15 KPX r uhungarumlaut 15 KPX r umacron 15 KPX r uogonek 15 KPX r uring 15 KPX r v 30 KPX r y 30 KPX r yacute 30 KPX r ydieresis 30 KPX racute a -10 KPX racute aacute -10 KPX racute abreve -10 KPX racute acircumflex -10 KPX racute adieresis -10 KPX racute agrave -10 KPX racute amacron -10 KPX racute aogonek -10 KPX racute aring -10 KPX racute atilde -10 KPX racute colon 30 KPX racute comma -50 KPX racute i 15 KPX racute iacute 15 KPX racute icircumflex 15 KPX racute idieresis 15 KPX racute igrave 15 KPX racute imacron 15 KPX racute iogonek 15 KPX racute k 15 KPX racute kcommaaccent 15 KPX racute l 15 KPX racute lacute 15 KPX racute lcommaaccent 15 KPX racute lslash 15 KPX racute m 25 KPX racute n 25 KPX racute nacute 25 KPX racute ncaron 25 KPX racute ncommaaccent 25 KPX racute ntilde 25 KPX racute p 30 KPX racute period -50 KPX racute semicolon 30 KPX racute t 40 KPX racute tcommaaccent 40 KPX racute u 15 KPX racute uacute 15 KPX racute ucircumflex 15 KPX racute udieresis 15 KPX racute ugrave 15 KPX racute uhungarumlaut 15 KPX racute umacron 15 KPX racute uogonek 15 KPX racute uring 15 KPX racute v 30 KPX racute y 30 KPX racute yacute 30 KPX racute ydieresis 30 KPX rcaron a -10 KPX rcaron aacute -10 KPX rcaron abreve -10 KPX rcaron acircumflex -10 KPX rcaron adieresis -10 KPX rcaron agrave -10 KPX rcaron amacron -10 KPX rcaron aogonek -10 KPX rcaron aring -10 KPX rcaron atilde -10 KPX rcaron colon 30 KPX rcaron comma -50 KPX rcaron i 15 KPX rcaron iacute 15 KPX rcaron icircumflex 15 KPX rcaron idieresis 15 KPX rcaron igrave 15 KPX rcaron imacron 15 KPX rcaron iogonek 15 KPX rcaron k 15 KPX rcaron kcommaaccent 15 KPX rcaron l 15 KPX rcaron lacute 15 KPX rcaron lcommaaccent 15 KPX rcaron lslash 15 KPX rcaron m 25 KPX rcaron n 25 KPX rcaron nacute 25 KPX rcaron ncaron 25 KPX rcaron ncommaaccent 25 KPX rcaron ntilde 25 KPX rcaron p 30 KPX rcaron period -50 KPX rcaron semicolon 30 KPX rcaron t 40 KPX rcaron tcommaaccent 40 KPX rcaron u 15 KPX rcaron uacute 15 KPX rcaron ucircumflex 15 KPX rcaron udieresis 15 KPX rcaron ugrave 15 KPX rcaron uhungarumlaut 15 KPX rcaron umacron 15 KPX rcaron uogonek 15 KPX rcaron uring 15 KPX rcaron v 30 KPX rcaron y 30 KPX rcaron yacute 30 KPX rcaron ydieresis 30 KPX rcommaaccent a -10 KPX rcommaaccent aacute -10 KPX rcommaaccent abreve -10 KPX rcommaaccent acircumflex -10 KPX rcommaaccent adieresis -10 KPX rcommaaccent agrave -10 KPX rcommaaccent amacron -10 KPX rcommaaccent aogonek -10 KPX rcommaaccent aring -10 KPX rcommaaccent atilde -10 KPX rcommaaccent colon 30 KPX rcommaaccent comma -50 KPX rcommaaccent i 15 KPX rcommaaccent iacute 15 KPX rcommaaccent icircumflex 15 KPX rcommaaccent idieresis 15 KPX rcommaaccent igrave 15 KPX rcommaaccent imacron 15 KPX rcommaaccent iogonek 15 KPX rcommaaccent k 15 KPX rcommaaccent kcommaaccent 15 KPX rcommaaccent l 15 KPX rcommaaccent lacute 15 KPX rcommaaccent lcommaaccent 15 KPX rcommaaccent lslash 15 KPX rcommaaccent m 25 KPX rcommaaccent n 25 KPX rcommaaccent nacute 25 KPX rcommaaccent ncaron 25 KPX rcommaaccent ncommaaccent 25 KPX rcommaaccent ntilde 25 KPX rcommaaccent p 30 KPX rcommaaccent period -50 KPX rcommaaccent semicolon 30 KPX rcommaaccent t 40 KPX rcommaaccent tcommaaccent 40 KPX rcommaaccent u 15 KPX rcommaaccent uacute 15 KPX rcommaaccent ucircumflex 15 KPX rcommaaccent udieresis 15 KPX rcommaaccent ugrave 15 KPX rcommaaccent uhungarumlaut 15 KPX rcommaaccent umacron 15 KPX rcommaaccent uogonek 15 KPX rcommaaccent uring 15 KPX rcommaaccent v 30 KPX rcommaaccent y 30 KPX rcommaaccent yacute 30 KPX rcommaaccent ydieresis 30 KPX s comma -15 KPX s period -15 KPX s w -30 KPX sacute comma -15 KPX sacute period -15 KPX sacute w -30 KPX scaron comma -15 KPX scaron period -15 KPX scaron w -30 KPX scedilla comma -15 KPX scedilla period -15 KPX scedilla w -30 KPX scommaaccent comma -15 KPX scommaaccent period -15 KPX scommaaccent w -30 KPX semicolon space -50 KPX space T -50 KPX space Tcaron -50 KPX space Tcommaaccent -50 KPX space V -50 KPX space W -40 KPX space Y -90 KPX space Yacute -90 KPX space Ydieresis -90 KPX space quotedblleft -30 KPX space quoteleft -60 KPX v a -25 KPX v aacute -25 KPX v abreve -25 KPX v acircumflex -25 KPX v adieresis -25 KPX v agrave -25 KPX v amacron -25 KPX v aogonek -25 KPX v aring -25 KPX v atilde -25 KPX v comma -80 KPX v e -25 KPX v eacute -25 KPX v ecaron -25 KPX v ecircumflex -25 KPX v edieresis -25 KPX v edotaccent -25 KPX v egrave -25 KPX v emacron -25 KPX v eogonek -25 KPX v o -25 KPX v oacute -25 KPX v ocircumflex -25 KPX v odieresis -25 KPX v ograve -25 KPX v ohungarumlaut -25 KPX v omacron -25 KPX v oslash -25 KPX v otilde -25 KPX v period -80 KPX w a -15 KPX w aacute -15 KPX w abreve -15 KPX w acircumflex -15 KPX w adieresis -15 KPX w agrave -15 KPX w amacron -15 KPX w aogonek -15 KPX w aring -15 KPX w atilde -15 KPX w comma -60 KPX w e -10 KPX w eacute -10 KPX w ecaron -10 KPX w ecircumflex -10 KPX w edieresis -10 KPX w edotaccent -10 KPX w egrave -10 KPX w emacron -10 KPX w eogonek -10 KPX w o -10 KPX w oacute -10 KPX w ocircumflex -10 KPX w odieresis -10 KPX w ograve -10 KPX w ohungarumlaut -10 KPX w omacron -10 KPX w oslash -10 KPX w otilde -10 KPX w period -60 KPX x e -30 KPX x eacute -30 KPX x ecaron -30 KPX x ecircumflex -30 KPX x edieresis -30 KPX x edotaccent -30 KPX x egrave -30 KPX x emacron -30 KPX x eogonek -30 KPX y a -20 KPX y aacute -20 KPX y abreve -20 KPX y acircumflex -20 KPX y adieresis -20 KPX y agrave -20 KPX y amacron -20 KPX y aogonek -20 KPX y aring -20 KPX y atilde -20 KPX y comma -100 KPX y e -20 KPX y eacute -20 KPX y ecaron -20 KPX y ecircumflex -20 KPX y edieresis -20 KPX y edotaccent -20 KPX y egrave -20 KPX y emacron -20 KPX y eogonek -20 KPX y o -20 KPX y oacute -20 KPX y ocircumflex -20 KPX y odieresis -20 KPX y ograve -20 KPX y ohungarumlaut -20 KPX y omacron -20 KPX y oslash -20 KPX y otilde -20 KPX y period -100 KPX yacute a -20 KPX yacute aacute -20 KPX yacute abreve -20 KPX yacute acircumflex -20 KPX yacute adieresis -20 KPX yacute agrave -20 KPX yacute amacron -20 KPX yacute aogonek -20 KPX yacute aring -20 KPX yacute atilde -20 KPX yacute comma -100 KPX yacute e -20 KPX yacute eacute -20 KPX yacute ecaron -20 KPX yacute ecircumflex -20 KPX yacute edieresis -20 KPX yacute edotaccent -20 KPX yacute egrave -20 KPX yacute emacron -20 KPX yacute eogonek -20 KPX yacute o -20 KPX yacute oacute -20 KPX yacute ocircumflex -20 KPX yacute odieresis -20 KPX yacute ograve -20 KPX yacute ohungarumlaut -20 KPX yacute omacron -20 KPX yacute oslash -20 KPX yacute otilde -20 KPX yacute period -100 KPX ydieresis a -20 KPX ydieresis aacute -20 KPX ydieresis abreve -20 KPX ydieresis acircumflex -20 KPX ydieresis adieresis -20 KPX ydieresis agrave -20 KPX ydieresis amacron -20 KPX ydieresis aogonek -20 KPX ydieresis aring -20 KPX ydieresis atilde -20 KPX ydieresis comma -100 KPX ydieresis e -20 KPX ydieresis eacute -20 KPX ydieresis ecaron -20 KPX ydieresis ecircumflex -20 KPX ydieresis edieresis -20 KPX ydieresis edotaccent -20 KPX ydieresis egrave -20 KPX ydieresis emacron -20 KPX ydieresis eogonek -20 KPX ydieresis o -20 KPX ydieresis oacute -20 KPX ydieresis ocircumflex -20 KPX ydieresis odieresis -20 KPX ydieresis ograve -20 KPX ydieresis ohungarumlaut -20 KPX ydieresis omacron -20 KPX ydieresis oslash -20 KPX ydieresis otilde -20 KPX ydieresis period -100 KPX z e -15 KPX z eacute -15 KPX z ecaron -15 KPX z ecircumflex -15 KPX z edieresis -15 KPX z edotaccent -15 KPX z egrave -15 KPX z emacron -15 KPX z eogonek -15 KPX z o -15 KPX z oacute -15 KPX z ocircumflex -15 KPX z odieresis -15 KPX z ograve -15 KPX z ohungarumlaut -15 KPX z omacron -15 KPX z oslash -15 KPX z otilde -15 KPX zacute e -15 KPX zacute eacute -15 KPX zacute ecaron -15 KPX zacute ecircumflex -15 KPX zacute edieresis -15 KPX zacute edotaccent -15 KPX zacute egrave -15 KPX zacute emacron -15 KPX zacute eogonek -15 KPX zacute o -15 KPX zacute oacute -15 KPX zacute ocircumflex -15 KPX zacute odieresis -15 KPX zacute ograve -15 KPX zacute ohungarumlaut -15 KPX zacute omacron -15 KPX zacute oslash -15 KPX zacute otilde -15 KPX zcaron e -15 KPX zcaron eacute -15 KPX zcaron ecaron -15 KPX zcaron ecircumflex -15 KPX zcaron edieresis -15 KPX zcaron edotaccent -15 KPX zcaron egrave -15 KPX zcaron emacron -15 KPX zcaron eogonek -15 KPX zcaron o -15 KPX zcaron oacute -15 KPX zcaron ocircumflex -15 KPX zcaron odieresis -15 KPX zcaron ograve -15 KPX zcaron ohungarumlaut -15 KPX zcaron omacron -15 KPX zcaron oslash -15 KPX zcaron otilde -15 KPX zdotaccent e -15 KPX zdotaccent eacute -15 KPX zdotaccent ecaron -15 KPX zdotaccent ecircumflex -15 KPX zdotaccent edieresis -15 KPX zdotaccent edotaccent -15 KPX zdotaccent egrave -15 KPX zdotaccent emacron -15 KPX zdotaccent eogonek -15 KPX zdotaccent o -15 KPX zdotaccent oacute -15 KPX zdotaccent ocircumflex -15 KPX zdotaccent odieresis -15 KPX zdotaccent ograve -15 KPX zdotaccent ohungarumlaut -15 KPX zdotaccent omacron -15 KPX zdotaccent oslash -15 KPX zdotaccent otilde -15 EndKernPairs EndKernData EndFontMetrics pmw-5.22/fontmetrics/Times-Roman.afm0000644000222100022210000017260614541067540015532 0ustar ph10ph10StartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:49:17 1997 Comment PH added entry for Euro character, copied from a different version, 19 July 2009. Comment PH added additional characters (after Euro) 16 November 2013 Comment PH added NBspace (character 160) 24 November 2019 Comment UniqueID 43068 Comment VMusage 43909 54934 FontName Times-Roman FullName Times Roman FamilyName Times Weight Roman ItalicAngle 0 IsFixedPitch false FontBBox -168 -218 1000 898 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 662 XHeight 450 Ascender 683 Descender -217 StdHW 28 StdVW 84 StartCharMetrics 361 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 130 -9 238 676 ; C 34 ; WX 408 ; N quotedbl ; B 77 431 331 676 ; C 35 ; WX 500 ; N numbersign ; B 5 0 496 662 ; C 36 ; WX 500 ; N dollar ; B 44 -87 457 727 ; C 37 ; WX 833 ; N percent ; B 61 -13 772 676 ; C 38 ; WX 778 ; N ampersand ; B 42 -13 750 676 ; C 39 ; WX 333 ; N quoteright ; B 79 433 218 676 ; C 40 ; WX 333 ; N parenleft ; B 48 -177 304 676 ; C 41 ; WX 333 ; N parenright ; B 29 -177 285 676 ; C 42 ; WX 500 ; N asterisk ; B 69 265 432 676 ; C 43 ; WX 564 ; N plus ; B 30 0 534 506 ; C 44 ; WX 250 ; N comma ; B 56 -141 195 102 ; C 45 ; WX 333 ; N hyphen ; B 39 194 285 257 ; C 46 ; WX 250 ; N period ; B 70 -11 181 100 ; C 47 ; WX 278 ; N slash ; B -9 -14 287 676 ; C 48 ; WX 500 ; N zero ; B 24 -14 476 676 ; C 49 ; WX 500 ; N one ; B 111 0 394 676 ; C 50 ; WX 500 ; N two ; B 30 0 475 676 ; C 51 ; WX 500 ; N three ; B 43 -14 431 676 ; C 52 ; WX 500 ; N four ; B 12 0 472 676 ; C 53 ; WX 500 ; N five ; B 32 -14 438 688 ; C 54 ; WX 500 ; N six ; B 34 -14 468 684 ; C 55 ; WX 500 ; N seven ; B 20 -8 449 662 ; C 56 ; WX 500 ; N eight ; B 56 -14 445 676 ; C 57 ; WX 500 ; N nine ; B 30 -22 459 676 ; C 58 ; WX 278 ; N colon ; B 81 -11 192 459 ; C 59 ; WX 278 ; N semicolon ; B 80 -141 219 459 ; C 60 ; WX 564 ; N less ; B 28 -8 536 514 ; C 61 ; WX 564 ; N equal ; B 30 120 534 386 ; C 62 ; WX 564 ; N greater ; B 28 -8 536 514 ; C 63 ; WX 444 ; N question ; B 68 -8 414 676 ; C 64 ; WX 921 ; N at ; B 116 -14 809 676 ; C 65 ; WX 722 ; N A ; B 15 0 706 674 ; C 66 ; WX 667 ; N B ; B 17 0 593 662 ; C 67 ; WX 667 ; N C ; B 28 -14 633 676 ; C 68 ; WX 722 ; N D ; B 16 0 685 662 ; C 69 ; WX 611 ; N E ; B 12 0 597 662 ; C 70 ; WX 556 ; N F ; B 12 0 546 662 ; C 71 ; WX 722 ; N G ; B 32 -14 709 676 ; C 72 ; WX 722 ; N H ; B 19 0 702 662 ; C 73 ; WX 333 ; N I ; B 18 0 315 662 ; C 74 ; WX 389 ; N J ; B 10 -14 370 662 ; C 75 ; WX 722 ; N K ; B 34 0 723 662 ; C 76 ; WX 611 ; N L ; B 12 0 598 662 ; C 77 ; WX 889 ; N M ; B 12 0 863 662 ; C 78 ; WX 722 ; N N ; B 12 -11 707 662 ; C 79 ; WX 722 ; N O ; B 34 -14 688 676 ; C 80 ; WX 556 ; N P ; B 16 0 542 662 ; C 81 ; WX 722 ; N Q ; B 34 -178 701 676 ; C 82 ; WX 667 ; N R ; B 17 0 659 662 ; C 83 ; WX 556 ; N S ; B 42 -14 491 676 ; C 84 ; WX 611 ; N T ; B 17 0 593 662 ; C 85 ; WX 722 ; N U ; B 14 -14 705 662 ; C 86 ; WX 722 ; N V ; B 16 -11 697 662 ; C 87 ; WX 944 ; N W ; B 5 -11 932 662 ; C 88 ; WX 722 ; N X ; B 10 0 704 662 ; C 89 ; WX 722 ; N Y ; B 22 0 703 662 ; C 90 ; WX 611 ; N Z ; B 9 0 597 662 ; C 91 ; WX 333 ; N bracketleft ; B 88 -156 299 662 ; C 92 ; WX 278 ; N backslash ; B -9 -14 287 676 ; C 93 ; WX 333 ; N bracketright ; B 34 -156 245 662 ; C 94 ; WX 469 ; N asciicircum ; B 24 297 446 662 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 333 ; N quoteleft ; B 115 433 254 676 ; C 97 ; WX 444 ; N a ; B 37 -10 442 460 ; C 98 ; WX 500 ; N b ; B 3 -10 468 683 ; C 99 ; WX 444 ; N c ; B 25 -10 412 460 ; C 100 ; WX 500 ; N d ; B 27 -10 491 683 ; C 101 ; WX 444 ; N e ; B 25 -10 424 460 ; C 102 ; WX 333 ; N f ; B 20 0 383 683 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B 28 -218 470 460 ; C 104 ; WX 500 ; N h ; B 9 0 487 683 ; C 105 ; WX 278 ; N i ; B 16 0 253 683 ; C 106 ; WX 278 ; N j ; B -70 -218 194 683 ; C 107 ; WX 500 ; N k ; B 7 0 505 683 ; C 108 ; WX 278 ; N l ; B 19 0 257 683 ; C 109 ; WX 778 ; N m ; B 16 0 775 460 ; C 110 ; WX 500 ; N n ; B 16 0 485 460 ; C 111 ; WX 500 ; N o ; B 29 -10 470 460 ; C 112 ; WX 500 ; N p ; B 5 -217 470 460 ; C 113 ; WX 500 ; N q ; B 24 -217 488 460 ; C 114 ; WX 333 ; N r ; B 5 0 335 460 ; C 115 ; WX 389 ; N s ; B 51 -10 348 460 ; C 116 ; WX 278 ; N t ; B 13 -10 279 579 ; C 117 ; WX 500 ; N u ; B 9 -10 479 450 ; C 118 ; WX 500 ; N v ; B 19 -14 477 450 ; C 119 ; WX 722 ; N w ; B 21 -14 694 450 ; C 120 ; WX 500 ; N x ; B 17 0 479 450 ; C 121 ; WX 500 ; N y ; B 14 -218 475 450 ; C 122 ; WX 444 ; N z ; B 27 0 418 450 ; C 123 ; WX 480 ; N braceleft ; B 100 -181 350 680 ; C 124 ; WX 200 ; N bar ; B 67 -218 133 782 ; C 125 ; WX 480 ; N braceright ; B 130 -181 380 680 ; C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ; C 160 ; WX 250 ; N NBspace ; B 0 0 0 0 ; C 161 ; WX 333 ; N exclamdown ; B 97 -218 205 467 ; C 162 ; WX 500 ; N cent ; B 53 -138 448 579 ; C 163 ; WX 500 ; N sterling ; B 12 -8 490 676 ; C 164 ; WX 167 ; N fraction ; B -168 -14 331 676 ; C 165 ; WX 500 ; N yen ; B -53 0 512 662 ; C 166 ; WX 500 ; N florin ; B 7 -189 490 676 ; C 167 ; WX 500 ; N section ; B 70 -148 426 676 ; C 168 ; WX 500 ; N currency ; B -22 58 522 602 ; C 169 ; WX 180 ; N quotesingle ; B 48 431 133 676 ; C 170 ; WX 444 ; N quotedblleft ; B 43 433 414 676 ; C 171 ; WX 500 ; N guillemotleft ; B 42 33 456 416 ; C 172 ; WX 333 ; N guilsinglleft ; B 63 33 285 416 ; C 173 ; WX 333 ; N guilsinglright ; B 48 33 270 416 ; C 174 ; WX 556 ; N fi ; B 31 0 521 683 ; C 175 ; WX 556 ; N fl ; B 32 0 521 683 ; C 177 ; WX 500 ; N endash ; B 0 201 500 250 ; C 178 ; WX 500 ; N dagger ; B 59 -149 442 676 ; C 179 ; WX 500 ; N daggerdbl ; B 58 -153 442 676 ; C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ; C 182 ; WX 453 ; N paragraph ; B -22 -154 450 662 ; C 183 ; WX 350 ; N bullet ; B 40 196 310 466 ; C 184 ; WX 333 ; N quotesinglbase ; B 79 -141 218 102 ; C 185 ; WX 444 ; N quotedblbase ; B 45 -141 416 102 ; C 186 ; WX 444 ; N quotedblright ; B 30 433 401 676 ; C 187 ; WX 500 ; N guillemotright ; B 44 33 458 416 ; C 188 ; WX 1000 ; N ellipsis ; B 111 -11 888 100 ; C 189 ; WX 1000 ; N perthousand ; B 7 -19 994 706 ; C 191 ; WX 444 ; N questiondown ; B 30 -218 376 466 ; C 193 ; WX 333 ; N grave ; B 19 507 242 678 ; C 194 ; WX 333 ; N acute ; B 93 507 317 678 ; C 195 ; WX 333 ; N circumflex ; B 11 507 322 674 ; C 196 ; WX 333 ; N tilde ; B 1 532 331 638 ; C 197 ; WX 333 ; N macron ; B 11 547 322 601 ; C 198 ; WX 333 ; N breve ; B 26 507 307 664 ; C 199 ; WX 333 ; N dotaccent ; B 118 581 216 681 ; C 200 ; WX 333 ; N dieresis ; B 18 581 315 681 ; C 202 ; WX 333 ; N ring ; B 67 512 266 711 ; C 203 ; WX 333 ; N cedilla ; B 52 -215 261 0 ; C 205 ; WX 333 ; N hungarumlaut ; B -3 507 377 678 ; C 206 ; WX 333 ; N ogonek ; B 62 -165 243 0 ; C 207 ; WX 333 ; N caron ; B 11 507 322 674 ; C 208 ; WX 1000 ; N emdash ; B 0 201 1000 250 ; C 225 ; WX 889 ; N AE ; B 0 0 863 662 ; C 227 ; WX 276 ; N ordfeminine ; B 4 394 270 676 ; C 232 ; WX 611 ; N Lslash ; B 12 0 598 662 ; C 233 ; WX 722 ; N Oslash ; B 34 -80 688 734 ; C 234 ; WX 889 ; N OE ; B 30 -6 885 668 ; C 235 ; WX 310 ; N ordmasculine ; B 6 394 304 676 ; C 241 ; WX 667 ; N ae ; B 38 -10 632 460 ; C 245 ; WX 278 ; N dotlessi ; B 16 0 253 460 ; C 248 ; WX 278 ; N lslash ; B 19 0 259 683 ; C 249 ; WX 500 ; N oslash ; B 29 -112 470 551 ; C 250 ; WX 722 ; N oe ; B 30 -10 690 460 ; C 251 ; WX 500 ; N germandbls ; B 12 -9 468 683 ; C -1 ; WX 333 ; N Idieresis ; B 18 0 315 835 ; C -1 ; WX 444 ; N eacute ; B 25 -10 424 678 ; C -1 ; WX 444 ; N abreve ; B 37 -10 442 664 ; C -1 ; WX 500 ; N uhungarumlaut ; B 9 -10 501 678 ; C -1 ; WX 444 ; N ecaron ; B 25 -10 424 674 ; C -1 ; WX 722 ; N Ydieresis ; B 22 0 703 835 ; C -1 ; WX 564 ; N divide ; B 30 -10 534 516 ; C -1 ; WX 722 ; N Yacute ; B 22 0 703 890 ; C -1 ; WX 722 ; N Acircumflex ; B 15 0 706 886 ; C -1 ; WX 444 ; N aacute ; B 37 -10 442 678 ; C -1 ; WX 722 ; N Ucircumflex ; B 14 -14 705 886 ; C -1 ; WX 500 ; N yacute ; B 14 -218 475 678 ; C -1 ; WX 389 ; N scommaaccent ; B 51 -218 348 460 ; C -1 ; WX 444 ; N ecircumflex ; B 25 -10 424 674 ; C -1 ; WX 722 ; N Uring ; B 14 -14 705 898 ; C -1 ; WX 722 ; N Udieresis ; B 14 -14 705 835 ; C -1 ; WX 444 ; N aogonek ; B 37 -165 469 460 ; C -1 ; WX 722 ; N Uacute ; B 14 -14 705 890 ; C -1 ; WX 500 ; N uogonek ; B 9 -155 487 450 ; C -1 ; WX 611 ; N Edieresis ; B 12 0 597 835 ; C -1 ; WX 722 ; N Dcroat ; B 16 0 685 662 ; C -1 ; WX 250 ; N commaaccent ; B 59 -218 184 -50 ; C -1 ; WX 760 ; N copyright ; B 38 -14 722 676 ; C -1 ; WX 611 ; N Emacron ; B 12 0 597 813 ; C -1 ; WX 444 ; N ccaron ; B 25 -10 412 674 ; C -1 ; WX 444 ; N aring ; B 37 -10 442 711 ; C -1 ; WX 722 ; N Ncommaaccent ; B 12 -198 707 662 ; C -1 ; WX 278 ; N lacute ; B 19 0 290 890 ; C -1 ; WX 444 ; N agrave ; B 37 -10 442 678 ; C -1 ; WX 611 ; N Tcommaaccent ; B 17 -218 593 662 ; C -1 ; WX 667 ; N Cacute ; B 28 -14 633 890 ; C -1 ; WX 444 ; N atilde ; B 37 -10 442 638 ; C -1 ; WX 611 ; N Edotaccent ; B 12 0 597 835 ; C -1 ; WX 389 ; N scaron ; B 39 -10 350 674 ; C -1 ; WX 389 ; N scedilla ; B 51 -215 348 460 ; C -1 ; WX 278 ; N iacute ; B 16 0 290 678 ; C -1 ; WX 471 ; N lozenge ; B 13 0 459 724 ; C -1 ; WX 667 ; N Rcaron ; B 17 0 659 886 ; C -1 ; WX 722 ; N Gcommaaccent ; B 32 -218 709 676 ; C -1 ; WX 500 ; N ucircumflex ; B 9 -10 479 674 ; C -1 ; WX 444 ; N acircumflex ; B 37 -10 442 674 ; C -1 ; WX 722 ; N Amacron ; B 15 0 706 813 ; C -1 ; WX 333 ; N rcaron ; B 5 0 335 674 ; C -1 ; WX 444 ; N ccedilla ; B 25 -215 412 460 ; C -1 ; WX 611 ; N Zdotaccent ; B 9 0 597 835 ; C -1 ; WX 556 ; N Thorn ; B 16 0 542 662 ; C -1 ; WX 722 ; N Omacron ; B 34 -14 688 813 ; C -1 ; WX 667 ; N Racute ; B 17 0 659 890 ; C -1 ; WX 556 ; N Sacute ; B 42 -14 491 890 ; C -1 ; WX 588 ; N dcaron ; B 27 -10 589 695 ; C -1 ; WX 722 ; N Umacron ; B 14 -14 705 813 ; C -1 ; WX 500 ; N uring ; B 9 -10 479 711 ; C -1 ; WX 300 ; N threesuperior ; B 15 262 291 676 ; C -1 ; WX 722 ; N Ograve ; B 34 -14 688 890 ; C -1 ; WX 722 ; N Agrave ; B 15 0 706 890 ; C -1 ; WX 722 ; N Abreve ; B 15 0 706 876 ; C -1 ; WX 564 ; N multiply ; B 38 8 527 497 ; C -1 ; WX 500 ; N uacute ; B 9 -10 479 678 ; C -1 ; WX 611 ; N Tcaron ; B 17 0 593 886 ; C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ; C -1 ; WX 500 ; N ydieresis ; B 14 -218 475 623 ; C -1 ; WX 722 ; N Nacute ; B 12 -11 707 890 ; C -1 ; WX 278 ; N icircumflex ; B -16 0 295 674 ; C -1 ; WX 611 ; N Ecircumflex ; B 12 0 597 886 ; C -1 ; WX 444 ; N adieresis ; B 37 -10 442 623 ; C -1 ; WX 444 ; N edieresis ; B 25 -10 424 623 ; C -1 ; WX 444 ; N cacute ; B 25 -10 413 678 ; C -1 ; WX 500 ; N nacute ; B 16 0 485 678 ; C -1 ; WX 500 ; N umacron ; B 9 -10 479 601 ; C -1 ; WX 722 ; N Ncaron ; B 12 -11 707 886 ; C -1 ; WX 333 ; N Iacute ; B 18 0 317 890 ; C -1 ; WX 564 ; N plusminus ; B 30 0 534 506 ; C -1 ; WX 200 ; N brokenbar ; B 67 -143 133 707 ; C -1 ; WX 760 ; N registered ; B 38 -14 722 676 ; C -1 ; WX 722 ; N Gbreve ; B 32 -14 709 876 ; C -1 ; WX 333 ; N Idotaccent ; B 18 0 315 835 ; C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ; C -1 ; WX 611 ; N Egrave ; B 12 0 597 890 ; C -1 ; WX 333 ; N racute ; B 5 0 335 678 ; C -1 ; WX 500 ; N omacron ; B 29 -10 470 601 ; C -1 ; WX 611 ; N Zacute ; B 9 0 597 890 ; C -1 ; WX 611 ; N Zcaron ; B 9 0 597 886 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 666 ; C -1 ; WX 722 ; N Eth ; B 16 0 685 662 ; C -1 ; WX 667 ; N Ccedilla ; B 28 -215 633 676 ; C -1 ; WX 278 ; N lcommaaccent ; B 19 -218 257 683 ; C -1 ; WX 326 ; N tcaron ; B 13 -10 318 722 ; C -1 ; WX 444 ; N eogonek ; B 25 -165 424 460 ; C -1 ; WX 722 ; N Uogonek ; B 14 -165 705 662 ; C -1 ; WX 722 ; N Aacute ; B 15 0 706 890 ; C -1 ; WX 722 ; N Adieresis ; B 15 0 706 835 ; C -1 ; WX 444 ; N egrave ; B 25 -10 424 678 ; C -1 ; WX 444 ; N zacute ; B 27 0 418 678 ; C -1 ; WX 278 ; N iogonek ; B 16 -165 265 683 ; C -1 ; WX 722 ; N Oacute ; B 34 -14 688 890 ; C -1 ; WX 500 ; N oacute ; B 29 -10 470 678 ; C -1 ; WX 444 ; N amacron ; B 37 -10 442 601 ; C -1 ; WX 389 ; N sacute ; B 51 -10 348 678 ; C -1 ; WX 278 ; N idieresis ; B -9 0 288 623 ; C -1 ; WX 722 ; N Ocircumflex ; B 34 -14 688 886 ; C -1 ; WX 722 ; N Ugrave ; B 14 -14 705 890 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 500 ; N thorn ; B 5 -217 470 683 ; C -1 ; WX 300 ; N twosuperior ; B 1 270 296 676 ; C -1 ; WX 722 ; N Odieresis ; B 34 -14 688 835 ; C -1 ; WX 500 ; N mu ; B 36 -218 512 450 ; C -1 ; WX 278 ; N igrave ; B -8 0 253 678 ; C -1 ; WX 500 ; N ohungarumlaut ; B 29 -10 491 678 ; C -1 ; WX 611 ; N Eogonek ; B 12 -165 597 662 ; C -1 ; WX 500 ; N dcroat ; B 27 -10 500 683 ; C -1 ; WX 750 ; N threequarters ; B 15 -14 718 676 ; C -1 ; WX 556 ; N Scedilla ; B 42 -215 491 676 ; C -1 ; WX 344 ; N lcaron ; B 19 0 347 695 ; C -1 ; WX 722 ; N Kcommaaccent ; B 34 -198 723 662 ; C -1 ; WX 611 ; N Lacute ; B 12 0 598 890 ; C -1 ; WX 980 ; N trademark ; B 30 256 957 662 ; C -1 ; WX 444 ; N edotaccent ; B 25 -10 424 623 ; C -1 ; WX 333 ; N Igrave ; B 18 0 315 890 ; C -1 ; WX 333 ; N Imacron ; B 11 0 322 813 ; C -1 ; WX 611 ; N Lcaron ; B 12 0 598 676 ; C -1 ; WX 750 ; N onehalf ; B 31 -14 746 676 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 666 ; C -1 ; WX 500 ; N ocircumflex ; B 29 -10 470 674 ; C -1 ; WX 500 ; N ntilde ; B 16 0 485 638 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 14 -14 705 890 ; C -1 ; WX 611 ; N Eacute ; B 12 0 597 890 ; C -1 ; WX 444 ; N emacron ; B 25 -10 424 601 ; C -1 ; WX 500 ; N gbreve ; B 28 -218 470 664 ; C -1 ; WX 750 ; N onequarter ; B 37 -14 718 676 ; C -1 ; WX 556 ; N Scaron ; B 42 -14 491 886 ; C -1 ; WX 556 ; N Scommaaccent ; B 42 -218 491 676 ; C -1 ; WX 722 ; N Ohungarumlaut ; B 34 -14 688 890 ; C -1 ; WX 400 ; N degree ; B 57 390 343 676 ; C -1 ; WX 500 ; N ograve ; B 29 -10 470 678 ; C -1 ; WX 667 ; N Ccaron ; B 28 -14 633 886 ; C -1 ; WX 500 ; N ugrave ; B 9 -10 479 678 ; C -1 ; WX 453 ; N radical ; B 2 -60 452 768 ; C -1 ; WX 722 ; N Dcaron ; B 16 0 685 886 ; C -1 ; WX 333 ; N rcommaaccent ; B 5 -218 335 460 ; C -1 ; WX 722 ; N Ntilde ; B 12 -11 707 850 ; C -1 ; WX 500 ; N otilde ; B 29 -10 470 638 ; C -1 ; WX 667 ; N Rcommaaccent ; B 17 -198 659 662 ; C -1 ; WX 611 ; N Lcommaaccent ; B 12 -218 598 662 ; C -1 ; WX 722 ; N Atilde ; B 15 0 706 850 ; C -1 ; WX 722 ; N Aogonek ; B 15 -165 738 674 ; C -1 ; WX 722 ; N Aring ; B 15 0 706 898 ; C -1 ; WX 722 ; N Otilde ; B 34 -14 688 850 ; C -1 ; WX 444 ; N zdotaccent ; B 27 0 418 623 ; C -1 ; WX 611 ; N Ecaron ; B 12 0 597 886 ; C -1 ; WX 333 ; N Iogonek ; B 18 -165 315 662 ; C -1 ; WX 500 ; N kcommaaccent ; B 7 -218 505 683 ; C -1 ; WX 564 ; N minus ; B 30 220 534 286 ; C -1 ; WX 333 ; N Icircumflex ; B 11 0 322 886 ; C -1 ; WX 500 ; N ncaron ; B 16 0 485 674 ; C -1 ; WX 278 ; N tcommaaccent ; B 13 -218 279 579 ; C -1 ; WX 564 ; N logicalnot ; B 30 108 534 386 ; C -1 ; WX 500 ; N odieresis ; B 29 -10 470 623 ; C -1 ; WX 500 ; N udieresis ; B 9 -10 479 623 ; C -1 ; WX 549 ; N notequal ; B 12 -31 537 547 ; C -1 ; WX 500 ; N gcommaaccent ; B 28 -218 470 749 ; C -1 ; WX 500 ; N eth ; B 29 -10 471 686 ; C -1 ; WX 444 ; N zcaron ; B 27 0 418 674 ; C -1 ; WX 500 ; N ncommaaccent ; B 16 -218 485 460 ; C -1 ; WX 300 ; N onesuperior ; B 57 270 248 676 ; C -1 ; WX 278 ; N imacron ; B 6 0 271 601 ; C -1 ; WX 500 ; N Euro ; B 0 0 0 0 ; C -1 ; WX 667 ; N Ccircumflex ; B 28 -14 633 879 ; C -1 ; WX 444 ; N ccircumflex ; B 25 -10 412 667 ; C -1 ; WX 667 ; N Cdotaccent ; B 28 -14 633 811 ; C -1 ; WX 444 ; N cdotaccent ; B 25 -10 412 599 ; C -1 ; WX 611 ; N Ebreve ; B 12 0 597 869 ; C -1 ; WX 444 ; N ebreve ; B 25 -10 424 657 ; C -1 ; WX 722 ; N Gcircumflex ; B 32 -14 709 879 ; C -1 ; WX 500 ; N gcircumflex ; B 28 -218 470 667 ; C -1 ; WX 722 ; N Gdotaccent ; B 32 -14 709 811 ; C -1 ; WX 500 ; N gdotaccent ; B 28 -218 470 599 ; C -1 ; WX 722 ; N Hcircumflex ; B 12 0 695 879 ; C -1 ; WX 500 ; N hcircumflex ; B 8 0 487 890 ; C -1 ; WX 722 ; N Hbar ; B 10 0 711 662 ; C -1 ; WX 548 ; N hbar ; B 9 0 535 683 ; C -1 ; WX 333 ; N Itilde ; B -4 0 326 818 ; C -1 ; WX 278 ; N itilde ; B -30 0 300 606 ; C -1 ; WX 333 ; N Ibreve ; B 12 0 309 869 ; C -1 ; WX 278 ; N ibreve ; B -6 0 275 657 ; C -1 ; WX 694 ; N IJ ; B 12 -14 673 662 ; C -1 ; WX 396 ; N ij ; B 16 -214 380 687 ; C -1 ; WX 389 ; N Jcircumflex ; B 10 -14 370 879 ; C -1 ; WX 278 ; N jcircumflex ; B -70 -218 295 723 ; C -1 ; WX 500 ; N kgreenlandic ; B 7 0 490 460 ; C -1 ; WX 611 ; N Ldot ; B 12 0 598 662 ; C -1 ; WX 416 ; N ldot ; B 19 0 365 683 ; C -1 ; WX 598 ; N napostrophe ; B 23 0 582 599 ; C -1 ; WX 722 ; N Eng ; B 12 -218 707 662 ; C -1 ; WX 500 ; N eng ; B 16 -218 424 460 ; C -1 ; WX 722 ; N Obreve ; B 34 -14 688 869 ; C -1 ; WX 500 ; N obreve ; B 29 -10 470 657 ; C -1 ; WX 556 ; N Scircumflex ; B 42 -14 491 879 ; C -1 ; WX 389 ; N scircumflex ; B 44 -10 355 667 ; C -1 ; WX 611 ; N Tbar ; B 17 0 593 662 ; C -1 ; WX 278 ; N tbar ; B 3 -10 279 579 ; C -1 ; WX 611 ; N Tcedilla ; B 17 -215 593 662 ; C -1 ; WX 278 ; N tcedilla ; B 13 -215 279 579 ; C -1 ; WX 722 ; N Utilde ; B 14 -14 705 818 ; C -1 ; WX 500 ; N utilde ; B 9 -10 479 606 ; C -1 ; WX 722 ; N Ubreve ; B 14 -14 705 869 ; C -1 ; WX 500 ; N ubreve ; B 9 -10 479 657 ; C -1 ; WX 944 ; N Wcircumflex ; B 5 -11 932 879 ; C -1 ; WX 722 ; N wcircumflex ; B 21 -14 694 667 ; C -1 ; WX 722 ; N Ycircumflex ; B 22 0 703 879 ; C -1 ; WX 500 ; N ycircumflex ; B 14 -218 475 667 ; C -1 ; WX 333 ; N longs ; B 20 0 383 683 ; C -1 ; WX 677 ; N infinity ; B 25 53 653 434 ; EndCharMetrics StartKernData StartKernPairs 2073 KPX A C -40 KPX A Cacute -40 KPX A Ccaron -40 KPX A Ccedilla -40 KPX A G -40 KPX A Gbreve -40 KPX A Gcommaaccent -40 KPX A O -55 KPX A Oacute -55 KPX A Ocircumflex -55 KPX A Odieresis -55 KPX A Ograve -55 KPX A Ohungarumlaut -55 KPX A Omacron -55 KPX A Oslash -55 KPX A Otilde -55 KPX A Q -55 KPX A T -111 KPX A Tcaron -111 KPX A Tcommaaccent -111 KPX A U -55 KPX A Uacute -55 KPX A Ucircumflex -55 KPX A Udieresis -55 KPX A Ugrave -55 KPX A Uhungarumlaut -55 KPX A Umacron -55 KPX A Uogonek -55 KPX A Uring -55 KPX A V -135 KPX A W -90 KPX A Y -105 KPX A Yacute -105 KPX A Ydieresis -105 KPX A quoteright -111 KPX A v -74 KPX A w -92 KPX A y -92 KPX A yacute -92 KPX A ydieresis -92 KPX Aacute C -40 KPX Aacute Cacute -40 KPX Aacute Ccaron -40 KPX Aacute Ccedilla -40 KPX Aacute G -40 KPX Aacute Gbreve -40 KPX Aacute Gcommaaccent -40 KPX Aacute O -55 KPX Aacute Oacute -55 KPX Aacute Ocircumflex -55 KPX Aacute Odieresis -55 KPX Aacute Ograve -55 KPX Aacute Ohungarumlaut -55 KPX Aacute Omacron -55 KPX Aacute Oslash -55 KPX Aacute Otilde -55 KPX Aacute Q -55 KPX Aacute T -111 KPX Aacute Tcaron -111 KPX Aacute Tcommaaccent -111 KPX Aacute U -55 KPX Aacute Uacute -55 KPX Aacute Ucircumflex -55 KPX Aacute Udieresis -55 KPX Aacute Ugrave -55 KPX Aacute Uhungarumlaut -55 KPX Aacute Umacron -55 KPX Aacute Uogonek -55 KPX Aacute Uring -55 KPX Aacute V -135 KPX Aacute W -90 KPX Aacute Y -105 KPX Aacute Yacute -105 KPX Aacute Ydieresis -105 KPX Aacute quoteright -111 KPX Aacute v -74 KPX Aacute w -92 KPX Aacute y -92 KPX Aacute yacute -92 KPX Aacute ydieresis -92 KPX Abreve C -40 KPX Abreve Cacute -40 KPX Abreve Ccaron -40 KPX Abreve Ccedilla -40 KPX Abreve G -40 KPX Abreve Gbreve -40 KPX Abreve Gcommaaccent -40 KPX Abreve O -55 KPX Abreve Oacute -55 KPX Abreve Ocircumflex -55 KPX Abreve Odieresis -55 KPX Abreve Ograve -55 KPX Abreve Ohungarumlaut -55 KPX Abreve Omacron -55 KPX Abreve Oslash -55 KPX Abreve Otilde -55 KPX Abreve Q -55 KPX Abreve T -111 KPX Abreve Tcaron -111 KPX Abreve Tcommaaccent -111 KPX Abreve U -55 KPX Abreve Uacute -55 KPX Abreve Ucircumflex -55 KPX Abreve Udieresis -55 KPX Abreve Ugrave -55 KPX Abreve Uhungarumlaut -55 KPX Abreve Umacron -55 KPX Abreve Uogonek -55 KPX Abreve Uring -55 KPX Abreve V -135 KPX Abreve W -90 KPX Abreve Y -105 KPX Abreve Yacute -105 KPX Abreve Ydieresis -105 KPX Abreve quoteright -111 KPX Abreve v -74 KPX Abreve w -92 KPX Abreve y -92 KPX Abreve yacute -92 KPX Abreve ydieresis -92 KPX Acircumflex C -40 KPX Acircumflex Cacute -40 KPX Acircumflex Ccaron -40 KPX Acircumflex Ccedilla -40 KPX Acircumflex G -40 KPX Acircumflex Gbreve -40 KPX Acircumflex Gcommaaccent -40 KPX Acircumflex O -55 KPX Acircumflex Oacute -55 KPX Acircumflex Ocircumflex -55 KPX Acircumflex Odieresis -55 KPX Acircumflex Ograve -55 KPX Acircumflex Ohungarumlaut -55 KPX Acircumflex Omacron -55 KPX Acircumflex Oslash -55 KPX Acircumflex Otilde -55 KPX Acircumflex Q -55 KPX Acircumflex T -111 KPX Acircumflex Tcaron -111 KPX Acircumflex Tcommaaccent -111 KPX Acircumflex U -55 KPX Acircumflex Uacute -55 KPX Acircumflex Ucircumflex -55 KPX Acircumflex Udieresis -55 KPX Acircumflex Ugrave -55 KPX Acircumflex Uhungarumlaut -55 KPX Acircumflex Umacron -55 KPX Acircumflex Uogonek -55 KPX Acircumflex Uring -55 KPX Acircumflex V -135 KPX Acircumflex W -90 KPX Acircumflex Y -105 KPX Acircumflex Yacute -105 KPX Acircumflex Ydieresis -105 KPX Acircumflex quoteright -111 KPX Acircumflex v -74 KPX Acircumflex w -92 KPX Acircumflex y -92 KPX Acircumflex yacute -92 KPX Acircumflex ydieresis -92 KPX Adieresis C -40 KPX Adieresis Cacute -40 KPX Adieresis Ccaron -40 KPX Adieresis Ccedilla -40 KPX Adieresis G -40 KPX Adieresis Gbreve -40 KPX Adieresis Gcommaaccent -40 KPX Adieresis O -55 KPX Adieresis Oacute -55 KPX Adieresis Ocircumflex -55 KPX Adieresis Odieresis -55 KPX Adieresis Ograve -55 KPX Adieresis Ohungarumlaut -55 KPX Adieresis Omacron -55 KPX Adieresis Oslash -55 KPX Adieresis Otilde -55 KPX Adieresis Q -55 KPX Adieresis T -111 KPX Adieresis Tcaron -111 KPX Adieresis Tcommaaccent -111 KPX Adieresis U -55 KPX Adieresis Uacute -55 KPX Adieresis Ucircumflex -55 KPX Adieresis Udieresis -55 KPX Adieresis Ugrave -55 KPX Adieresis Uhungarumlaut -55 KPX Adieresis Umacron -55 KPX Adieresis Uogonek -55 KPX Adieresis Uring -55 KPX Adieresis V -135 KPX Adieresis W -90 KPX Adieresis Y -105 KPX Adieresis Yacute -105 KPX Adieresis Ydieresis -105 KPX Adieresis quoteright -111 KPX Adieresis v -74 KPX Adieresis w -92 KPX Adieresis y -92 KPX Adieresis yacute -92 KPX Adieresis ydieresis -92 KPX Agrave C -40 KPX Agrave Cacute -40 KPX Agrave Ccaron -40 KPX Agrave Ccedilla -40 KPX Agrave G -40 KPX Agrave Gbreve -40 KPX Agrave Gcommaaccent -40 KPX Agrave O -55 KPX Agrave Oacute -55 KPX Agrave Ocircumflex -55 KPX Agrave Odieresis -55 KPX Agrave Ograve -55 KPX Agrave Ohungarumlaut -55 KPX Agrave Omacron -55 KPX Agrave Oslash -55 KPX Agrave Otilde -55 KPX Agrave Q -55 KPX Agrave T -111 KPX Agrave Tcaron -111 KPX Agrave Tcommaaccent -111 KPX Agrave U -55 KPX Agrave Uacute -55 KPX Agrave Ucircumflex -55 KPX Agrave Udieresis -55 KPX Agrave Ugrave -55 KPX Agrave Uhungarumlaut -55 KPX Agrave Umacron -55 KPX Agrave Uogonek -55 KPX Agrave Uring -55 KPX Agrave V -135 KPX Agrave W -90 KPX Agrave Y -105 KPX Agrave Yacute -105 KPX Agrave Ydieresis -105 KPX Agrave quoteright -111 KPX Agrave v -74 KPX Agrave w -92 KPX Agrave y -92 KPX Agrave yacute -92 KPX Agrave ydieresis -92 KPX Amacron C -40 KPX Amacron Cacute -40 KPX Amacron Ccaron -40 KPX Amacron Ccedilla -40 KPX Amacron G -40 KPX Amacron Gbreve -40 KPX Amacron Gcommaaccent -40 KPX Amacron O -55 KPX Amacron Oacute -55 KPX Amacron Ocircumflex -55 KPX Amacron Odieresis -55 KPX Amacron Ograve -55 KPX Amacron Ohungarumlaut -55 KPX Amacron Omacron -55 KPX Amacron Oslash -55 KPX Amacron Otilde -55 KPX Amacron Q -55 KPX Amacron T -111 KPX Amacron Tcaron -111 KPX Amacron Tcommaaccent -111 KPX Amacron U -55 KPX Amacron Uacute -55 KPX Amacron Ucircumflex -55 KPX Amacron Udieresis -55 KPX Amacron Ugrave -55 KPX Amacron Uhungarumlaut -55 KPX Amacron Umacron -55 KPX Amacron Uogonek -55 KPX Amacron Uring -55 KPX Amacron V -135 KPX Amacron W -90 KPX Amacron Y -105 KPX Amacron Yacute -105 KPX Amacron Ydieresis -105 KPX Amacron quoteright -111 KPX Amacron v -74 KPX Amacron w -92 KPX Amacron y -92 KPX Amacron yacute -92 KPX Amacron ydieresis -92 KPX Aogonek C -40 KPX Aogonek Cacute -40 KPX Aogonek Ccaron -40 KPX Aogonek Ccedilla -40 KPX Aogonek G -40 KPX Aogonek Gbreve -40 KPX Aogonek Gcommaaccent -40 KPX Aogonek O -55 KPX Aogonek Oacute -55 KPX Aogonek Ocircumflex -55 KPX Aogonek Odieresis -55 KPX Aogonek Ograve -55 KPX Aogonek Ohungarumlaut -55 KPX Aogonek Omacron -55 KPX Aogonek Oslash -55 KPX Aogonek Otilde -55 KPX Aogonek Q -55 KPX Aogonek T -111 KPX Aogonek Tcaron -111 KPX Aogonek Tcommaaccent -111 KPX Aogonek U -55 KPX Aogonek Uacute -55 KPX Aogonek Ucircumflex -55 KPX Aogonek Udieresis -55 KPX Aogonek Ugrave -55 KPX Aogonek Uhungarumlaut -55 KPX Aogonek Umacron -55 KPX Aogonek Uogonek -55 KPX Aogonek Uring -55 KPX Aogonek V -135 KPX Aogonek W -90 KPX Aogonek Y -105 KPX Aogonek Yacute -105 KPX Aogonek Ydieresis -105 KPX Aogonek quoteright -111 KPX Aogonek v -74 KPX Aogonek w -52 KPX Aogonek y -52 KPX Aogonek yacute -52 KPX Aogonek ydieresis -52 KPX Aring C -40 KPX Aring Cacute -40 KPX Aring Ccaron -40 KPX Aring Ccedilla -40 KPX Aring G -40 KPX Aring Gbreve -40 KPX Aring Gcommaaccent -40 KPX Aring O -55 KPX Aring Oacute -55 KPX Aring Ocircumflex -55 KPX Aring Odieresis -55 KPX Aring Ograve -55 KPX Aring Ohungarumlaut -55 KPX Aring Omacron -55 KPX Aring Oslash -55 KPX Aring Otilde -55 KPX Aring Q -55 KPX Aring T -111 KPX Aring Tcaron -111 KPX Aring Tcommaaccent -111 KPX Aring U -55 KPX Aring Uacute -55 KPX Aring Ucircumflex -55 KPX Aring Udieresis -55 KPX Aring Ugrave -55 KPX Aring Uhungarumlaut -55 KPX Aring Umacron -55 KPX Aring Uogonek -55 KPX Aring Uring -55 KPX Aring V -135 KPX Aring W -90 KPX Aring Y -105 KPX Aring Yacute -105 KPX Aring Ydieresis -105 KPX Aring quoteright -111 KPX Aring v -74 KPX Aring w -92 KPX Aring y -92 KPX Aring yacute -92 KPX Aring ydieresis -92 KPX Atilde C -40 KPX Atilde Cacute -40 KPX Atilde Ccaron -40 KPX Atilde Ccedilla -40 KPX Atilde G -40 KPX Atilde Gbreve -40 KPX Atilde Gcommaaccent -40 KPX Atilde O -55 KPX Atilde Oacute -55 KPX Atilde Ocircumflex -55 KPX Atilde Odieresis -55 KPX Atilde Ograve -55 KPX Atilde Ohungarumlaut -55 KPX Atilde Omacron -55 KPX Atilde Oslash -55 KPX Atilde Otilde -55 KPX Atilde Q -55 KPX Atilde T -111 KPX Atilde Tcaron -111 KPX Atilde Tcommaaccent -111 KPX Atilde U -55 KPX Atilde Uacute -55 KPX Atilde Ucircumflex -55 KPX Atilde Udieresis -55 KPX Atilde Ugrave -55 KPX Atilde Uhungarumlaut -55 KPX Atilde Umacron -55 KPX Atilde Uogonek -55 KPX Atilde Uring -55 KPX Atilde V -135 KPX Atilde W -90 KPX Atilde Y -105 KPX Atilde Yacute -105 KPX Atilde Ydieresis -105 KPX Atilde quoteright -111 KPX Atilde v -74 KPX Atilde w -92 KPX Atilde y -92 KPX Atilde yacute -92 KPX Atilde ydieresis -92 KPX B A -35 KPX B Aacute -35 KPX B Abreve -35 KPX B Acircumflex -35 KPX B Adieresis -35 KPX B Agrave -35 KPX B Amacron -35 KPX B Aogonek -35 KPX B Aring -35 KPX B Atilde -35 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -40 KPX D W -30 KPX D Y -55 KPX D Yacute -55 KPX D Ydieresis -55 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -40 KPX Dcaron W -30 KPX Dcaron Y -55 KPX Dcaron Yacute -55 KPX Dcaron Ydieresis -55 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -40 KPX Dcroat W -30 KPX Dcroat Y -55 KPX Dcroat Yacute -55 KPX Dcroat Ydieresis -55 KPX F A -74 KPX F Aacute -74 KPX F Abreve -74 KPX F Acircumflex -74 KPX F Adieresis -74 KPX F Agrave -74 KPX F Amacron -74 KPX F Aogonek -74 KPX F Aring -74 KPX F Atilde -74 KPX F a -15 KPX F aacute -15 KPX F abreve -15 KPX F acircumflex -15 KPX F adieresis -15 KPX F agrave -15 KPX F amacron -15 KPX F aogonek -15 KPX F aring -15 KPX F atilde -15 KPX F comma -80 KPX F o -15 KPX F oacute -15 KPX F ocircumflex -15 KPX F odieresis -15 KPX F ograve -15 KPX F ohungarumlaut -15 KPX F omacron -15 KPX F oslash -15 KPX F otilde -15 KPX F period -80 KPX J A -60 KPX J Aacute -60 KPX J Abreve -60 KPX J Acircumflex -60 KPX J Adieresis -60 KPX J Agrave -60 KPX J Amacron -60 KPX J Aogonek -60 KPX J Aring -60 KPX J Atilde -60 KPX K O -30 KPX K Oacute -30 KPX K Ocircumflex -30 KPX K Odieresis -30 KPX K Ograve -30 KPX K Ohungarumlaut -30 KPX K Omacron -30 KPX K Oslash -30 KPX K Otilde -30 KPX K e -25 KPX K eacute -25 KPX K ecaron -25 KPX K ecircumflex -25 KPX K edieresis -25 KPX K edotaccent -25 KPX K egrave -25 KPX K emacron -25 KPX K eogonek -25 KPX K o -35 KPX K oacute -35 KPX K ocircumflex -35 KPX K odieresis -35 KPX K ograve -35 KPX K ohungarumlaut -35 KPX K omacron -35 KPX K oslash -35 KPX K otilde -35 KPX K u -15 KPX K uacute -15 KPX K ucircumflex -15 KPX K udieresis -15 KPX K ugrave -15 KPX K uhungarumlaut -15 KPX K umacron -15 KPX K uogonek -15 KPX K uring -15 KPX K y -25 KPX K yacute -25 KPX K ydieresis -25 KPX Kcommaaccent O -30 KPX Kcommaaccent Oacute -30 KPX Kcommaaccent Ocircumflex -30 KPX Kcommaaccent Odieresis -30 KPX Kcommaaccent Ograve -30 KPX Kcommaaccent Ohungarumlaut -30 KPX Kcommaaccent Omacron -30 KPX Kcommaaccent Oslash -30 KPX Kcommaaccent Otilde -30 KPX Kcommaaccent e -25 KPX Kcommaaccent eacute -25 KPX Kcommaaccent ecaron -25 KPX Kcommaaccent ecircumflex -25 KPX Kcommaaccent edieresis -25 KPX Kcommaaccent edotaccent -25 KPX Kcommaaccent egrave -25 KPX Kcommaaccent emacron -25 KPX Kcommaaccent eogonek -25 KPX Kcommaaccent o -35 KPX Kcommaaccent oacute -35 KPX Kcommaaccent ocircumflex -35 KPX Kcommaaccent odieresis -35 KPX Kcommaaccent ograve -35 KPX Kcommaaccent ohungarumlaut -35 KPX Kcommaaccent omacron -35 KPX Kcommaaccent oslash -35 KPX Kcommaaccent otilde -35 KPX Kcommaaccent u -15 KPX Kcommaaccent uacute -15 KPX Kcommaaccent ucircumflex -15 KPX Kcommaaccent udieresis -15 KPX Kcommaaccent ugrave -15 KPX Kcommaaccent uhungarumlaut -15 KPX Kcommaaccent umacron -15 KPX Kcommaaccent uogonek -15 KPX Kcommaaccent uring -15 KPX Kcommaaccent y -25 KPX Kcommaaccent yacute -25 KPX Kcommaaccent ydieresis -25 KPX L T -92 KPX L Tcaron -92 KPX L Tcommaaccent -92 KPX L V -100 KPX L W -74 KPX L Y -100 KPX L Yacute -100 KPX L Ydieresis -100 KPX L quoteright -92 KPX L y -55 KPX L yacute -55 KPX L ydieresis -55 KPX Lacute T -92 KPX Lacute Tcaron -92 KPX Lacute Tcommaaccent -92 KPX Lacute V -100 KPX Lacute W -74 KPX Lacute Y -100 KPX Lacute Yacute -100 KPX Lacute Ydieresis -100 KPX Lacute quoteright -92 KPX Lacute y -55 KPX Lacute yacute -55 KPX Lacute ydieresis -55 KPX Lcaron quoteright -92 KPX Lcaron y -55 KPX Lcaron yacute -55 KPX Lcaron ydieresis -55 KPX Lcommaaccent T -92 KPX Lcommaaccent Tcaron -92 KPX Lcommaaccent Tcommaaccent -92 KPX Lcommaaccent V -100 KPX Lcommaaccent W -74 KPX Lcommaaccent Y -100 KPX Lcommaaccent Yacute -100 KPX Lcommaaccent Ydieresis -100 KPX Lcommaaccent quoteright -92 KPX Lcommaaccent y -55 KPX Lcommaaccent yacute -55 KPX Lcommaaccent ydieresis -55 KPX Lslash T -92 KPX Lslash Tcaron -92 KPX Lslash Tcommaaccent -92 KPX Lslash V -100 KPX Lslash W -74 KPX Lslash Y -100 KPX Lslash Yacute -100 KPX Lslash Ydieresis -100 KPX Lslash quoteright -92 KPX Lslash y -55 KPX Lslash yacute -55 KPX Lslash ydieresis -55 KPX N A -35 KPX N Aacute -35 KPX N Abreve -35 KPX N Acircumflex -35 KPX N Adieresis -35 KPX N Agrave -35 KPX N Amacron -35 KPX N Aogonek -35 KPX N Aring -35 KPX N Atilde -35 KPX Nacute A -35 KPX Nacute Aacute -35 KPX Nacute Abreve -35 KPX Nacute Acircumflex -35 KPX Nacute Adieresis -35 KPX Nacute Agrave -35 KPX Nacute Amacron -35 KPX Nacute Aogonek -35 KPX Nacute Aring -35 KPX Nacute Atilde -35 KPX Ncaron A -35 KPX Ncaron Aacute -35 KPX Ncaron Abreve -35 KPX Ncaron Acircumflex -35 KPX Ncaron Adieresis -35 KPX Ncaron Agrave -35 KPX Ncaron Amacron -35 KPX Ncaron Aogonek -35 KPX Ncaron Aring -35 KPX Ncaron Atilde -35 KPX Ncommaaccent A -35 KPX Ncommaaccent Aacute -35 KPX Ncommaaccent Abreve -35 KPX Ncommaaccent Acircumflex -35 KPX Ncommaaccent Adieresis -35 KPX Ncommaaccent Agrave -35 KPX Ncommaaccent Amacron -35 KPX Ncommaaccent Aogonek -35 KPX Ncommaaccent Aring -35 KPX Ncommaaccent Atilde -35 KPX Ntilde A -35 KPX Ntilde Aacute -35 KPX Ntilde Abreve -35 KPX Ntilde Acircumflex -35 KPX Ntilde Adieresis -35 KPX Ntilde Agrave -35 KPX Ntilde Amacron -35 KPX Ntilde Aogonek -35 KPX Ntilde Aring -35 KPX Ntilde Atilde -35 KPX O A -35 KPX O Aacute -35 KPX O Abreve -35 KPX O Acircumflex -35 KPX O Adieresis -35 KPX O Agrave -35 KPX O Amacron -35 KPX O Aogonek -35 KPX O Aring -35 KPX O Atilde -35 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -35 KPX O X -40 KPX O Y -50 KPX O Yacute -50 KPX O Ydieresis -50 KPX Oacute A -35 KPX Oacute Aacute -35 KPX Oacute Abreve -35 KPX Oacute Acircumflex -35 KPX Oacute Adieresis -35 KPX Oacute Agrave -35 KPX Oacute Amacron -35 KPX Oacute Aogonek -35 KPX Oacute Aring -35 KPX Oacute Atilde -35 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -35 KPX Oacute X -40 KPX Oacute Y -50 KPX Oacute Yacute -50 KPX Oacute Ydieresis -50 KPX Ocircumflex A -35 KPX Ocircumflex Aacute -35 KPX Ocircumflex Abreve -35 KPX Ocircumflex Acircumflex -35 KPX Ocircumflex Adieresis -35 KPX Ocircumflex Agrave -35 KPX Ocircumflex Amacron -35 KPX Ocircumflex Aogonek -35 KPX Ocircumflex Aring -35 KPX Ocircumflex Atilde -35 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -35 KPX Ocircumflex X -40 KPX Ocircumflex Y -50 KPX Ocircumflex Yacute -50 KPX Ocircumflex Ydieresis -50 KPX Odieresis A -35 KPX Odieresis Aacute -35 KPX Odieresis Abreve -35 KPX Odieresis Acircumflex -35 KPX Odieresis Adieresis -35 KPX Odieresis Agrave -35 KPX Odieresis Amacron -35 KPX Odieresis Aogonek -35 KPX Odieresis Aring -35 KPX Odieresis Atilde -35 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -35 KPX Odieresis X -40 KPX Odieresis Y -50 KPX Odieresis Yacute -50 KPX Odieresis Ydieresis -50 KPX Ograve A -35 KPX Ograve Aacute -35 KPX Ograve Abreve -35 KPX Ograve Acircumflex -35 KPX Ograve Adieresis -35 KPX Ograve Agrave -35 KPX Ograve Amacron -35 KPX Ograve Aogonek -35 KPX Ograve Aring -35 KPX Ograve Atilde -35 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -35 KPX Ograve X -40 KPX Ograve Y -50 KPX Ograve Yacute -50 KPX Ograve Ydieresis -50 KPX Ohungarumlaut A -35 KPX Ohungarumlaut Aacute -35 KPX Ohungarumlaut Abreve -35 KPX Ohungarumlaut Acircumflex -35 KPX Ohungarumlaut Adieresis -35 KPX Ohungarumlaut Agrave -35 KPX Ohungarumlaut Amacron -35 KPX Ohungarumlaut Aogonek -35 KPX Ohungarumlaut Aring -35 KPX Ohungarumlaut Atilde -35 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -35 KPX Ohungarumlaut X -40 KPX Ohungarumlaut Y -50 KPX Ohungarumlaut Yacute -50 KPX Ohungarumlaut Ydieresis -50 KPX Omacron A -35 KPX Omacron Aacute -35 KPX Omacron Abreve -35 KPX Omacron Acircumflex -35 KPX Omacron Adieresis -35 KPX Omacron Agrave -35 KPX Omacron Amacron -35 KPX Omacron Aogonek -35 KPX Omacron Aring -35 KPX Omacron Atilde -35 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -35 KPX Omacron X -40 KPX Omacron Y -50 KPX Omacron Yacute -50 KPX Omacron Ydieresis -50 KPX Oslash A -35 KPX Oslash Aacute -35 KPX Oslash Abreve -35 KPX Oslash Acircumflex -35 KPX Oslash Adieresis -35 KPX Oslash Agrave -35 KPX Oslash Amacron -35 KPX Oslash Aogonek -35 KPX Oslash Aring -35 KPX Oslash Atilde -35 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -35 KPX Oslash X -40 KPX Oslash Y -50 KPX Oslash Yacute -50 KPX Oslash Ydieresis -50 KPX Otilde A -35 KPX Otilde Aacute -35 KPX Otilde Abreve -35 KPX Otilde Acircumflex -35 KPX Otilde Adieresis -35 KPX Otilde Agrave -35 KPX Otilde Amacron -35 KPX Otilde Aogonek -35 KPX Otilde Aring -35 KPX Otilde Atilde -35 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -35 KPX Otilde X -40 KPX Otilde Y -50 KPX Otilde Yacute -50 KPX Otilde Ydieresis -50 KPX P A -92 KPX P Aacute -92 KPX P Abreve -92 KPX P Acircumflex -92 KPX P Adieresis -92 KPX P Agrave -92 KPX P Amacron -92 KPX P Aogonek -92 KPX P Aring -92 KPX P Atilde -92 KPX P a -15 KPX P aacute -15 KPX P abreve -15 KPX P acircumflex -15 KPX P adieresis -15 KPX P agrave -15 KPX P amacron -15 KPX P aogonek -15 KPX P aring -15 KPX P atilde -15 KPX P comma -111 KPX P period -111 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R O -40 KPX R Oacute -40 KPX R Ocircumflex -40 KPX R Odieresis -40 KPX R Ograve -40 KPX R Ohungarumlaut -40 KPX R Omacron -40 KPX R Oslash -40 KPX R Otilde -40 KPX R T -60 KPX R Tcaron -60 KPX R Tcommaaccent -60 KPX R U -40 KPX R Uacute -40 KPX R Ucircumflex -40 KPX R Udieresis -40 KPX R Ugrave -40 KPX R Uhungarumlaut -40 KPX R Umacron -40 KPX R Uogonek -40 KPX R Uring -40 KPX R V -80 KPX R W -55 KPX R Y -65 KPX R Yacute -65 KPX R Ydieresis -65 KPX Racute O -40 KPX Racute Oacute -40 KPX Racute Ocircumflex -40 KPX Racute Odieresis -40 KPX Racute Ograve -40 KPX Racute Ohungarumlaut -40 KPX Racute Omacron -40 KPX Racute Oslash -40 KPX Racute Otilde -40 KPX Racute T -60 KPX Racute Tcaron -60 KPX Racute Tcommaaccent -60 KPX Racute U -40 KPX Racute Uacute -40 KPX Racute Ucircumflex -40 KPX Racute Udieresis -40 KPX Racute Ugrave -40 KPX Racute Uhungarumlaut -40 KPX Racute Umacron -40 KPX Racute Uogonek -40 KPX Racute Uring -40 KPX Racute V -80 KPX Racute W -55 KPX Racute Y -65 KPX Racute Yacute -65 KPX Racute Ydieresis -65 KPX Rcaron O -40 KPX Rcaron Oacute -40 KPX Rcaron Ocircumflex -40 KPX Rcaron Odieresis -40 KPX Rcaron Ograve -40 KPX Rcaron Ohungarumlaut -40 KPX Rcaron Omacron -40 KPX Rcaron Oslash -40 KPX Rcaron Otilde -40 KPX Rcaron T -60 KPX Rcaron Tcaron -60 KPX Rcaron Tcommaaccent -60 KPX Rcaron U -40 KPX Rcaron Uacute -40 KPX Rcaron Ucircumflex -40 KPX Rcaron Udieresis -40 KPX Rcaron Ugrave -40 KPX Rcaron Uhungarumlaut -40 KPX Rcaron Umacron -40 KPX Rcaron Uogonek -40 KPX Rcaron Uring -40 KPX Rcaron V -80 KPX Rcaron W -55 KPX Rcaron Y -65 KPX Rcaron Yacute -65 KPX Rcaron Ydieresis -65 KPX Rcommaaccent O -40 KPX Rcommaaccent Oacute -40 KPX Rcommaaccent Ocircumflex -40 KPX Rcommaaccent Odieresis -40 KPX Rcommaaccent Ograve -40 KPX Rcommaaccent Ohungarumlaut -40 KPX Rcommaaccent Omacron -40 KPX Rcommaaccent Oslash -40 KPX Rcommaaccent Otilde -40 KPX Rcommaaccent T -60 KPX Rcommaaccent Tcaron -60 KPX Rcommaaccent Tcommaaccent -60 KPX Rcommaaccent U -40 KPX Rcommaaccent Uacute -40 KPX Rcommaaccent Ucircumflex -40 KPX Rcommaaccent Udieresis -40 KPX Rcommaaccent Ugrave -40 KPX Rcommaaccent Uhungarumlaut -40 KPX Rcommaaccent Umacron -40 KPX Rcommaaccent Uogonek -40 KPX Rcommaaccent Uring -40 KPX Rcommaaccent V -80 KPX Rcommaaccent W -55 KPX Rcommaaccent Y -65 KPX Rcommaaccent Yacute -65 KPX Rcommaaccent Ydieresis -65 KPX T A -93 KPX T Aacute -93 KPX T Abreve -93 KPX T Acircumflex -93 KPX T Adieresis -93 KPX T Agrave -93 KPX T Amacron -93 KPX T Aogonek -93 KPX T Aring -93 KPX T Atilde -93 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -80 KPX T aacute -80 KPX T abreve -80 KPX T acircumflex -80 KPX T adieresis -40 KPX T agrave -40 KPX T amacron -40 KPX T aogonek -80 KPX T aring -80 KPX T atilde -40 KPX T colon -50 KPX T comma -74 KPX T e -70 KPX T eacute -70 KPX T ecaron -70 KPX T ecircumflex -70 KPX T edieresis -30 KPX T edotaccent -70 KPX T egrave -70 KPX T emacron -30 KPX T eogonek -70 KPX T hyphen -92 KPX T i -35 KPX T iacute -35 KPX T iogonek -35 KPX T o -80 KPX T oacute -80 KPX T ocircumflex -80 KPX T odieresis -80 KPX T ograve -80 KPX T ohungarumlaut -80 KPX T omacron -80 KPX T oslash -80 KPX T otilde -80 KPX T period -74 KPX T r -35 KPX T racute -35 KPX T rcaron -35 KPX T rcommaaccent -35 KPX T semicolon -55 KPX T u -45 KPX T uacute -45 KPX T ucircumflex -45 KPX T udieresis -45 KPX T ugrave -45 KPX T uhungarumlaut -45 KPX T umacron -45 KPX T uogonek -45 KPX T uring -45 KPX T w -80 KPX T y -80 KPX T yacute -80 KPX T ydieresis -80 KPX Tcaron A -93 KPX Tcaron Aacute -93 KPX Tcaron Abreve -93 KPX Tcaron Acircumflex -93 KPX Tcaron Adieresis -93 KPX Tcaron Agrave -93 KPX Tcaron Amacron -93 KPX Tcaron Aogonek -93 KPX Tcaron Aring -93 KPX Tcaron Atilde -93 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -80 KPX Tcaron aacute -80 KPX Tcaron abreve -80 KPX Tcaron acircumflex -80 KPX Tcaron adieresis -40 KPX Tcaron agrave -40 KPX Tcaron amacron -40 KPX Tcaron aogonek -80 KPX Tcaron aring -80 KPX Tcaron atilde -40 KPX Tcaron colon -50 KPX Tcaron comma -74 KPX Tcaron e -70 KPX Tcaron eacute -70 KPX Tcaron ecaron -70 KPX Tcaron ecircumflex -30 KPX Tcaron edieresis -30 KPX Tcaron edotaccent -70 KPX Tcaron egrave -70 KPX Tcaron emacron -30 KPX Tcaron eogonek -70 KPX Tcaron hyphen -92 KPX Tcaron i -35 KPX Tcaron iacute -35 KPX Tcaron iogonek -35 KPX Tcaron o -80 KPX Tcaron oacute -80 KPX Tcaron ocircumflex -80 KPX Tcaron odieresis -80 KPX Tcaron ograve -80 KPX Tcaron ohungarumlaut -80 KPX Tcaron omacron -80 KPX Tcaron oslash -80 KPX Tcaron otilde -80 KPX Tcaron period -74 KPX Tcaron r -35 KPX Tcaron racute -35 KPX Tcaron rcaron -35 KPX Tcaron rcommaaccent -35 KPX Tcaron semicolon -55 KPX Tcaron u -45 KPX Tcaron uacute -45 KPX Tcaron ucircumflex -45 KPX Tcaron udieresis -45 KPX Tcaron ugrave -45 KPX Tcaron uhungarumlaut -45 KPX Tcaron umacron -45 KPX Tcaron uogonek -45 KPX Tcaron uring -45 KPX Tcaron w -80 KPX Tcaron y -80 KPX Tcaron yacute -80 KPX Tcaron ydieresis -80 KPX Tcommaaccent A -93 KPX Tcommaaccent Aacute -93 KPX Tcommaaccent Abreve -93 KPX Tcommaaccent Acircumflex -93 KPX Tcommaaccent Adieresis -93 KPX Tcommaaccent Agrave -93 KPX Tcommaaccent Amacron -93 KPX Tcommaaccent Aogonek -93 KPX Tcommaaccent Aring -93 KPX Tcommaaccent Atilde -93 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -80 KPX Tcommaaccent aacute -80 KPX Tcommaaccent abreve -80 KPX Tcommaaccent acircumflex -80 KPX Tcommaaccent adieresis -40 KPX Tcommaaccent agrave -40 KPX Tcommaaccent amacron -40 KPX Tcommaaccent aogonek -80 KPX Tcommaaccent aring -80 KPX Tcommaaccent atilde -40 KPX Tcommaaccent colon -50 KPX Tcommaaccent comma -74 KPX Tcommaaccent e -70 KPX Tcommaaccent eacute -70 KPX Tcommaaccent ecaron -70 KPX Tcommaaccent ecircumflex -30 KPX Tcommaaccent edieresis -30 KPX Tcommaaccent edotaccent -70 KPX Tcommaaccent egrave -30 KPX Tcommaaccent emacron -70 KPX Tcommaaccent eogonek -70 KPX Tcommaaccent hyphen -92 KPX Tcommaaccent i -35 KPX Tcommaaccent iacute -35 KPX Tcommaaccent iogonek -35 KPX Tcommaaccent o -80 KPX Tcommaaccent oacute -80 KPX Tcommaaccent ocircumflex -80 KPX Tcommaaccent odieresis -80 KPX Tcommaaccent ograve -80 KPX Tcommaaccent ohungarumlaut -80 KPX Tcommaaccent omacron -80 KPX Tcommaaccent oslash -80 KPX Tcommaaccent otilde -80 KPX Tcommaaccent period -74 KPX Tcommaaccent r -35 KPX Tcommaaccent racute -35 KPX Tcommaaccent rcaron -35 KPX Tcommaaccent rcommaaccent -35 KPX Tcommaaccent semicolon -55 KPX Tcommaaccent u -45 KPX Tcommaaccent uacute -45 KPX Tcommaaccent ucircumflex -45 KPX Tcommaaccent udieresis -45 KPX Tcommaaccent ugrave -45 KPX Tcommaaccent uhungarumlaut -45 KPX Tcommaaccent umacron -45 KPX Tcommaaccent uogonek -45 KPX Tcommaaccent uring -45 KPX Tcommaaccent w -80 KPX Tcommaaccent y -80 KPX Tcommaaccent yacute -80 KPX Tcommaaccent ydieresis -80 KPX U A -40 KPX U Aacute -40 KPX U Abreve -40 KPX U Acircumflex -40 KPX U Adieresis -40 KPX U Agrave -40 KPX U Amacron -40 KPX U Aogonek -40 KPX U Aring -40 KPX U Atilde -40 KPX Uacute A -40 KPX Uacute Aacute -40 KPX Uacute Abreve -40 KPX Uacute Acircumflex -40 KPX Uacute Adieresis -40 KPX Uacute Agrave -40 KPX Uacute Amacron -40 KPX Uacute Aogonek -40 KPX Uacute Aring -40 KPX Uacute Atilde -40 KPX Ucircumflex A -40 KPX Ucircumflex Aacute -40 KPX Ucircumflex Abreve -40 KPX Ucircumflex Acircumflex -40 KPX Ucircumflex Adieresis -40 KPX Ucircumflex Agrave -40 KPX Ucircumflex Amacron -40 KPX Ucircumflex Aogonek -40 KPX Ucircumflex Aring -40 KPX Ucircumflex Atilde -40 KPX Udieresis A -40 KPX Udieresis Aacute -40 KPX Udieresis Abreve -40 KPX Udieresis Acircumflex -40 KPX Udieresis Adieresis -40 KPX Udieresis Agrave -40 KPX Udieresis Amacron -40 KPX Udieresis Aogonek -40 KPX Udieresis Aring -40 KPX Udieresis Atilde -40 KPX Ugrave A -40 KPX Ugrave Aacute -40 KPX Ugrave Abreve -40 KPX Ugrave Acircumflex -40 KPX Ugrave Adieresis -40 KPX Ugrave Agrave -40 KPX Ugrave Amacron -40 KPX Ugrave Aogonek -40 KPX Ugrave Aring -40 KPX Ugrave Atilde -40 KPX Uhungarumlaut A -40 KPX Uhungarumlaut Aacute -40 KPX Uhungarumlaut Abreve -40 KPX Uhungarumlaut Acircumflex -40 KPX Uhungarumlaut Adieresis -40 KPX Uhungarumlaut Agrave -40 KPX Uhungarumlaut Amacron -40 KPX Uhungarumlaut Aogonek -40 KPX Uhungarumlaut Aring -40 KPX Uhungarumlaut Atilde -40 KPX Umacron A -40 KPX Umacron Aacute -40 KPX Umacron Abreve -40 KPX Umacron Acircumflex -40 KPX Umacron Adieresis -40 KPX Umacron Agrave -40 KPX Umacron Amacron -40 KPX Umacron Aogonek -40 KPX Umacron Aring -40 KPX Umacron Atilde -40 KPX Uogonek A -40 KPX Uogonek Aacute -40 KPX Uogonek Abreve -40 KPX Uogonek Acircumflex -40 KPX Uogonek Adieresis -40 KPX Uogonek Agrave -40 KPX Uogonek Amacron -40 KPX Uogonek Aogonek -40 KPX Uogonek Aring -40 KPX Uogonek Atilde -40 KPX Uring A -40 KPX Uring Aacute -40 KPX Uring Abreve -40 KPX Uring Acircumflex -40 KPX Uring Adieresis -40 KPX Uring Agrave -40 KPX Uring Amacron -40 KPX Uring Aogonek -40 KPX Uring Aring -40 KPX Uring Atilde -40 KPX V A -135 KPX V Aacute -135 KPX V Abreve -135 KPX V Acircumflex -135 KPX V Adieresis -135 KPX V Agrave -135 KPX V Amacron -135 KPX V Aogonek -135 KPX V Aring -135 KPX V Atilde -135 KPX V G -15 KPX V Gbreve -15 KPX V Gcommaaccent -15 KPX V O -40 KPX V Oacute -40 KPX V Ocircumflex -40 KPX V Odieresis -40 KPX V Ograve -40 KPX V Ohungarumlaut -40 KPX V Omacron -40 KPX V Oslash -40 KPX V Otilde -40 KPX V a -111 KPX V aacute -111 KPX V abreve -111 KPX V acircumflex -71 KPX V adieresis -71 KPX V agrave -71 KPX V amacron -71 KPX V aogonek -111 KPX V aring -111 KPX V atilde -71 KPX V colon -74 KPX V comma -129 KPX V e -111 KPX V eacute -111 KPX V ecaron -71 KPX V ecircumflex -71 KPX V edieresis -71 KPX V edotaccent -111 KPX V egrave -71 KPX V emacron -71 KPX V eogonek -111 KPX V hyphen -100 KPX V i -60 KPX V iacute -60 KPX V icircumflex -20 KPX V idieresis -20 KPX V igrave -20 KPX V imacron -20 KPX V iogonek -60 KPX V o -129 KPX V oacute -129 KPX V ocircumflex -129 KPX V odieresis -89 KPX V ograve -89 KPX V ohungarumlaut -129 KPX V omacron -89 KPX V oslash -129 KPX V otilde -89 KPX V period -129 KPX V semicolon -74 KPX V u -75 KPX V uacute -75 KPX V ucircumflex -75 KPX V udieresis -75 KPX V ugrave -75 KPX V uhungarumlaut -75 KPX V umacron -75 KPX V uogonek -75 KPX V uring -75 KPX W A -120 KPX W Aacute -120 KPX W Abreve -120 KPX W Acircumflex -120 KPX W Adieresis -120 KPX W Agrave -120 KPX W Amacron -120 KPX W Aogonek -120 KPX W Aring -120 KPX W Atilde -120 KPX W O -10 KPX W Oacute -10 KPX W Ocircumflex -10 KPX W Odieresis -10 KPX W Ograve -10 KPX W Ohungarumlaut -10 KPX W Omacron -10 KPX W Oslash -10 KPX W Otilde -10 KPX W a -80 KPX W aacute -80 KPX W abreve -80 KPX W acircumflex -80 KPX W adieresis -80 KPX W agrave -80 KPX W amacron -80 KPX W aogonek -80 KPX W aring -80 KPX W atilde -80 KPX W colon -37 KPX W comma -92 KPX W e -80 KPX W eacute -80 KPX W ecaron -80 KPX W ecircumflex -80 KPX W edieresis -40 KPX W edotaccent -80 KPX W egrave -40 KPX W emacron -40 KPX W eogonek -80 KPX W hyphen -65 KPX W i -40 KPX W iacute -40 KPX W iogonek -40 KPX W o -80 KPX W oacute -80 KPX W ocircumflex -80 KPX W odieresis -80 KPX W ograve -80 KPX W ohungarumlaut -80 KPX W omacron -80 KPX W oslash -80 KPX W otilde -80 KPX W period -92 KPX W semicolon -37 KPX W u -50 KPX W uacute -50 KPX W ucircumflex -50 KPX W udieresis -50 KPX W ugrave -50 KPX W uhungarumlaut -50 KPX W umacron -50 KPX W uogonek -50 KPX W uring -50 KPX W y -73 KPX W yacute -73 KPX W ydieresis -73 KPX Y A -120 KPX Y Aacute -120 KPX Y Abreve -120 KPX Y Acircumflex -120 KPX Y Adieresis -120 KPX Y Agrave -120 KPX Y Amacron -120 KPX Y Aogonek -120 KPX Y Aring -120 KPX Y Atilde -120 KPX Y O -30 KPX Y Oacute -30 KPX Y Ocircumflex -30 KPX Y Odieresis -30 KPX Y Ograve -30 KPX Y Ohungarumlaut -30 KPX Y Omacron -30 KPX Y Oslash -30 KPX Y Otilde -30 KPX Y a -100 KPX Y aacute -100 KPX Y abreve -100 KPX Y acircumflex -100 KPX Y adieresis -60 KPX Y agrave -60 KPX Y amacron -60 KPX Y aogonek -100 KPX Y aring -100 KPX Y atilde -60 KPX Y colon -92 KPX Y comma -129 KPX Y e -100 KPX Y eacute -100 KPX Y ecaron -100 KPX Y ecircumflex -100 KPX Y edieresis -60 KPX Y edotaccent -100 KPX Y egrave -60 KPX Y emacron -60 KPX Y eogonek -100 KPX Y hyphen -111 KPX Y i -55 KPX Y iacute -55 KPX Y iogonek -55 KPX Y o -110 KPX Y oacute -110 KPX Y ocircumflex -110 KPX Y odieresis -70 KPX Y ograve -70 KPX Y ohungarumlaut -110 KPX Y omacron -70 KPX Y oslash -110 KPX Y otilde -70 KPX Y period -129 KPX Y semicolon -92 KPX Y u -111 KPX Y uacute -111 KPX Y ucircumflex -111 KPX Y udieresis -71 KPX Y ugrave -71 KPX Y uhungarumlaut -111 KPX Y umacron -71 KPX Y uogonek -111 KPX Y uring -111 KPX Yacute A -120 KPX Yacute Aacute -120 KPX Yacute Abreve -120 KPX Yacute Acircumflex -120 KPX Yacute Adieresis -120 KPX Yacute Agrave -120 KPX Yacute Amacron -120 KPX Yacute Aogonek -120 KPX Yacute Aring -120 KPX Yacute Atilde -120 KPX Yacute O -30 KPX Yacute Oacute -30 KPX Yacute Ocircumflex -30 KPX Yacute Odieresis -30 KPX Yacute Ograve -30 KPX Yacute Ohungarumlaut -30 KPX Yacute Omacron -30 KPX Yacute Oslash -30 KPX Yacute Otilde -30 KPX Yacute a -100 KPX Yacute aacute -100 KPX Yacute abreve -100 KPX Yacute acircumflex -100 KPX Yacute adieresis -60 KPX Yacute agrave -60 KPX Yacute amacron -60 KPX Yacute aogonek -100 KPX Yacute aring -100 KPX Yacute atilde -60 KPX Yacute colon -92 KPX Yacute comma -129 KPX Yacute e -100 KPX Yacute eacute -100 KPX Yacute ecaron -100 KPX Yacute ecircumflex -100 KPX Yacute edieresis -60 KPX Yacute edotaccent -100 KPX Yacute egrave -60 KPX Yacute emacron -60 KPX Yacute eogonek -100 KPX Yacute hyphen -111 KPX Yacute i -55 KPX Yacute iacute -55 KPX Yacute iogonek -55 KPX Yacute o -110 KPX Yacute oacute -110 KPX Yacute ocircumflex -110 KPX Yacute odieresis -70 KPX Yacute ograve -70 KPX Yacute ohungarumlaut -110 KPX Yacute omacron -70 KPX Yacute oslash -110 KPX Yacute otilde -70 KPX Yacute period -129 KPX Yacute semicolon -92 KPX Yacute u -111 KPX Yacute uacute -111 KPX Yacute ucircumflex -111 KPX Yacute udieresis -71 KPX Yacute ugrave -71 KPX Yacute uhungarumlaut -111 KPX Yacute umacron -71 KPX Yacute uogonek -111 KPX Yacute uring -111 KPX Ydieresis A -120 KPX Ydieresis Aacute -120 KPX Ydieresis Abreve -120 KPX Ydieresis Acircumflex -120 KPX Ydieresis Adieresis -120 KPX Ydieresis Agrave -120 KPX Ydieresis Amacron -120 KPX Ydieresis Aogonek -120 KPX Ydieresis Aring -120 KPX Ydieresis Atilde -120 KPX Ydieresis O -30 KPX Ydieresis Oacute -30 KPX Ydieresis Ocircumflex -30 KPX Ydieresis Odieresis -30 KPX Ydieresis Ograve -30 KPX Ydieresis Ohungarumlaut -30 KPX Ydieresis Omacron -30 KPX Ydieresis Oslash -30 KPX Ydieresis Otilde -30 KPX Ydieresis a -100 KPX Ydieresis aacute -100 KPX Ydieresis abreve -100 KPX Ydieresis acircumflex -100 KPX Ydieresis adieresis -60 KPX Ydieresis agrave -60 KPX Ydieresis amacron -60 KPX Ydieresis aogonek -100 KPX Ydieresis aring -100 KPX Ydieresis atilde -100 KPX Ydieresis colon -92 KPX Ydieresis comma -129 KPX Ydieresis e -100 KPX Ydieresis eacute -100 KPX Ydieresis ecaron -100 KPX Ydieresis ecircumflex -100 KPX Ydieresis edieresis -60 KPX Ydieresis edotaccent -100 KPX Ydieresis egrave -60 KPX Ydieresis emacron -60 KPX Ydieresis eogonek -100 KPX Ydieresis hyphen -111 KPX Ydieresis i -55 KPX Ydieresis iacute -55 KPX Ydieresis iogonek -55 KPX Ydieresis o -110 KPX Ydieresis oacute -110 KPX Ydieresis ocircumflex -110 KPX Ydieresis odieresis -70 KPX Ydieresis ograve -70 KPX Ydieresis ohungarumlaut -110 KPX Ydieresis omacron -70 KPX Ydieresis oslash -110 KPX Ydieresis otilde -70 KPX Ydieresis period -129 KPX Ydieresis semicolon -92 KPX Ydieresis u -111 KPX Ydieresis uacute -111 KPX Ydieresis ucircumflex -111 KPX Ydieresis udieresis -71 KPX Ydieresis ugrave -71 KPX Ydieresis uhungarumlaut -111 KPX Ydieresis umacron -71 KPX Ydieresis uogonek -111 KPX Ydieresis uring -111 KPX a v -20 KPX a w -15 KPX aacute v -20 KPX aacute w -15 KPX abreve v -20 KPX abreve w -15 KPX acircumflex v -20 KPX acircumflex w -15 KPX adieresis v -20 KPX adieresis w -15 KPX agrave v -20 KPX agrave w -15 KPX amacron v -20 KPX amacron w -15 KPX aogonek v -20 KPX aogonek w -15 KPX aring v -20 KPX aring w -15 KPX atilde v -20 KPX atilde w -15 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -15 KPX c y -15 KPX c yacute -15 KPX c ydieresis -15 KPX cacute y -15 KPX cacute yacute -15 KPX cacute ydieresis -15 KPX ccaron y -15 KPX ccaron yacute -15 KPX ccaron ydieresis -15 KPX ccedilla y -15 KPX ccedilla yacute -15 KPX ccedilla ydieresis -15 KPX comma quotedblright -70 KPX comma quoteright -70 KPX e g -15 KPX e gbreve -15 KPX e gcommaaccent -15 KPX e v -25 KPX e w -25 KPX e x -15 KPX e y -15 KPX e yacute -15 KPX e ydieresis -15 KPX eacute g -15 KPX eacute gbreve -15 KPX eacute gcommaaccent -15 KPX eacute v -25 KPX eacute w -25 KPX eacute x -15 KPX eacute y -15 KPX eacute yacute -15 KPX eacute ydieresis -15 KPX ecaron g -15 KPX ecaron gbreve -15 KPX ecaron gcommaaccent -15 KPX ecaron v -25 KPX ecaron w -25 KPX ecaron x -15 KPX ecaron y -15 KPX ecaron yacute -15 KPX ecaron ydieresis -15 KPX ecircumflex g -15 KPX ecircumflex gbreve -15 KPX ecircumflex gcommaaccent -15 KPX ecircumflex v -25 KPX ecircumflex w -25 KPX ecircumflex x -15 KPX ecircumflex y -15 KPX ecircumflex yacute -15 KPX ecircumflex ydieresis -15 KPX edieresis g -15 KPX edieresis gbreve -15 KPX edieresis gcommaaccent -15 KPX edieresis v -25 KPX edieresis w -25 KPX edieresis x -15 KPX edieresis y -15 KPX edieresis yacute -15 KPX edieresis ydieresis -15 KPX edotaccent g -15 KPX edotaccent gbreve -15 KPX edotaccent gcommaaccent -15 KPX edotaccent v -25 KPX edotaccent w -25 KPX edotaccent x -15 KPX edotaccent y -15 KPX edotaccent yacute -15 KPX edotaccent ydieresis -15 KPX egrave g -15 KPX egrave gbreve -15 KPX egrave gcommaaccent -15 KPX egrave v -25 KPX egrave w -25 KPX egrave x -15 KPX egrave y -15 KPX egrave yacute -15 KPX egrave ydieresis -15 KPX emacron g -15 KPX emacron gbreve -15 KPX emacron gcommaaccent -15 KPX emacron v -25 KPX emacron w -25 KPX emacron x -15 KPX emacron y -15 KPX emacron yacute -15 KPX emacron ydieresis -15 KPX eogonek g -15 KPX eogonek gbreve -15 KPX eogonek gcommaaccent -15 KPX eogonek v -25 KPX eogonek w -25 KPX eogonek x -15 KPX eogonek y -15 KPX eogonek yacute -15 KPX eogonek ydieresis -15 KPX f a -10 KPX f aacute -10 KPX f abreve -10 KPX f acircumflex -10 KPX f adieresis -10 KPX f agrave -10 KPX f amacron -10 KPX f aogonek -10 KPX f aring -10 KPX f atilde -10 KPX f dotlessi -50 KPX f f -25 KPX f i -20 KPX f iacute -20 KPX f quoteright 55 KPX g a -5 KPX g aacute -5 KPX g abreve -5 KPX g acircumflex -5 KPX g adieresis -5 KPX g agrave -5 KPX g amacron -5 KPX g aogonek -5 KPX g aring -5 KPX g atilde -5 KPX gbreve a -5 KPX gbreve aacute -5 KPX gbreve abreve -5 KPX gbreve acircumflex -5 KPX gbreve adieresis -5 KPX gbreve agrave -5 KPX gbreve amacron -5 KPX gbreve aogonek -5 KPX gbreve aring -5 KPX gbreve atilde -5 KPX gcommaaccent a -5 KPX gcommaaccent aacute -5 KPX gcommaaccent abreve -5 KPX gcommaaccent acircumflex -5 KPX gcommaaccent adieresis -5 KPX gcommaaccent agrave -5 KPX gcommaaccent amacron -5 KPX gcommaaccent aogonek -5 KPX gcommaaccent aring -5 KPX gcommaaccent atilde -5 KPX h y -5 KPX h yacute -5 KPX h ydieresis -5 KPX i v -25 KPX iacute v -25 KPX icircumflex v -25 KPX idieresis v -25 KPX igrave v -25 KPX imacron v -25 KPX iogonek v -25 KPX k e -10 KPX k eacute -10 KPX k ecaron -10 KPX k ecircumflex -10 KPX k edieresis -10 KPX k edotaccent -10 KPX k egrave -10 KPX k emacron -10 KPX k eogonek -10 KPX k o -10 KPX k oacute -10 KPX k ocircumflex -10 KPX k odieresis -10 KPX k ograve -10 KPX k ohungarumlaut -10 KPX k omacron -10 KPX k oslash -10 KPX k otilde -10 KPX k y -15 KPX k yacute -15 KPX k ydieresis -15 KPX kcommaaccent e -10 KPX kcommaaccent eacute -10 KPX kcommaaccent ecaron -10 KPX kcommaaccent ecircumflex -10 KPX kcommaaccent edieresis -10 KPX kcommaaccent edotaccent -10 KPX kcommaaccent egrave -10 KPX kcommaaccent emacron -10 KPX kcommaaccent eogonek -10 KPX kcommaaccent o -10 KPX kcommaaccent oacute -10 KPX kcommaaccent ocircumflex -10 KPX kcommaaccent odieresis -10 KPX kcommaaccent ograve -10 KPX kcommaaccent ohungarumlaut -10 KPX kcommaaccent omacron -10 KPX kcommaaccent oslash -10 KPX kcommaaccent otilde -10 KPX kcommaaccent y -15 KPX kcommaaccent yacute -15 KPX kcommaaccent ydieresis -15 KPX l w -10 KPX lacute w -10 KPX lcommaaccent w -10 KPX lslash w -10 KPX n v -40 KPX n y -15 KPX n yacute -15 KPX n ydieresis -15 KPX nacute v -40 KPX nacute y -15 KPX nacute yacute -15 KPX nacute ydieresis -15 KPX ncaron v -40 KPX ncaron y -15 KPX ncaron yacute -15 KPX ncaron ydieresis -15 KPX ncommaaccent v -40 KPX ncommaaccent y -15 KPX ncommaaccent yacute -15 KPX ncommaaccent ydieresis -15 KPX ntilde v -40 KPX ntilde y -15 KPX ntilde yacute -15 KPX ntilde ydieresis -15 KPX o v -15 KPX o w -25 KPX o y -10 KPX o yacute -10 KPX o ydieresis -10 KPX oacute v -15 KPX oacute w -25 KPX oacute y -10 KPX oacute yacute -10 KPX oacute ydieresis -10 KPX ocircumflex v -15 KPX ocircumflex w -25 KPX ocircumflex y -10 KPX ocircumflex yacute -10 KPX ocircumflex ydieresis -10 KPX odieresis v -15 KPX odieresis w -25 KPX odieresis y -10 KPX odieresis yacute -10 KPX odieresis ydieresis -10 KPX ograve v -15 KPX ograve w -25 KPX ograve y -10 KPX ograve yacute -10 KPX ograve ydieresis -10 KPX ohungarumlaut v -15 KPX ohungarumlaut w -25 KPX ohungarumlaut y -10 KPX ohungarumlaut yacute -10 KPX ohungarumlaut ydieresis -10 KPX omacron v -15 KPX omacron w -25 KPX omacron y -10 KPX omacron yacute -10 KPX omacron ydieresis -10 KPX oslash v -15 KPX oslash w -25 KPX oslash y -10 KPX oslash yacute -10 KPX oslash ydieresis -10 KPX otilde v -15 KPX otilde w -25 KPX otilde y -10 KPX otilde yacute -10 KPX otilde ydieresis -10 KPX p y -10 KPX p yacute -10 KPX p ydieresis -10 KPX period quotedblright -70 KPX period quoteright -70 KPX quotedblleft A -80 KPX quotedblleft Aacute -80 KPX quotedblleft Abreve -80 KPX quotedblleft Acircumflex -80 KPX quotedblleft Adieresis -80 KPX quotedblleft Agrave -80 KPX quotedblleft Amacron -80 KPX quotedblleft Aogonek -80 KPX quotedblleft Aring -80 KPX quotedblleft Atilde -80 KPX quoteleft A -80 KPX quoteleft Aacute -80 KPX quoteleft Abreve -80 KPX quoteleft Acircumflex -80 KPX quoteleft Adieresis -80 KPX quoteleft Agrave -80 KPX quoteleft Amacron -80 KPX quoteleft Aogonek -80 KPX quoteleft Aring -80 KPX quoteleft Atilde -80 KPX quoteleft quoteleft -74 KPX quoteright d -50 KPX quoteright dcroat -50 KPX quoteright l -10 KPX quoteright lacute -10 KPX quoteright lcommaaccent -10 KPX quoteright lslash -10 KPX quoteright quoteright -74 KPX quoteright r -50 KPX quoteright racute -50 KPX quoteright rcaron -50 KPX quoteright rcommaaccent -50 KPX quoteright s -55 KPX quoteright sacute -55 KPX quoteright scaron -55 KPX quoteright scedilla -55 KPX quoteright scommaaccent -55 KPX quoteright space -74 KPX quoteright t -18 KPX quoteright tcommaaccent -18 KPX quoteright v -50 KPX r comma -40 KPX r g -18 KPX r gbreve -18 KPX r gcommaaccent -18 KPX r hyphen -20 KPX r period -55 KPX racute comma -40 KPX racute g -18 KPX racute gbreve -18 KPX racute gcommaaccent -18 KPX racute hyphen -20 KPX racute period -55 KPX rcaron comma -40 KPX rcaron g -18 KPX rcaron gbreve -18 KPX rcaron gcommaaccent -18 KPX rcaron hyphen -20 KPX rcaron period -55 KPX rcommaaccent comma -40 KPX rcommaaccent g -18 KPX rcommaaccent gbreve -18 KPX rcommaaccent gcommaaccent -18 KPX rcommaaccent hyphen -20 KPX rcommaaccent period -55 KPX space A -55 KPX space Aacute -55 KPX space Abreve -55 KPX space Acircumflex -55 KPX space Adieresis -55 KPX space Agrave -55 KPX space Amacron -55 KPX space Aogonek -55 KPX space Aring -55 KPX space Atilde -55 KPX space T -18 KPX space Tcaron -18 KPX space Tcommaaccent -18 KPX space V -50 KPX space W -30 KPX space Y -90 KPX space Yacute -90 KPX space Ydieresis -90 KPX v a -25 KPX v aacute -25 KPX v abreve -25 KPX v acircumflex -25 KPX v adieresis -25 KPX v agrave -25 KPX v amacron -25 KPX v aogonek -25 KPX v aring -25 KPX v atilde -25 KPX v comma -65 KPX v e -15 KPX v eacute -15 KPX v ecaron -15 KPX v ecircumflex -15 KPX v edieresis -15 KPX v edotaccent -15 KPX v egrave -15 KPX v emacron -15 KPX v eogonek -15 KPX v o -20 KPX v oacute -20 KPX v ocircumflex -20 KPX v odieresis -20 KPX v ograve -20 KPX v ohungarumlaut -20 KPX v omacron -20 KPX v oslash -20 KPX v otilde -20 KPX v period -65 KPX w a -10 KPX w aacute -10 KPX w abreve -10 KPX w acircumflex -10 KPX w adieresis -10 KPX w agrave -10 KPX w amacron -10 KPX w aogonek -10 KPX w aring -10 KPX w atilde -10 KPX w comma -65 KPX w o -10 KPX w oacute -10 KPX w ocircumflex -10 KPX w odieresis -10 KPX w ograve -10 KPX w ohungarumlaut -10 KPX w omacron -10 KPX w oslash -10 KPX w otilde -10 KPX w period -65 KPX x e -15 KPX x eacute -15 KPX x ecaron -15 KPX x ecircumflex -15 KPX x edieresis -15 KPX x edotaccent -15 KPX x egrave -15 KPX x emacron -15 KPX x eogonek -15 KPX y comma -65 KPX y period -65 KPX yacute comma -65 KPX yacute period -65 KPX ydieresis comma -65 KPX ydieresis period -65 EndKernPairs EndKernData EndFontMetrics pmw-5.22/contrib/0000755000222100022210000000000014541067540012001 5ustar ph10ph10pmw-5.22/contrib/Circles0000644000222100022210000000344514541067540013316 0ustar ph10ph10@ This file contains a set of functions concerned with the drawing of @ circles. @ @ Philip Hazel @ October 1993 @ Fixed to work with grace notes 4/6/94 @ Added fanciful demo November 2021 @ This function draws a circle. It must be called with four values on @ the stack: the thickness of the line, the radius, and the coordinates @ of the centre. For example: @ heading draw 0.4 20 24 0 circle @ The variables xx1 - xx4 are used as local variables. draw circle moveto 1.414 div dup 0.6 mul /xx1 exch def dup 1.4 mul /xx2 exch def dup 0.5 mul /xx3 exch def dup 2.0 mul /xx4 exch def neg dup rmoveto xx1 xx3 neg xx2 xx3 neg xx4 0 rcurveto xx1 xx1 xx1 xx2 0 xx4 rcurveto xx1 neg xx3 xx2 neg xx3 xx4 neg 0 rcurveto xx1 neg xx1 neg xx1 neg xx2 neg 0 xx4 neg rcurveto setlinewidth stroke enddraw @ This function draws a circle round the next notehead. It must be called @ with the line thickness value on the stack. For example: @ [draw 0.5 circlenote] g @ Accidentals are accounted for, and this works OK for single notes. For @ some chords, however, the radius may turn out to be too big. The variables @ xx1 - xx4 are used as local variables (because it calls the circle function). draw circlenote headtop headbottom sub 2 div /xx1 exch def xx1 3.5 add accleft add headright headleft add 2 div 0.25 add headbottom xx1 add draw circle enddraw @ This macro packages up calling the above function to circle a notehead. Its @ first argument is the note. There is an optional second argument for changing @ the line thickness, which defaults to 0.4. *define circ(,0.4) [draw &&2 circlenote] &&1 @ End of circles functions. Here's a fanciful demonstration. justify top notime magnification 1.2 heading draw 0.3 30 200 -8 circle [stave 1 noclef 1 nocheck] &circ(g) &circ(g') |? [endstave] pmw-5.22/contrib/RubOut0000644000222100022210000000656514541067540013160 0ustar ph10ph10@ Here is a suggestion as to how to do caesurae that wipe out the stave @ lines underneath them. This makes use of a general rectangular painting @ function that can be used for many purposes. @ This first function arranges to "erase" a rectangular area. Actually, @ it's more like covering it with white paint. You can also use it to cover @ rectangles with other shades of grey or black. @ You can call this function anywhere in a stave for all sorts of uses, @ not only the caesuara. I'll show another examples below. When you call @ this, you must give it five numbers. The first two specify the position @ of the rectangle, relative to the next note and the bottom of the stave. @ The next two numbers give the width and height of the rectangle, @ measured from the fixed position. They may be positive or negative. The @ fifth number specifies the colour of the paint, with 0 being black and 1 @ being white. A number like 0.5 is a mid shade of gray. @ You must call this function with "overdraw" rather than "draw" to @ ensure that it is called after everything else has been drawn. Otherwise @ other things (especially stave lines) may go on top of what it draws. @ See the examples in the stave below. draw erase /grey exch def /bh exch def /bw exch def moveto 0 bh rlineto bw 0 rlineto 0 bh neg rlineto bw neg 0 rlineto grey setgray fill 0 setgray enddraw @ This function uses the erase function to clear a rectangle, and then @ draws two diagonal lines in the space. This function takes only four @ numbers, the position and size of the rectangle. The width and height @ are expected to be positive, so the position is assumed to be the @ bottom lefthand corner. You can fiddle with the numbers to change @ the size of the lines and their thickness. draw caesura /h exch def /w exch def /y exch def /x exch def x y w h 1 draw erase @ The first line starts 1 point in from the left. Increase the @ number to move it to the right. x 1 add y moveto @ The line ends up 3 points further to the right and 7 points up. @ Change these numbers to vary its length and slope. 3 7 rlineto @ The second line starts 4 points in from the left. x 4 add y moveto @ It has the same length and slope as the first line. You should @ probably keep these values in step. 3 7 rlineto @ The 0.5 here specifies the thickness of the line. Make it bigger @ if you want a fatter line. 0.5 setlinewidth stroke enddraw @ This macro sets up an easy way to call the custom caesuara. It should @ be called before the end of a bar. It positions the white rectangle 10 @ points to the left, and 13 points above the bottom of the stave (so it @ wipes out only the top line). The size of the rectangle is 7 points @ wide and 8 points high. An extra 2 points of space are inserted in the @ bar. You may need to change this. *define caes [space 2 overdraw -10 13 7 8 caesura] @ The idea is that you fiddle with the numbers above until you get it @ looking how you want it. Then just use &caes whenever you need it, and @ they will all look the same. @ OK, now we've defined all this stuff, let's use it... [stave 1 treble 1] @ These bars show various ways of "painting over" rectangles R! [overdraw 0 0 8 8 1 erase] | R! [overdraw 0 0 -8 -8 0.5 erase] | rr [overdraw -6 6 16 4 0.75 erase] rr | @ This bar shows a regular caesura and the custom one a a a // a &caes | R! | [endstave] pmw-5.22/contrib/CropMarks0000644000222100022210000000565714541067540013642 0ustar ph10ph10@ This is an example PMW input file showing how the drawing facilities @ can be used to draw crop marks on pages. Philip Hazel, July 1994. @ Revised to do a better job, July 1995. @ ... and again, August 1995! @ Revised testing code November 2021 @ These four definitions specify the position of the crop marks relative to the @ area in which PMW prints music. Zero-level for the bottom is the lowest @ possible position for a stave; the zero top level is pagelength points above. @ Note that if a heading is printed at the top of the page, its baseline is at @ the top zero level, so the actual printing extends a bit higher. The left-hand @ zero is the start of systems with no preceding text; the right-hand zero is @ linelength points to the right. @ Increase "top" to move the upper marks upwards; decrease "bottom" to move the @ bottom marks down, and similarly for left and right. *define top 72.5 *define bottom -47.5 *define left -40 *define right 40 @ Those values are also the correct values for B5 page images, when the @ following values are also set: @ Sheetwidth 499 @ Sheetdepth 709 @ Linelength 420 @ Pagelength 590 @ If the line length or page length is changed, then the top/bottom/left/right @ values must also be changed correspondingly. @ The next two definitions specify the size of the crop marks in terms of a @ distance from the defining point and the length of the line. Adjust to @ taste. *define space 10 *define line 30 @ This drawing routine draws one crop mark at a position and orientation @ specified on the stack. draw onecrop /y exch def /x exch def /s &space magnification div def /l &line magnification div def dup s mul y add x exch moveto l mul y add x exch lineto dup s mul x add y moveto l mul x add y lineto stroke enddraw @ This drawing routing draws four crop marks at positions defined above, in @ the appropriate orientations, when called in a heading directive. draw crops topleft translate -1 1 &left magnification div &top magnification div draw onecrop -1 -1 &left magnification div &bottom magnification div pagelength sub draw onecrop 1 1 &right magnification div linelength add &top magnification div draw onecrop 1 -1 &right magnification div linelength add &bottom magnification div pagelength sub draw onecrop enddraw @ These heading directives cause crop marks to be drawn on all pages. heading draw crops 0 pageheading draw crops 0 @ The remainder of this file consists of some test heading directives to print @ in relation to the crop marks. An A5 page image is specified. To make these @ crop marks show on an A4 page you need to use the --printadjust command @ line option to move the image the to the right and down. @ Replace what follows with your own PMW input file. Sheetsize A5 heading "<|heading|>" pageheading "<|heading|>" footing "<|footing|>" pagefooting "<|footing|>" [newmovement newpage] @ force there to be two pages for testing pmw-5.22/contrib/README0000644000222100022210000000213714541067540012664 0ustar ph10ph10The files in this directory are contributed examples of how to do certain things in PMW. Each contains some explanatory comments. Brackets Some draw functions for bracketing notes and noteheads. Circles A draw function for drawing a circle, and another for using this to encircle noteheads. There is a small demonstration. CropMarks Draw functions for drawing crop marks. HandBells Some functions for drawing handbell signs. RubOut Macros that can "rub out" rectangular areas. One use is for caesurae that clear the bit of stave underneath them. SplitArrow Drawing functions for end-of-line splitting arrows that are different in style to those in the PMW font. TAB Macros that show one way of generating guitar tablature on a 4-line stave, along with a test. Vsquiggle How to split and divide a system vertically with a squiggly line. WingedRepeats How to generate repeat marks with small "wings" above and below by employing the music characters used for system brackets. This gives a different look compared with the winged repeat styles now available in PMW. ---- pmw-5.22/contrib/Vsquiggle0000644000222100022210000000405214541067540013673 0ustar ph10ph10@ This is a demonstration file showing how to draw a squiggly line vertically @ through a system, with a bit of white space on either side, in order to @ indicate that two bars are not consecutive. It is easiest to position it @ by reference to a bar line (which gets wiped out). The drawing function @ must be called from the bottom stave of the system. @ Philip Hazel, March 1997 heading "" draw squiggle systemdepth 19 add /h exch def @ h is the total height including the top system @ plus extra to cover the width of the top @ the and bottom stave lines. /w 12 def @ w is width of white space required. w 2 div neg -2 moveto 0 h rlineto @ Define rectangle to whitewash. w 0 rlineto 0 h neg rlineto w neg 0 rlineto 1 setgray fill @ Whitewash it. 3 -3 moveto @ Squiggle prints 3 points to the left, @ so move it 3 points right to print at @ our origin, and start it a bit below. h 2 add 4 div 1 add @ Compute number to print (each is 4 pts high). { "\*145\"/c show 0 4 rmoveto } @ Print the squiggly line by repeated printing; repeat @ the /c prevents the current point moving @ automatically because if that is done, rounding @ errors build up and the line ends up too short, @ so instead we explicitly advance 4 points each time. enddraw [stave 1 treble 1] gggg | gggg || [endstave] [stave 2 bass 0] gggg [space 4 overdraw squiggle] | [space 8] gggg || [endstave] [newmovement] heading "Just to prove it works for any system" [stave 1 treble 1] gggg | gggg || [endstave] [stave 2 treble 1] gggg | gggg || [endstave] [stave 3 alto 1] gggg | gggg || [endstave] [stave 4 bass 0] gggg [space 4 overdraw squiggle] | [space 8] gggg || [endstave] pmw-5.22/contrib/Brackets0000644000222100022210000000634414541067540013471 0ustar ph10ph10@ Drawing procedure for bracketing a note or a chord. @ The brackets increase their curvature and thickness in the middle @ in proportion to the note they surround. @ Contributed by Richard Hallas, January 1993. @ Square brackets and RH and LH brackets contributed by Richard @ Hallas, October 1994. @ Minor correction from Richard Hallas incorporated March 1995 Draw Bracket @ Square left-bracket enclosing note or chord @ -1 headleft sub accleft sub headbottom linebottom add moveto -2 0 rlineto -3 headleft sub accleft sub headtop linetop sub lineto 2 0 rlineto 0.5 setlinewidth stroke Enddraw Draw Rightbracket @ Square right-bracket enclosing note or chord @ 1 headright add headbottom linebottom add moveto 2 0 rlineto 3 headright add headtop linetop sub lineto -2 0 rlineto 0.5 setlinewidth stroke Enddraw Draw Notebracket @ Pair of round parentheses enclosing note or chord @ Width in the centre auto-adjusts according to size of bracket @ @ Left bracket (inside): -1 headleft sub accleft sub stembottom 1 sub moveto @ Bottom -1 headleft sub accleft sub stemtop stembottom sub 8 div 1 add sub stembottom stemtop stembottom sub 4 div add @ bezier point 1 (lower) -1 headleft sub accleft sub stemtop stembottom sub 8 div 1 add sub stemtop stemtop stembottom sub 4 div sub @ bezier point 2 (upper) -1 headleft sub accleft sub stemtop 1 add curveto @ Top @ Left bracket (outside): -1 headleft sub accleft sub stemtop stembottom sub 8 div dup 2 1 roll 0.25 mul 1.5 add add sub stemtop stemtop stembottom sub 4 div sub @ bezier point 1 (upper) -1 headleft sub accleft sub stemtop stembottom sub 8 div dup 2 1 roll 0.25 mul 1.5 add add sub stembottom stemtop stembottom sub 4 div add @ bezier point 2 (lower) -1 headleft sub accleft sub stembottom 1 sub curveto @ Bottom 0.5 setlinewidth fill @ Left bracket complete @ @ Right bracket (inside): 1 headright add stembottom 1 sub moveto @ Bottom 1 headright add stemtop stembottom sub 8 div 1 add add stembottom stemtop stembottom sub 4 div add @ bezier point 1 (lower) 1 headright add stemtop stembottom sub 8 div 1 add add stemtop stemtop stembottom sub 4 div sub @ bezier point 2 (upper) 1 headright add stemtop 1 add curveto @ Top @ Right bracket (outside): 1 headright add stemtop stembottom sub 8 div dup 2 1 roll 0.25 mul 1.5 add add add stemtop stemtop stembottom sub 4 div sub @ bezier point 1 (upper) 1 headright add stemtop stembottom sub 8 div dup 2 1 roll 0.25 mul 1.5 add add add stembottom stemtop stembottom sub 4 div add @ bezier point 2 (lower) 1 headright add stembottom 1 sub curveto @ Bottom 0.5 setlinewidth fill @ Right bracket complete Enddraw Draw RHbracket @ Square left-bracket with jog at bottom only, for piano RH on lower stave @ Requires one argument to specify length of main part of bracket @ -1 headleft sub accleft sub headbottom linebottom add moveto -2 0 rlineto 0 exch rlineto 0.5 setlinewidth stroke Enddraw Draw LHbracket @ Square left-bracket with jog at top only, for piano LH on upper stave @ Requires one argument to specify length of main part of bracket @ -1 headleft sub accleft sub headtop linetop sub moveto -2 0 rlineto 0 exch sub 0 exch rlineto 0.5 setlinewidth stroke Enddraw pmw-5.22/contrib/SplitArrow0000644000222100022210000000116714541067540014037 0ustar ph10ph10@ These are some drawing functions contributed by Richard Hallas. They draw @ end-of-line splitting arrows which are different in style to the ones in @ the PMW font. Draw SplitUp @ Diagonal splitting arrow to be used at the end of a system @ 0 8 moveto 8 8 rlineto @ draw diagonal -4 0 rmoveto 4 0 rlineto 0 -4 rlineto @ draw arrowhead 0.5 setlinewidth stroke Enddraw Draw SplitDown @ Diagonal splitting arrow to be used at the end of a system @ 0 8 moveto 8 -8 rlineto @ draw diagonal -4 0 rmoveto 4 0 rlineto 0 4 rlineto @ draw arrowhead 0.5 setlinewidth stroke Enddraw pmw-5.22/contrib/HandBells0000644000222100022210000001043614541067540013564 0ustar ph10ph10@ These are some drawing functions for handbell signs. (The circle is a @ general function also present in the Circles file.) heading "" @ This function draws a circle. It must be called with four values on @ the stack: the thickness of the line, the radius, and the coordinates @ of the centre. For example: @ heading draw 0.4 20 24 0 circle @ The variables xx1 - xx4 are used as local variables. draw circle moveto 1.414 div dup 0.6 mul /xx1 exch def dup 1.4 mul /xx2 exch def dup 0.5 mul /xx3 exch def dup 2.0 mul /xx4 exch def neg dup rmoveto xx1 xx3 neg xx2 xx3 neg xx4 0 rcurveto xx1 xx1 xx1 xx2 0 xx4 rcurveto xx1 neg xx3 xx2 neg xx3 xx4 neg 0 rcurveto xx1 neg xx1 neg xx1 neg xx2 neg 0 xx4 neg rcurveto setlinewidth stroke enddraw @ Damp Sign: @ Three arguments: x and y position of the centre, and the @ scale, which is the length from the centre to the end of @ the cross arms. draw dampsign /s exch def @ s is the scale translate 0 s moveto 0 s 2 mul neg rlineto s 0 moveto s 2 mul neg 0 rlineto 0.3 setlinewidth stroke 0.3 s 0.66 mul 0 0 draw circle 0.3 s 0.33 mul 0 0 draw circle enddraw @ Echo: @ Eight arguments: x and y position of the centre of the semicirle, the @ radius of the semicircle, the length of the left-hand extension, the @ length of the right-hand extension, the width of the arrow, the @ length of the arrow, and the width of the line. draw echo /w exch def @ line width /al exch def @ arrow length /aw exch 0.5 mul def @ 1/2 arrow width /rl exch def @ right extension /ll exch def @ left extension /r exch def @ radius translate @ to centre of semicircle r neg 0 moveto 0 ll rlineto @ draw left extension r 0 moveto 0 rl rlineto currentpoint @ draw right extension w setlinewidth stroke @ vertical lines moveto aw 0 rlineto aw neg al rlineto @ triangle aw neg al neg rlineto fill r neg 0 moveto @ curved bit 0 r 1.4 mul neg r 2 mul r 1.4 mul neg r 2 mul 0 rcurveto stroke enddraw @ Gyro: @ Three arguments: x and y position of the centre of the cirle, and the @ scale, which is the radius of the semicircle. draw gyro /r exch def /t r 0.2 mul def translate 0.3 r 0 0 draw circle currentgray currentlinewidth 0 r moveto r 0.25 mul neg 0 r 0.4 mul neg r 0.03 mul neg r 0.8 mul neg r 0.4 mul neg rcurveto 1 setgray 1 setlinewidth stroke setlinewidth setgray 0 r 0.99 mul t sub moveto 0 t 2 mul rlineto t 2.5 neg t neg rlineto t 2.5 t neg rlineto fill enddraw @ Martellato: @ Three arguments: x and y position of the tip, plus a scale value, @ which is half the width of the triangle. draw mart /s exch def translate 0 0 moveto s s 3 mul rlineto s 2 mul neg 0 rlineto fill enddraw @ Macro to call signs with default positioning *define ds(24,6) [draw 3 &&1 &&2 dampsign] @ Eight arguments: x and y position of the centre of the semicirle, the @ radius of the semicircle, the length of the left-hand extension, the @ length of the right-hand extension, the width of the arrow, the @ length of the arrow, and the width of the line. @ Macro argument gives vertical position *define echo(24) [draw 3 &&1 1.6 2 8.5 3 3 0.3 echo] @ | | | | | | | | @ | | | | | | | -> width of line @ | | | | | | ----> length of arrow @ | | | | | ------> width of arrow @ | | | | ---------> right-hand length @ | | | ------------> left-hand length @ | | ---------------> radius @ | -------------------> y coordinate @ ----------------------> x coordinate *define gyro(24,5) [draw 3 &&1 &&2 gyro] *define mart(24,2) [draw 3 &&1 &&2 mart] @ Testing... Magnification 1.5 [stave 1 treble 1] g &ds g &ds g &echo g | &echo(4) q &gyro g &mart gg | [endstave] pmw-5.22/contrib/TAB0000644000222100022210000000642414541067540012340 0ustar ph10ph10@ This set of macros shows one way of causing PMW to print guitar @ tablature. The example is for a 4-line bass guitar stave; a similar @ approach can also be used for a 6-line stave. This is a complete @ PMW input file that can be processed and printed, to show how the @ macros are used. @ Philip Hazel, June 1994. @ Updated for PMW 5.00 November 2021 @ Looks good at this size magnification 1.1 @ Define some additional fonts. Helvetica-Bold is used for the numbers @ printed on the tab stave, and plain Helvetica is used for the TAB logo. @ Also define the required font sizes. The numbering size, 5.5, seems @ small, but the whole stave is to be magnified (see stavesizes below). textfont extra 1 "Helvetica-Bold" textfont extra 2 "Helvetica" textsizes 10 5.5 17/0.8 11 @ This draws the "TAB" logo, consisting of overlapping T, A, and B @ characters. The T and the B are printed as characters, with a single @ stroke to complete the notional A. All dimensions are multiplied by @ the relative stave size, so that it should work for any size of @ 4-line stave. Note the use of s3 and s4 to obtain fonts of the right @ size for the T and the B. draw tab stavestart 2.0 stavesize mul add 0 moveto "\xx2\T"/s3 show stavestart 4.7 stavesize mul add 0 moveto "\xx2\B"/s4 show stavestart 6 stavesize mul add 12 stavesize mul moveto 6.5 stavesize mul -7.5 stavesize mul rlineto 1 setlinewidth stroke enddraw @ This set of macros is used to print numbers on the stave. Each macro's @ name starts with a letter identifying the note length, and a number @ identifying the stave line, counting from the bottom. The argument is @ the digit to be printed. Macros for crotchets, minims, and quavers are @ shown here - other note lengths can be handled similarly. The effect of @ each macro is to print its argument, centred on the appropriate line, @ and then move on, by way of an invisible note of the right length. *define c1() "\xx1\&&1"/s2/b0/d2 q *define c2() "\xx1\&&1"/s2/b0/u2 q *define c3() "\xx1\&&1"/s2/b0/u6 q *define c4() "\xx1\&&1"/s2/b0/u10 q *define m1() "\xx1\&&1"/s2/b0/d2 Q *define m2() "\xx1\&&1"/s2/b0/u2 Q *define m3() "\xx1\&&1"/s2/b0/u6 Q *define m4() "\xx1\&&1"/s2/b0/u10 Q *define q1() "\xx1\&&1"/s2/b0/d2 q- *define q2() "\xx1\&&1"/s2/b0/u2 q- *define q3() "\xx1\&&1"/s2/b0/u6 q- *define q4() "\xx1\&&1"/s2/b0/u10 q- @ Other parameters - the stavespacing can be adjusted to taste, of course. @ The tab stave is magnified relative to the conventional stave. stavespacing 1/36 stavesizes 2/1.6 breakbarlines bracket brace 1-2 unfinished @ This is for the tab stave, where we don't want a time signature printtime 8/8 "" "" @ Sample bars in conventional notation [stave 1 bass 0 key G] (: Ggd-f- | Ggg-f- | Eeb`-d- | Eee-d- | [endstave] @ Tablature for the above. Note the use of "draw tab" as a stave title. @ It is given twice, because the first stave title is printed on the @ first system, and the second one on subsequent systems. [stave 2/4 draw tab draw tab noclef] @ set 4-line stave and no clef [time 8/8] @ this will print as blank [barlinestyle 3] @ all bar lines invisible &m3(5) &c3(5) &q2(5) &q3(4) | &m3(5) &c3(5) &q3(5) &q3(4) | &m3(2) &c3(2) &q2(2) &q2(5) | &m3(2) &c3(2) &q3(2) &q2(5) | [endstave] pmw-5.22/contrib/WingedRepeats0000644000222100022210000000133614541067540014470 0ustar ph10ph10@ This file illustrates how to generate repeat marks with "wings" above and @ below. breakbarlines 1 bracket brace 2-3 *define leftwingtop "\mf\\176\"/bar/b0 *define leftwingbot "\mf\\177\"/bar/b0 *define rightwingtop "\mf\\177\"/a0/rot180/r2 *define rightwingbot "\mf\\176\"/a0/rot180/r2 [staff 1 treble 1] G B | (: &leftwingtop &leftwingbot C' C | G B :) &rightwingtop &rightwingbot | (: &leftwingtop &leftwingbot C' C | G B :) &rightwingtop &rightwingbot | C'+ | [endstaff] [staff 2 treble 1] R! | (: &leftwingtop R! | R! :) &rightwingtop | (: &leftwingtop R! | R! :) &rightwingtop | R! | [endstaff] [staff 3 bass 1] R! | (: &leftwingbot R! | R! :) &rightwingbot | (: &leftwingbot R! | R! :) &rightwingbot | R! | [endstaff] pmw-5.22/configure.ac0000644000222100022210000000427314541067540012635 0ustar ph10ph10dnl Process this file with autoconf to produce a configure script. dnl This is required at the start; the name is the name of a file dnl it should be seeing, to verify it is in the same directory. AC_INIT AC_CONFIG_SRCDIR([src/pmw.h]) dnl Checks for programs. AC_PROG_CC AC_PROG_INSTALL dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_SIZE_T dnl Checks for library functions. AC_CHECK_FUNCS(memmove strerror) dnl Handle --disable-pmwrc NO_PMWRC=0 AC_ARG_ENABLE(pmwrc, AS_HELP_STRING([--disable-pmwrc], [disable support for .pmwrc file]), , enable_pmwrc=unset) if test "x$enable_pmwrc" = "xunset"; then enable_pmwrc=yes; fi if test "x$enable_pmwrc" != "xyes"; then NO_PMWRC=1; fi dnl Handle --enable-b2pf SUPPORT_B2PF=0 AC_ARG_ENABLE(b2pf, AS_HELP_STRING([--enable-b2pf], [enable support for B2PF processing]), , enable_b2pf=unset) if test "x$enable_b2pf" = "xunset"; then enable_b2pf=no; fi if test "x$enable_b2pf" = "xyes"; then AC_CHECK_LIB([b2pf], [b2pf_context_create], , AC_MSG_ERROR(B2PF library not found)) SUPPORT_B2PF=1 LFLAGS=-lb2pf fi dnl Handle --enable-musicxml SUPPORT_XML=0 AC_ARG_ENABLE(musicxml, AS_HELP_STRING([--enable-musicxml], [enable support for MusicXML input]), , enable_musicxml=unset) if test "x$enable_musicxml" = "xunset"; then enable_musicxml=no; fi if test "x$enable_musicxml" = "xyes"; then SUPPORT_XML=1; fi dnl Export these values in addition to the defaults AC_SUBST(LFLAGS) AC_SUBST(NO_PMWRC) AC_SUBST(SUPPORT_B2PF) AC_SUBST(SUPPORT_XML) dnl Write these files AC_CONFIG_FILES( Makefile src/config.h ) dnl This must be last AC_OUTPUT dnl Output configuration settings cat <test.diff if [ $? != 0 ] ; then mv test.diff test-$file.diff echo "*** $file test failed - see test-$file.diff ***" if [ "$autoquit" = "autoquit" ]; then exit 1; fi rc=1 else echo $file test succeeded fi done # If all is well and we are in a development environment where the wider set of # tests is available, run them too. if [ $rc = 0 ]; then /bin/rm -f test.* /bin/rm -f test-* if [ -x ../testing/RunTests ]; then (cd ../testing; ./RunTests $autoquit $valgrind) rc=$? fi fi exit $rc # End pmw-5.22/testdist/teststderrM0000644000222100022210000000000014541067540014435 0ustar ph10ph10pmw-5.22/testdist/teststdoutM0000644000222100022210000001023214541067540014464 0ustar ph10ph10*** Running distributed tests *** Test01 test succeeded Test02 test succeeded Test03 test succeeded Test04 test succeeded Test05 test succeeded Test06 test succeeded Test07 test succeeded Test08 test succeeded *** Running B2PFtests **** Test Test1 OK Test Test2 OK *** Running afonttests **** Test acf OK Test at1 OK Test at2 OK Test at3 OK Test at4 OK *** Running bartests **** Test test1 OK Test test2 OK *** Running changetests **** Test 101 OK Test 102 OK Test 103 OK Test 104 OK Test 110 OK Test 111 OK Test 112 OK Test 113 OK Test 114 OK Test 115 OK Test 116 OK Test 117 OK Test 118 OK Test 120 OK Test 130 OK Test 140 OK Test 150 OK Test 160 OK Test 200 OK Test 201 OK Test 202 OK Test 210 OK Test 220 OK Test 221 OK Test 222 OK Test 223 OK Test 224 OK Test 225 OK Test 300 OK Test 301 OK Test 310 OK Test 311 OK Test 312 OK Test 321 OK Test 322 OK Test 323 OK Test 330 OK Test 331 OK Test 332 OK Test 333 OK Test 334 OK Test 335 OK Test 336 OK Test 337 OK Test 339 OK Test 340 OK Test 341 OK Test 342 OK Test 343 OK Test 344 OK Test 345 OK Test 346 OK Test 347 OK Test 349 OK Test 351 OK Test 352 OK Test 353 OK Test 354 OK Test 358 OK Test 403 OK Test 404 OK Test 407 OK Test 410 OK Test 412 OK Test 420 OK Test 422 OK Test 423 OK Test 424 OK Test 425 OK Test 426 OK Test 427 OK Test 429 OK Test 430 OK Test 431 OK Test 432 OK Test 433 OK Test 440 OK Test 450 OK Test 452 OK Test 500 OK Test 503 OK Test 510 OK Test 520 OK Test 521 OK Test 521.1 OK Test 522 OK *** Running miditests **** Test midi1 OK Test midi2 OK Test midi3 OK Test midi4 OK Test midi5 OK Test midi6 OK Test midi7 OK Test midi8 OK Test midi9 OK *** Running misctests **** Test A6 OK Test Accidental OK Test Acctests OK Test AcctestsB OK Test BanksTest OK Test Bars OK Test Beams OK Test BeamsBad OK Test Breves OK Test Caesurae OK Test Clefs OK Test ClefsKeys OK Test Couple OK Test CropMarks OK Test Cue OK Test Drawing OK Test Errors OK Test Expression OK Test FBass OK Test Finger OK Test FontTester OK Test Fonts OK Test Footnotes OK Test Format OK Test Grace OK Test Guitar OK Test Hairpins OK Test HeadFoot OK Test Include OK Test Joins OK Test Justify1 OK Test Justify2 OK Test Keys OK Test LeftMargin OK Test Masq+Trem OK Test Movements OK Test MultiRest OK Test NatAnth OK Test NoteSpace OK Test Notes+Dots OK Test Omitempty OK Test Ornaments OK Test PageErrors OK Test PageLayout OK Test Percussion OK Test Preprocess OK Test Repeats OK Test Reset OK Test RightToLeft OK Test Skip OK Test Slurs+Ties OK Test SpaceMove OK Test StartSpace OK Test StartTexts OK Test Stave0 OK Test StaveSpace OK Test Staves OK Test StdMacros OK Test Stems OK Test Suspend OK Test TAB OK Test Text OK Test Times OK Test TitlePage OK Test Transpose OK Test Tuplets OK Test Underlay OK *** Running movttests **** Test header1 OK Test header2 OK Test header3 OK Test header4 OK Test header5 OK *** Running preproctests **** Test errors OK Test if1 OK Test if2 OK Test if3 OK Test if4 OK Test if5 OK Test macros OK Test misc OK *** Running scoretests **** Test 12_txt OK Test GreenBlade OK Test StringQurt OK Test ZZSuburb OK Test abtpt OK Test aengus OK Test allgrenrg2 OK Test bielawa OK Test chaitkin OK Test clarinet OK Test jdvictoria OK Test lassus OK Test lightmus OK Test londondery OK Test trumpetvol OK *** Running spectests **** Test a4ona3 OK Test a4sideways OK Test a5ona4 OK Test a5ona4mag OK Test a5ona4magp OK Test dslwidth OK Test duplex OK Test eps OK Test eps2 OK Test eps3 OK Test eps4 OK Test gutter OK Test includefont OK Test pages OK Test pamphlet OK Test printadjust OK Test printscale OK Test printside OK Test reverse OK Test stavechars OK Test tumble OK *** Running stavedirtests **** Test test1 OK *** Running transtests **** Test 8noteC OK Test 8noteN OK Test cond OK Test condm2 OK Test condp1 OK Test majorC OK Test majorCFlat OK Test majorCSharpMinor OK Test majorGflat OK Test majorGflatN OK Test majorN OK Test majorNSharpMinor OK Test minorC OK Test minorN OK *** Running xmltests **** Test H01 OK Test H02 OK Test H03 OK Test H04 OK Test H05 OK Test X01 OK Test X02 OK Test X03 OK Test X04 OK Test X05 OK Test X06 OK Test X07 OK Test X08 OK Test X09 OK Test X10 OK Test X11 OK Test X12 OK Test X13 OK Test X14 OK Test X15 OK Test X16 OK Test X17 OK pmw-5.22/testdist/infiles/0000755000222100022210000000000014541067540013635 5ustar ph10ph10pmw-5.22/testdist/infiles/Test040000644000222100022210000000723414541067540014651 0ustar ph10ph10Heading 14 "|\it\G\o.tterd\a.mmerung, \rm\Act I" Heading 12 "||Wagner" *Define ps "\mf\\163\"/b/d6 *Define pe "\mu\$"/b/d6 *Define ts [triplets on] *Define te [triplets off] *Define P "\bi\p" *Define FF "\bi\ff"/d2 *Define one "\rm\1"/fb *Define two "\rm\2"/fb *Define four "\rm\4"/fb *Define five "\rm\5"/fb Linelength 540 notespacing 30 20 16 12 10 10 10 10 notespacing *0.75 staffspacing 1/80 2/0 3/56 4/0 startlinespacing 2 0 2 systemgap 68 notime unfinished Breakbarlines 1 bracket brace 2-5 bracestyle 1 Underlaysize 9.5 Underlaydepth 10 Tripletfont 9 italic Fbsize 7 Clefsize 0.8 [staff 1 treble 1][text underlay] "\bf\Br\u.nnh."/a "ge-denk' der Lie-=be der wir le-=ben:" "\it\the love we live= for aye re-mem-=ber:" rr-a-a.#f'- | #d'_E'a | rAa | G'+_ | G'.a-[space 2]r- || [key E$] "Br\u.nn-hil-de brennt= dann e-wig hei-=lig" "\it\Br\u.nn-hil-de then= will burn for e-=ver" $g'F'f' | f'_$F'e' | E'.a | $C'+_ | $C'E | [endstaff] [staff 2 treble 1][stems up] [slur/a/ru14/co4] #e'-#f'-qq{/xq-q-q-} [es] | @1 [slur/a/d1] g'.[space 2]#f'=-g'=-a'=-g'=-e''.[move 7]b'- | @2 d''[es]qqq | @3 [slur/a/ld4/co6] [move 6](e'.g'.)[space 10]#f'=-g'=-a'=-g'=-[space 2]e''.[space 8]e'- [space 1] | @4 g'-#f'=-g'=-a'=-g'=-_/b [space 1]g'\sd\q-qq- || @5 [key E$] qQ[xslur/a/ld10/rd10][xslur/b](ff')[es] | @6 (ff') [es][es] ($F$F')[slur/=A/a/d12](ee') | @7 [slur/=B/a/co4][slur/=C/b/w/ld14/rd60] e'.[es/=A]q-e''.a'- [es/=C] | @8 $c''-&two;/u31 %d'[space 3]%f' a'-_/a; {/b/n/r3/u20 a'-b'-c''-_/a}[es/=B] | @9 [slur/a/ru1] [triplets off]{$c''e''-}[triplets on] a''.&five;/u49$g''-; {/u2&four;/u45e''-c''-b'-} [es] | @10 [endstaff] [staff 3 treble 1][stems down] &P;/d4 [slur/b/ll16/u12]a[es] b'.a'-; {f'-#c'-d'-} | @1 < #d'&one/u30 e'<> &one/u15/r2 g'_/b {/a/n/r3 g'-#f'-#e'-_/b} > | @2 &P;/d4 [slur/a/lr4/ru4/co8] e'-#f'- [move -6]a-\g/\ (d'.\ar\f'.b'.)a'-; {/a/n/r4/d3 f'-&one/u2 %e'- &two/u2 d'-} [es] | @3 "\it\########cresc.-====== #"/ul "\it\poco accel."/a/l12/u18 (g\ar\d')&one/u10/r2 #C'[move -2]d' | @4 $e'(g'g'')_(g'-g''-)(g'g'')($g'-$g''-)_/a || @5 [key E$] "\it\pi\u` \bi\f"/d6 (g'g'')(%F'%F'')[move 7]$!\ | @6 #C''.\>!\_ | c''\sd\ [stems auto] < D''_ M\e'')(d'\>M\d'')} | @14 {2/a/u5 (#c'\>M\#c'')(d'\>M\d'')} @15 [endstaff] [staff 3 treble 1][stems down][ties below][hairpins below] (F.%B.) | @1 [slur/b/ld2]D'e\>!\_ | @2 "\it\ cresc. - - -"/s1/r10/d13 {2/b e\M\[es]b\M\} | @3 &SFPP;/l20/d7 {4/b/u4 r\l-12\ [slur/b/u8/rd4/co4]#C.\>!\_} | @4 {4/b/d3 c"espr."/a/d11 d[es]ef}_ | @5 f[space 2] "\it\cresc. -"/s1/l3/d4.5 #f\>!\ g\>!\_ | @6 "- - - - - - "/b/d16/l6 {4/b/u4 g%f\>!\ %e\>!\ "#"/ul $e\>!\} | @7 &P; q Q | Q! | &FP/d2 Q! | @10 {4/b/lx/u4 [move 6] q "\it\^cresc.-"/ul/s1/d2 #fba} | @11 #F "#"/ul g_ | {4/b/u5 ga\>!\ d'\>!\ &F/d3 c'\>!\} | @13 {2/x &P; q "cresc."/l2 q } | Q! | @15 [endstaff] [staff 4 bass 0][stems up][ties above] [slur/ll20/d14] {4/a/d2 $)g\>!\[es]%g\>!\%a\>!\%b\>!\} | @1 [5]Q! | F`. | @7 r\l20\ r\l20\ [slur/ru2] d'_ | @8 [beammove -4] d'-e'-[es]f'-\>!\(a-\!>\#f'-)a'-\!>\g'-\!>\ | @9 %E'_%f'_ | [move 6]f'[space 6]qq | @11 r\l20\$E'_ | e'-d'-c'-b-a-g- | @13 (F.B.D'.F'.)_/a | (F.B.D'.F'.) | @15 [endstaff] [staff 5 bass 0][stems down][ties auto] %G`. | (C.E.$G.$B.) | (%A`.E.%G.#C'.) | (B`.F.) | (%B`.F.$A.) | @5 [slur/a/rr36][slur/a/rr36/lr8/d10] [slur/b/rr41/lr6/u20][slur/b/rr41/u12] (C.F.%A.E'.)[es][es][es][es] | @6 Q! | {2/b (b`\M\fb) (%b`\M\f$a) } | @8 (C.E.G.) | (D.F.B.) | @10 [newline] [slur/b/u18/ru2/lr6/rl4][slur/b/u24/ru2/lr6] (DFBF')(#cfb%e')[es][es] | @11 (%C.%F.B.) | (F`.A.) | @13 {2/b r\Ml-8\ (b``\M\b`)}_/b | {2/b (b``\M\b`)($a``\M\$a`)} | @15 [endstaff] pmw-5.22/testdist/infiles/Test070000644000222100022210000000155014541067540014647 0ustar ph10ph10@ This input file demonstrates some of the text features that are now available @ in PMW, after the upgrade to Unicode characters. textfont extra 8 "Helvetica" textsizes 10 14 heading 14 "|Fancy font and character demonstration" 16 Heading 10 "Ten point stretched 1.0" Heading 10/0.8 "Ten point stretched 0.8" Heading 10/1.5 "Ten point stretched 1.5" Heading 10/1/20 "Ten pointSheared 20" 30 heading 14 "Dvo\rv\a'k, Gli\e`re, Faur\e', Lopes Gra\c,a, von Preu\ssen, Backer Gr\o/ndahl" 20 heading 14 "Bullet \xb7\ and dagger \x2020\ and lozenge \x25ca\ \xx8\and another typeface" 40 heading 12 "\bf\The following can appear only on staves \-- this stave is invisible!" 30 notime nocheck [stave 1/0 "Vertical"/v noclef] "Rotated"/s2/rot45 Q "Rotated"/s2/rot-45/u28/r12 Q Q Q "square"/u30 "square"/F/rot270 "square"/F/rot180 "square"/F/rot90 Q Q Q |? [endstave] pmw-5.22/testdist/infiles/Test010000644000222100022210000000503414541067540014642 0ustar ph10ph10Heading "|Credo" *Define F "\bi\f" Suspend 1-5 Time 3/4 Linelength 500 Notespacing *1.1 Systemgap 55 Bracket 1-5 Brace 6-7 Bracestyle 1 Breakbarlines 1 2 3 4 5 Barnumbers line Startlinespacing 4 0 4 Unfinished [stave 1 treble 1 text underlay] [13] R! | @13 "Cre-do, cre-do in un-um De-um," &F/a e'c'r | e'-; e'=; e'=; e'-; e'-; g' | e'rr | @16 [endstave] [stave 2 treble 1 text underlay] [13] R! | @13 "Cre-do, cre-do in un-um De-um," &F/a c'gr | c'-; c'=; c'=; c'-; c'-; b | c'rr | @16 [endstave] [stave 3 treble 1 text underlay] [13] R!| @13 "Cre-do, cre-do in un-um De-um," &F/a ger | g-; g=; g=; g-; g-; g | grr | @16 [endstave] [stave 4 treble 1 text underlay] [13] R!| @13 "Cre-do, cre-do in un-um De-um," &F/a c'c'r | e'-; e'=; e'=; e'-; e'-; d' | e'rr | @16 [endstave] [stave 5 bass text underlay] [13] R! | @13 "Cre-do, cre-do in un-um De-um," &F/a/l10/d6 c'cr | c'-; c'=; c'=; c'-; c'-; g | c'rr | @16 [endstave] [stave 6 treble 1] "\rm\Allegro Maestoso"/a/l14/u2 &F; c-g`=g`=; c-g`=g`=; c-g`=g`= | @1 (e'=c'=)(d'=b=)c'=(d'=b=); (e'=c'=)(d'=b=)(e'=c'=)(f'=d'=); (g'=b=)(a'=c'=)(f'=d'=)(g'=b=) | @2 (e'-c'-); g`=g`=; c-g`=g`=; c-g`=g`= | @3 (e'=c'=)(d'=b=)(e'=c'=)(f'=d'=); (g'=e'=)(f'=d'=)(e'=c'=)(f'=d'=); (g'=e'=)(a'=f'=)($b'=g'=)(g'=e'=) | @4 (a'-\su\f'-); [reset] f-\sd\c=c=; f-c=c=; f-c=c= | @5 (a'=f'=)($b'=g'=)(c''=a'=)(b'=g'=); (a'=f'=)(b'=g'=)(g'=e'=)(a'=f'=); (f'=d'=)(g'=e'=)(e'=c'=)(f'=d'=) | @6 (d'-%b-)d=d=; g-d=d=; g-d=d= | @7 (%b=g=)(a=#f=)(b=g=)(c'=a=); (d'=b=)(c'=a=)(d'=b=)(e'=c'=); (%f'=d'=)(g'=e'=)(f'=d'=)(e'=c'=) | @8 (d'-b-)d'=d'=; g'-d'=d'=; g'-d'=d'= | @9 [move 6]G'.\su\ [reset] g'-b=b=; e'-b=b=; e'-b=b= | @10 [stems up][ties up] g'_g'-; f' e'-; [stems down][ties auto][reset] e'-c'=b=; a-a-; b-c'- | @11 [stems up] e' d'-.\tr\c'=-d'=-; q [stems down] [reset] c'-a=g= f (c'-e-)g'=g'= [stems auto] | @12 c''r-e=c'=; d-b- | @13 (c'-e-); g`=g`=; c-g`=g`=; c-g`=g`= | @14 (e'=c'=)(d'=b=)c'=(d'=b=); (e'=c'=)(d'=b=)(e'=c'=)(f'=d'=); (g'=b=)(a'=c'=)(f'=d'=)(g'=b=) | @15 (e'-c'-); g`=g`=; c-g`=g`=; c-g`=g`= | @16 [endstave] [stave 7 bass] c-g`=g`=; c-g`=g`=; c-g`=g`= | @1 c-(c'=e=)(d'=g=); (e'-c'-)(e'-c'-); (d'-g-)(d'-g-) | @2 c'-; g`=g`=; c-g`=g`=; c-g`=g`= | c-c-; c'-g-; e-c- | @4 f-c=c=; f-c=c=; f-c=c= | f-f`-; f-g-; a-f- | @6 g-d=d=; g-d=d=; g-d=d= | g-g-; d-g-; b`-d- | g`- r-rr | @9 r-g=g=; c'-g=g=; c'-g=g= | r-c=c=; f-d=d=; g-e=e= | @11 a-f=f=; b-g=g= (c'c) | r-g=g=; c'-c-; g-g`- | @13 c-; g`=g`=; c-g`=g`=; c-g`=g`= | @14 c-(c'=e=)(d'=g=); (e'-c'-)(e'-c'-); (d'-g-)(d'-g-) | @15 c-; g`=g`=; c-g`=g`=; c-g`=g`= | @16 [endstave] pmw-5.22/testdist/infiles/Test060000644000222100022210000003461314541067540014654 0ustar ph10ph10@ Boyce - Symphony 1 @ Notated by Philip Hazel, September 1994. *define ff "\bi\ff" *define f "\bi\f" *define mf "\it\m\bi\f\" *define mp "\it\m\bi\p\" *define p "\bi\p" *define pp "\bi\pp" *define ppp "\bi\ppp" *if staff 1 *define instr Violin I notespacing *0.9 *fi *if staves 1-2 *define instr Violins *fi *if staff 2 *define instr Violin II *fi *if staff 3 *define instr Viola notespacing *1.3 *fi *if staff 4 *define instr Cello/Bass notespacing *1.25 *fi *if score Pageheading "" -30 Pageheading "\mf\{{{{{{\rm\\pe\ || \po\\mf\{{{{{" 20 footing "||Computer typesetting by Philip Hazel" barnumbers boxed line bottommargin 10 *else magnification 1.4 linelength 520 barnumbers boxed line 8.5 heading 12 "&instr" 0 Pageheading "" -30 Pageheading "&instr|[\p\]" 20 footing "" 8 footing "||Computer typesetting by Philip Hazel" *fi heading 18 "|Symphony 1" 30 heading 12 "||William Boyce (1711\--1779)" 20 heading 12 "|I" 30 Key B$ Time 4/4 Repeatstyle 4 tripletfont 9 italic copyzero 1/6 *if harpsichord midichannel 1 "harpsichord" 1-4 *fi *if piano midichannel 1 "piano" 1-4 *fi *if brass midichannel 1 "trumpet" 1-2 midichannel 2 "trombone" 3 midichannel 3 "french horn" 4 *fi [stave 0] "\bf\Allegro"/a/ts [19] Q! | ["A"] [11] Q! | [endstave] [stave 1 treble 1] *if score [name "Violin I"/c] *fi &f d' c'-b=a=; b=a=b-; r-f- | @1 g=a=b=a=; a=b=c'=b=; b=a=b-; r-f'- | @2 g-g'-; a=b=c'=b=; b=c'=d'=c'=; c'=d'=e'=d'= | @3 d'=f'=b'-; e'=d'=c'=b=; a=g=f-; r- f'-\.\ | @4 f' f-\.\f'-\.\; f' c'-\.\f'-\.\ | @5 f'=g'=f'=e'=; d'=c'=d'=b=; a=b=a=g=; f-; f'-_ | @6 f'=g'=f'=e'=; d'-g'-_; g'=a'=g'=f'=; %e'-a'-_ | @7 a'=b'=a'=g'=; f'-b'-\.\; b'-b-_; b=d'=c'=b= | @8 a' g'-f'=%e'=; f'=e'=f'-; r-c'- | @9 d'=%e'=f'=e'=; e'=f'=g'=f'=; f'=e'=f'-; r- c''- | @10 d'-d''-; %e'=f'=g'=f'=; f'=g'=a'=g'=; g'=b=a=g= | @11 a-g=f=; gfr :)| @12 &p f'-.\tr\%e'=-f'=-; $a'-\.\c'-\.\; %b-.\tr\c'=; d'=b=c'=d'= | @13 c'=%b=c'=g'=; f'=e'=f'=d'=; e'=f'=e'=d'=; c'=g'=f'=g'=; | @14 $a'=g'=a'=g'=; f'=e'=d'=c'=; %b=c'=b=%)a=; g-g'-\.\ | @15 g'g-\.\g'-\.\ g' r= $a'=g'=f'= | @16 e'=d'=e'=c'=; f'=e'=f'=d'=; g'-c''-; b'=-$a'=-; r= g'=-f'=-; r= | @17 e'-.f'=; d'e'-g'=%b=; c'-\.\f'-\.\ | @18 e'-.f'= d'c' r= g'=f'=e'= | @19 *if part [copyzero -4] *fi d'-c'=b=; e'-d'=c'=; d'=c'=d'=b=; f'_ | @20 f'-%e'=d'=; e'=c'=g'=b=_; b-a=g=; a-f'-_ | @21 f'-%e'=d'=; e'=c'=b'=b=_; b-a=g=; a-$e'-_ | @22 e'-d'=c'=; d'=b=f'=$a=_; a-g=f=; g-e'-_ | @23 e'-d'=c'=; d'=c'=d'=b=; a=g=f-r | @24 &ff d'' c''-b'=a'=; b'=a'=b'-; r- $a'- | @25 g' f'-e'=d'=; e'=d'=e'-_; e'=f'=g'=f'=; | @26 e'=d'=e'=f'=; e'=g'=f'=e'=; d'=c'=d'=b=; e'=d'=e'=c'=; | @27 f'-b=c'=; c'\tr\ b- b'a'=g'= | @28 f'=e'=f'=d'=; g'=d'=c'=b=; a=f=f'=a=; b-b'- | @29 f-b=c'=; c'\tr\ b r | @30 [endstave] [stave 2 treble 1] *if score [name "Violin II"/c] *fi &f bfd-b-; b`-d- | b`-e-; c-a-; f-d-; b`-b-_ | b-e'-; f-a-; f- ba- | @3 b-f'-; b-g-; c-b`-; c-; c'-\.\ | @4 d'=c'=d'=e'=; f'=e'=f'=d'=; c'=d'=c'=b=; a=b=c'=a= | @5 d'=e'=d'=c'=; b=a=b=d=; c=d=c=b`=; a`-c'-; | @6 d'=e'=d'=c'=; b-d'-; %e'=f'=e'=d'=; c'-e'- | @7 f'=g'=f'=%e'=; d'-f'-; g'-; %e-; f-g- | @8 f'-c'-; b a-f'-; f-a- | @9 f-b-; g-%d'-; c'-a-; f-f'-_ | @10 f'-b'-; c'-b-; a-d'-; g-%e- | @11 f-f%e-fr :)| @12 &p r- [\.\] $a-c'-a-; r- d-%b-%b`- [\\] | @13 r-c' %b- c' r=e'=d'=e'= | @14 c'-.$)b=; $a [\.\] g-d-; %b`-; d'- [\\] | @15 e'=f'=e'=d'=; c'=%b=c'=e'=; d'=e'=d'=c'=; b-d'- | @16 g-; c' %b-; c'-g'-; c'_ | @17 c'=%b=; c' b-; c'-e=d=; c-c'-_ | @18 c'=%b=; c' b- c' r=e'=d'=c'= | @19 $)b=a= b a- b r=c'=b=a= | @20 b.%e-c.c'=a= | @21 f.%e-c.c'=a= | @22 f.d-b`.b=g= | @23 *if part [newline] *fi a-g-_; f=e=f=d= cr | @24 &ff b'f' d'=c'=d'=e'=; f'-d'- | @25 *if part [newline] *fi b-e'-; b g-b-; c'=d'=e'=d'= | @26 c'=b=c'=d'=; c'=e'=d'=c'=; b=a=b=g=; a-c'-_ | @27 c'=a=; b a-; d'=e'=f'=e'=; e'-c'-_ | @28 c'-; bg-; f-.e=; d-g'- | @29 d=b`=; b a- br | @30 [endstave] [stave 3 alto 1] *if score [name "Viola"/c] *fi &f ff-c-; b`-d-; f-b`- | gfb`-f-; d-b`-; | @2 ecdg-f- | fe-g-fr-a- | @4 b=a=b=c'=; d'=c'=d'=b=; a=b=a=g=; f=g=a=f= | @5 br-f-f.c'- | f-b-; r-b-; g-c'-; r-c'- | @7 a-d'-; r-d'-; g-g-; f-%e- | @8 c'-$)e-; d-c-; f-a-; c-f- | @9 dcf-c'-; a-f-; | bg-%e-; f-f-; c-c- | @11 cd-c-cr :) | @12 &p r- [\.\] f`-f-f`-; r- f`-f-f`- | @13 g`-g-; d-g-; g\x\ g-g- | @14 f\x\ c-f- d\x\ d-%b`- [\\] | @15 c=%b`=c=d=; e=d=e=c=; %)b`=c=b`=a`=; [\.\] g`-b`- | @16 c-g-; d-f-; e-c-; f-c'-; | @17 g-c-; $a-g-; g-.f=; e-a- | @18 g-c'-; $a-g-; g-e-; c-%a- | @19 f-f-; g-f- [\\] fr-f- | @20 g.g-f.c- | g.g-f.c- | @22 b`.d-e.e- | c-f-; b-f-; fr | @23 &ff ff-c-; b` b-f- | e-bf-; e-g-; g-b- | @26 c'af-b-; c'-a- | f-d-; g-f-; f-d'-; g-c'- | @28 f-d-; e-.d=; c-d=c=; b`-b`- | b`-d-; g-f- fr | @30 [endstave] [stave 4 bass 0] *if score [name "Cello|Bass"/c] *fi &f b`-b-; a-f-; g`-g-; d-b`- | e-c-; f-e-; d-b`-; g-d- | @2 e-c-; f-e-; d-b-; e-f- | b-d-; g-e-; f-g-; a-f- | @4 b=a=b=c'=; d'=c'=d'=b=; a=b=a=g=; f=g=a=f= | @5 b.b`-; f\>\_f=g=a=f= | @6 b_b=a=b=g= c'_c'=b=c'=a= | d'_d'=c'=d'=b=; %e'-c'-; d'-e'- | @8 f'-a-; b-c'-; d-d'-; a-f- | b-g-; c'-b-; a-f-; d'-a- | @10 b-g-; c'-c-; d-b- %e-c- | @11 f-a`-; b`-c-; f` r :)| @12 &p [\.\] r-f-f'-f-; r-f-f'-f- | e-e'-; d'-g-; c'-g-; e-c- | @14 f-g-; $a-f-; [\\] g_g=%a=%b=g= | @15 c'=%b=c'=d'=; e'=d'=e'=c'=; b=c'=%)b=a=; [\.\] g-%)b- | @16 c'-c-; d-d'-; e'-e-; f-$a- | g-$a-; f-g-; c-g-; a-f- | @18 g-$a-; f-g-; c-c'-; %a-f- | @19 b-d-; c-f-; [\\] b`r-d- | g.c-f_f=g=a=f= | @21 g.c-f_f=g=a=f= | b.b`-e_e=f=g=e= | @23 f-a-; b-b`-; f-.g=; f=e=d=c= | @24 &ff b`-b-; a-f-; g`-g-; d-b`- | e-e'-; d'-b-; c-g-; c'-g- | @26 a-g-; a-f-; b-g-; c'-c- | d-g-; e-f-; b`-d-; c-e- | @28 d-b-; e-c'-; f-d-; g-e- | d-g-; e-f-; b` r | @30 [endstave] *if bass [stave 5 bass 0] *if score [name "Cello|Bass"/c] *fi &f b`-b-; a-f-; g`-g-; d-b`- | e-c-; f-e-; d-b`-; g-d- | @2 e-c-; f-e-; d-b-; e-f- | b-d-; g-e-; f-g-; a-f- | @4 b=a=b=c'=; d'=c'=d'=b=; a=b=a=g=; f=g=a=f= | @5 b.b`-; f\>\_f=g=a=f= | @6 b_b=a=b=g= c'_c'=b=c'=a= | d'_d'=c'=d'=b=; %e'-c'-; d'-e'- | @8 f'-a-; b-c'-; d-d'-; a-f- | b-g-; c'-b-; a-f-; d'-a- | @10 b-g-; c'-c-; d-b- %e-c- | @11 f-a`-; b`-c-; f` r :)| @12 &p [\.\] r-f-f'-f-; r-f-f'-f- | e-e'-; d'-g-; c'-g-; e-c- | @14 f-g-; $a-f-; [\\] g_g=%a=%b=g= | @15 c'=%b=c'=d'=; e'=d'=e'=c'=; b=c'=%)b=a=; [\.\] g-%)b- | @16 c'-c-; d-d'-; e'-e-; f-$a- | g-$a-; f-g-; c-g-; a-f- | @18 g-$a-; f-g-; c-c'-; %a-f- | @19 b-d-; c-f-; [\\] b`r-d- | g.c-f_f=g=a=f= | @21 g.c-f_f=g=a=f= | b.b`-e_e=f=g=e= | @23 f-a-; b-b`-; f-.g=; f=e=d=c= | @24 &ff b`-b-; a-f-; g`-g-; d-b`- | e-e'-; d'-b-; c-g-; c'-g- | @26 a-g-; a-f-; b-g-; c'-c- | d-g-; e-f-; b`-d-; c-e- | @28 d-b-; e-c'-; f-d-; g-e- | d-g-; e-f-; b` r | @30 [endstave] *fi [newmovement] heading 12 "|II" 40 *if stave 3 notespacing *1.3 *fi *if stave 4 notespacing *1.3 *fi Key B$ Time 3/8 *if stave 4 Copyzero 4/10 *else Copyzero 1/20 *fi [stave 0] "\bf\Moderato e dolce"/a/ts Q! | [endstave] [stave 1 treble 1] *if score [name "Violin I"/c] *fi &p d' {/a b'=a'=b'=} | #f'-\tr\g'-r- | e'-; {/a/u5 d'=c'=b=}; {/a a=g=#f=} | @3 g=.a=-; b-a- | @4 [triplets off] {b=g=d'=}; d'-.g'= | {#f'=d'=a'=}; a'-.c''= | @6 {b'=g'=d''=}; {c''=b'=a'=}; {b'=a'=g'=} | @7 g'-\tr\#f'- r- | b'-_; {b'=a'=b'=}; {f'=e'=d'=} | @9 {e'=f'=g'=}; f'-.e'= | @10 {d'=e'=c'=}; b=c'=c'-\tr\ | br- :)| @12 d'-_; {d'=f'=g'=}; {$a'=g'=f'=} | @13 {e'=d'=e'=}; {f'=e'=f'=}; {g'=e'=c'=}| @14 {d'=e'=f'=}; {e'=c'=e'=}; {d'=c'=%b=} | @15 %b-c' | e'-_; {e'=g'=f'=}; {e'=d'=c'=} | @17 {d'=c'=d'=}; {e'=d'=e'=}; {f'=b=b'=} | @18 {g'=f'=e'=}; d'-c'- | @19 b-; d'-.%e'=-f'=- | @20 %e'=.g'=-#f'=.g'=-; g'=.f'==g'== | @21 {a'=d'=c''=}; c''-.b'=-a'=- | @22 {b'=g'=d''=}; {c''=b'=a'=}; {b'=a'=g'=} | @23 g'-#f'-r- | d'-_; {d'=g'=a'=}; {b'=a'=b'=} | @25 c'-_; {c'=#f'=g'=}; {a'=g'=a'=} | @26 b-c'-a- | g=.g'=-; {b'=a'=g'=}; {f'=g'=e'=} | @28 d'-_; {d'=%e'=#f'=}; {g'=a'=b'=} | @29 c'=.c''=-; c''-.b'=-a'=- | @30 {d''=b'=g'=}; b'-a'-\tr\ | g'r- | @32 [endstave] [stave 2 treble 1] *if score [name "Violin II"/c] *fi &p d' {/a b'=a'=b'=} | #f'-\tr\g'-r- | e'-; {/a/u5 d'=c'=b=}; {/a a=g=#f=} | @3 g=.a=-; b-a- | @4 [triplets off] {b=g=d'=}; d'-.g'= | {#f'=d'=a'=}; a'-.c''= | @6 {b'=g'=d''=}; {c''=b'=a'=}; {b'=a'=g'=} | @7 g'-\tr\#f'- r- | b'-_; {b'=a'=b'=}; {f'=e'=d'=} | @9 {e'=f'=g'=}; f'-.e'= | @10 {d'=e'=c'=}; b=c'=c'-\tr\ | br- :)| @12 d'-_; {d'=f'=g'=}; {$a'=g'=f'=} | @13 {e'=d'=e'=}; {f'=e'=f'=}; {g'=e'=c'=}| @14 {d'=e'=f'=}; {e'=c'=e'=}; {d'=c'=%b=} | @15 %b-c' | e'-_; {e'=g'=f'=}; {e'=d'=c'=} | @17 {d'=c'=d'=}; {e'=d'=e'=}; {f'=b=b'=} | @18 {g'=f'=e'=}; d'-c'- | @19 b-; d'-.%e'=-f'=- | @20 %e'=.g'=-#f'=.g'=-; g'=.f'==g'== | @21 {a'=d'=c''=}; c''-.b'=-a'=- | @22 {b'=g'=d''=}; {c''=b'=a'=}; {b'=a'=g'=} | @23 g'-#f'-r- | d'-_; {d'=g'=a'=}; {b'=a'=b'=} | @25 c'-_; {c'=#f'=g'=}; {a'=g'=a'=} | @26 b-c'-a- | g=.g'=-; {b'=a'=g'=}; {f'=g'=e'=} | @28 d'-_; {d'=%e'=#f'=}; {g'=a'=b'=} | @29 c'=.c''=-; c''-.b'=-a'=- | @30 {d''=b'=g'=}; b'-a'-\tr\ | g'r- | @32 [endstave] [stave 3 alto 1] *if score [name "Viola"/c] *fi &p r-g-d- | c-d-r- | gc- | b`-g-#f- | r-g-b- | r-d'-#f- | g-a-g- | b-a-r- | @8 r-f-d- | c-c'-c'- | b=.g=-; f-e- | dr- :) | @12 r-f-d- | g-%b-c'- | $a-g-f- | e-g-e- | @16 r-c'-%)a- | f-a-b-_ | b=g=; f-e- | d-f-b- | @20 g-c'-b- | a-#f-a- | d=.b=-; a-g- | b-a-#f- | @24 g-c-d- | #f-a-f- | g-a-#f- | g-d'-c'- | @28 b-g-d'- | #f-a-f- | g-g-#f- | gr- | @32 [endstave] [stave 4 bass 0] *if score [name "Cello|Bass"/c] *fi &p r-b-g- | a-b-r- | c'-d'-d- | e-c-d- | r-b-g- | r-#f-d- | @6 g-#f-g- | d- "C.B."/a/c (d`-d-)r- | @8 r-d'-b- | c'-a-f- | b=.e=-; f-f`- | b`r- :) | @12 r-d'-%b- | c-d-e- | f-g-; g`- | c-; e'-c'- | @16 r- %)a-f- | b`-c-d- | e-; f-f`- | b`-; b-g- | @20 c'=.b=-a-g- | #f-d-f- | g-#f-g- | d-; d'-c'- | @24 b-a-g- | a-#f-d- | g-c-d- | b`-g`-a`- | @28 b`-b-g- | a-#f-d- | @29 b`=.c=-d-; "C.B."/a/c (d`-d-) | @30 @ d`-\sl16\ [reset] q [cue noteheads only move 0.8 draw notebracket] d- [o] | @30 g`r- | @32 [endstave] *if stave 3 [newmovement newpage] *else [newmovement] *fi heading 12 "|III" 40 *if stave 1 heading "" -15 notespacing *0.8 *fi *if stave 2 heading "" -15 notespacing *0.94 *fi *if stave 3 notespacing *1.15 *fi *if stave 4 notespacing *1.1 *fi *if score notespacing *1.1 *fi Key B$ Time 6/8 *if stave 2 Copyzero 2/4 *else Copyzero 1/15 *fi [stave 0] "\bf\Allegro"/a/ts [32] Q! | ["A"] [14] Q! | ["B"] Q! | [endstave] [stave 1 treble 1] *if score [name "Violin I"/c] *fi &f b'\.\d'-\.\; e'-d'-c'- | @1 b-d'-f'-; e'-c'-g'- | f'-a'-b'-; e'-d'-c'- | b.r-r-f'- | @4 [\.\]g'-g'-g'-; g'\x\ b'-\x\ | f'-f'-f'- [\\] f'b'- | @6 e'-d'-c'-; d'-b-f'- | d'c'-; r-r-f- | @8 [\.\] g-g-g- g\x\b-\x\ | f-f-f- [\\] fb- | @10 e-d-c-; d-f-b- | dc-; r-r- c'-\.\ | @12 d'-\.\a-b-; %e'-\.\a-b- | f'-\.\a-b-; g'-\.\a-b- | @14 a'-\.\%e'-f'-; d'-b'-g'- | f'%e'-; r-r- g'- | @16 c''a'-; b'-a'-g'- | a'-f'-%e'-; f'-c'-d'- | @18 a-b-a-g. | F. :)| @20 *if score [newline] *fi [space 2] f'\.\a-\.\; b-a-g- | f-a-c'-; b-g-d'- | @22 c'-%e'-f'-; b-a-g- | F. | b'\.\d'-\.\; e'-d'-c'- | @25 b-d'-f'-; e'-c'-g'- | f'-a'-b'-; e'-d'-c'- | @27 b._bb'- | a'-b'-a'-; g'-#f'-g'- | #f'-a'-d'-c'. | @30 b-a-g-; b-d'-c'- | d'._d'a'-\.\ | @32 [copyzero -6] [\.\] b'\x\ g'-a'd'- | c''\x\a'-b'd'- | @34 d''\x\ b'-; [\\] c''-b'-a'- | b'._b'-a'-g'- | @36 #f'-d'-g'-; b-c'-a- | G. | [\.\] g'-g'-g'-g'\x\b'-\x\ | @39 f'-f'-f'- [\\] f'b'- | e'-d'-c'-; d'-b-f'- | d'c'-r. | @42 [\.\] g-g-g-g\x\b-\x\ | f-f-f- [\\] fb- | @44 e-d-c-; d-f-b- | dc-r. | @46 [copyzero -6] b'\.\d'-\.\; e'-d'-c'- | b-d'-f'-; e'-c'-g'- | @48 f'-a'-b'-; g'\.\c''-\.\ | b'-a'-g'-\.\f'$a'- | @50 g'-e'-g'-\.\; f'-d'-f'-\.\ | e'-c'-e'-\.\d'\.\f'-\.\ | @52 g-e'-d'-; c'-b-a- | b\.\d'-\.\; f'-f-$a- | @54 *if score [newline] *fi g-g'-f'-; e'-d'-c'- | b-d'-c'-; b-a-g- | @56 f-e-d-; e-d-c- | B`. | @58 [endstave] [stave 2 treble 1] *if score [name "Violin II"/c] *fi [copyzero 8] &f b'\.\d'-\.\; e'-d'-c'- | @1 b-d'-f'-; e'-c'-g'- | f'-a'-b'-; e'-d'-c'- | b.r-r-d'- | @4 [\.\]e'-e'-e'-; e'.\x\ | d'-d'-d'- [\\] d'. | @6 a.bc'- | ba-; r-r-d- | @8 [\.\] e-e-e- e.\x\ | d-d-d- [\\] d. | @10 a`.b`d- | b`a`-; r-r- c'-\.\ | @12 d'-\.\a-b-; %e'-\.\a-b- | f'-\.\a-b-; g'-\.\a-b- | @14 a'-\.\%e'-f'-; fb- | ag-; r-r- g'- | @16 g'-c'-f'-f'%e'- | f'b-c'f- | @18 f.%e. | F. :)| @20 f'\.\a-\.\; b-a-g- | f-a-c'-; b-g-d'- | @22 c'-%e'-f'-; b-a-g- | F. | b'\.\d'-\.\; e'-d'-c'- | @25 b-d'-f'-; e'-c'-g'- | f'-a'-b'-; e'-d'-c'- | @27 b._bb'- | a'-b'-a'-; g'-#f'-g'- | #f'-a'-d'-c'. | @30 bg-e. | d._d#f'-\.\ | @32 [\.\] g'\x\ %e'-#f'd'- | a'\x\d'-d'b- | @34 b'\x\ g'-; [\\] a'-g'-#f'- | g'._g'-%)f'-e'- | @36 d'g-g#f- | G. | [\.\] e'-e'-e'-e'.\x\ | @39 d'-d'-d'- [\\] d'. | a.bd'- |ba-r. | @42 [\.\] e-e-e-e.\x\ | d-d-d- [\\] d. | @44 a`.b`d- | b`a`-r. | @46 [copyzero 5] b'\.\d'-\.\; e'-d'-c'- | b-d'-f'-; e'-c'-g'- | @48 f'-a'-b'-; g'\.\e'-\.\ | c'. r-r-f'- | @50 bg'-; f'-d'-f'-\.\ | e'-c'-e'-\.\d'\.\f'-\.\ | @52 g-e'-d'-; c'-b-a- | b\.\d'-\.\; f'-f-$a- | @54 *if part [newline] *fi g-g'-f'-; e'-d'-c'- | b-d'-c'-; b-a-g- | @56 f-e-d-; e-d-c- | B`. | @58 [endstave] [stave 3 alto 1] *if score [name "Viola"/c] *fi [copyzero -6] &f f.a. | f.a. | bf-; g-f-e- | @3 de-fb- | B. | b`._b`r- | c.f. | fc-f`b`- | @8 B`. | b`._b`f- | c.f`. | f`a`-; c-b`-a`- | B`. | b`._b`g- | @14 c.b`d-\.\ | c%e-; g-f-e- | @16 ac'-db`- | cg-ff- | c.c. | C. :)| @20 c.%e. | c.%e. | fc-d%e- | fa`-b`c- | @24 db-ac'- | f.a. | bf-; g-f-e- | de-; f-e-d- | @28 e.c'. | a._aa- | d.g. | A. | [copyzero -12] D. | @33 #fa-g. | r.r-r-d'- | d'.d'g- | dc'-dd- | @37 d._db`- | B. | b`._b`f- | c.f. | f.r. | @42 B`. | b`._b`f- | c.f`. | f`a`-; c-b`-a`- | @46 [copyzero -12] db-ac'- | f.a. | b.bg- | f.r-r-f- | @50 e.b. | a.bd- | b`-g-f-; e-d-c- | d. r-r- f- | @54 b`.a`e- | d.fb`- | b`.a`. | B`. | @58 [endstave] [stave 4 bass 0] *if score [name "Cello|Bass"/c] *fi &f b`.c. | d.c. | d.ef- | b`c-; d-c-b`- | e._eg- | @5 b._bd- | c.b`. | f`f-; d-c-b`- | e._eg- | b._bd- | @10 c.b`. | ff`-; a`-g`-f`- | b`.c. | d.%e. | f.b. | @15 c'-c-c'-; b-a-g- | a.g. | fg-ab- | c'.c. | F`. :) | @20 f.g. | a.g. | a.bc'- | fe-dc- | b`.c. | d.c. | d.ef- | @27 b`c-; d-c-b`- | c.e. | d._d-%e-#f- | g._gg- | @31 #f-a-g-; f-%e-d- | @32 [copyzero -8] D'. | d-%e-#f-g. | r.r-r-d- | @34 g-g`-a`-b`c- | de-d "C.B."/a/c (d`-d-) | g`d-gf- | @38 e._eg- | b._bd- | c.b`. | f.r. | e._eg- | b._bd- | c.b`. | @45 f`f-; e-d-c- | [copyzero -12] b`.c. | d.c. | d.e. | f.rd- | @50 e.d. | c.b`. | e.f. | b`.rd- | e.f. | g.de- | f.f`. | B`. | @58 [endstave] pmw-5.22/testdist/infiles/Test050000644000222100022210000000655014541067540014652 0ustar ph10ph10@ Sample for Computing in Musicology 1993 @ Philip Hazel, June 1993 draw blip linegapx linegapy moveto 0 linegapx 3 mul lineto linegapx neg linegapy neg lineto 0.3 setlinewidth stroke enddraw draw ped 0 0 moveto "\**163\ "show enddraw draw flutter linegapx neg 1 sub -3.1 moveto "\mf\`````````````````````````" show linegapx neg 4 add 3 moveto "\it\(flutter)"/s3 show enddraw draw star linegapx neg 3 add 0 moveto "\**36\"/s5 show enddraw draw pog 1 stemtop 10 sub moveto 6 4 rlineto 0.2 setlinewidth stroke enddraw draw three 0 -3 moveto "\it\3"/s6/c show enddraw *define sa slur/a0/rr12 *define sa2 slur/a0/lr3/rr12 *define sb slur/b0/rr16/lr4 *define b1 [linegap/=L/draw blip] *define b2 [linegap/=L/w2.5/draw blip] *define b3 [linegap/=L/w100/r4/draw flutter] *define star [linegap/=L/draw star] *define va8 "\it\8va-"/ol/u17/l8/s3/" -| \**159\" Heading 16 "|#2. David Chaitkin" 18 Heading 16 "|Prelude" 70 linelength 480 justify top left right startnotime unfinished startlinespacing 2 0 2 stavespacing 1/0 2/50 systemgap 100 barnumbers line 9 italic bar 27 bracket brace 1-3 bracestyle 1 textsizes 10 12 7 9 7 8 clefsize 0.8 tripletfont 8 italic [stave 1 treble 1 stems up] [slur/a/ll20/ru8] (d''\.!\d''')[&sa/u1 &sa/u14](#f'\.!\#f'') [es es es] Q | @27 {/a r\l16\ [slur/a/u8/ci4 space 4] (#F'\!.\#F'') } (d''\!.\d''') [&sa/u1 &sa/u14](#f'\!.\#f'') [es es es] | @28 Q [space 2] r. [move -5] "\it\s\bi\ff"/s2/b10/l8 "\it\8va - - \**159\"/a/s3 [slur/b/lu2/ru12] [draw pog] (a'-\g\a''-\g\) [space 4 &sa/u14] d''-\sd\ [es es] [space 2] | @29 Rr. [&sa2 &sb/d4] "\it\s\bi\f"/b/s2/u4(d-\sd >/u2\e'-) [es es space 2] | @30 [stems auto] r-; "\it\s\bi\f"/b/s2/l4 [slur/b/ru8] &va8 [move -4] [draw pog] (a'-\g/\a''-\g\) [xslur/a/ru2/rl1/lu1/ci1/cll2] d'' [es &sa/u2] "#"/ol/r8 e'- [es es] "\bi\allarg."/a8 R | @31 R! | @32 "\bi\p"/s2/a/u6 "\bf\A tempo"/a/d2 {/a r "\it\cantabile"/a/s4/u4/r8 [slur/a/lu16/ll8/ru10/ci2] #ce} {/b a#f'g'} | @33 [line/a/u4 linegap/h/w6/draw three] {/a/x e'\su\g#f} [es] {/a eag} [es] [reset] C+ | @34 [endstave] [stave 2 treble 1 stems down rlevel -4] r. q- (g.d'.) q- | @27 [&sb/u2 &sb/u10] (gd') [es es] rr.q- | @28 (g.d'.) q-Q | @29 [endstave] [stave 3 treble 1] Qqq-r-\l-16\ [reset] [line/=L/b/h/ol/ll40/d5/2/d4] q. [slur/a/ll8/ru4/rl2/co30/clu40/cll10/crl15] (#f-b-) r [bass 0] /a/r15/u5 "\it\(\bi\pp\it\)"/b/r4/d8/s2 r [bass 0] &b1 [&sb/d2 &sb/d10] (c`-\!. sd\g`-); [es es] [treble 1] [&sa/d11 &sa/d6] (#f-b-) >/l12 [es es es] r. [slur/b/lu2/ru8] [draw pog] (d'-\g/\d''-\g\) [&sa/u4] #f'- [es es] | @29 r- [bass 0] "\it\m\bi\f"/s2/a/e/l4 b._b- &b2 c' &b1 ($b`-c'-) [reset] Qq. [notes off] ($b`-\ar\e''-\c\) [notes on] | @30 r- [treble 1 slur/b/lu2/ru8] [draw pog] (d'-\g/\d''-\g\)%f' [es slur/a/ru12] &b2 g'-_;g'- "\it\dim.-"/ol/u14/" -" c' &b2 f-_ | @31 f-ed-_{/a &b3 d "#"/ol/l4 "\bi\p"/a/u15 >/a/u13/r10 ga`} [es] [bass 0] >/d16/r16 | @32 &star B+ [el] [reset] {/b/u4 r\l-8\ [line/=L/ol/h/b/d8.5 linegap/w36/l4/draw ped] G`\sd sl-3\}_/bG`\sd sl-3\ | @33 [notes off] ($a`\ar\e''\c\) [notes on reset] (A`+$B+) [reset] &b1 {/x q &b2 q &b2 q} &star Q [el] | [endstave] pmw-5.22/testdist/infiles/Test020000644000222100022210000000273614541067540014651 0ustar ph10ph10@ Example for IMS Handbook of Musical Codes @ PMS input by Philip Hazel, September 1992 Heading "|Mozart: Second trio from Clarinet Quintet" 35 *Define p "\bi\p"/b Magnification 1 Linelength 440 Barnumbers line 9 Bracket 1-5 Time 3/4 Tripletfont 8 italic Key A Startlinespacing 3 0 3 Unfinished [stave 1 "\it\clarinet in A" treble 2] [key C nocount nocheck]&p [slur/co2] c-e- | @0 g-e-c' [endslur][slur] g-e- | @1 d-f-a [endslur][slur] f-d- | @2 c-b`-e-d-g-f- [endslur] | @3 #d_e [slur] c-e- | g-e-c' [endslur][slur] g-e- | @5 %d-f-a [endslur] r | R! | @7 rr [slur/b] {/d8/r2 d`-a``-f``-} | @8 a``- [endslur] [\.\] d`-f`-a`-d-f- [\\] | @9 [slur] a-g-f-e-\.\f-\.\d- [endslur] | @10 [slur] Ce-d- [endslur] | cr :)(: r | @12 [endstave] [stave 2 "\it\violino I" treble 1] [nocheck] r | r &p aa | raa | rgg | [2] raa | @5 fr [slur] c'-#a- | b-d'-f' [endslur][slur] c'-#a- | @7 b-d'-f' [endslur] r | [2] R! | @10 [slur/b] c-e-c-e-d-e- [endslur] | @11 cr :)(: [slur] e-g- | @12 [endstave] [stave 3 "\it\violino II" treble 1] [nocheck] r | r &p ee | rff | rdd | rcc | ree | @5 dr [slur/b] %g | F%g | F [endslur] r | [2] R! | @10 A`_#g` | a`r :)(: r | @12 [endstave] [stave 4 "\it\viola" alto 1] [nocheck] r | r &p cc | [2] rb`b` | ra`a` | rcc | @5 b`r [slur] e | De | D [endslur] r | [2] R! | @10 E`._ | e`r :)(: r | @12 [endstave] [stave 5 "\it\violoncello" bass 0] [nocheck] r | &p arr | drr | err | frr | crr | @5 drr | [4] R! | [slur/b] e`\.\e`\.\e`\.\ [endslur] | @11 a`r :)(: r | @12 [endstave] pmw-5.22/testdist/infiles/Test080000644000222100022210000000030414541067540014644 0ustar ph10ph10@ This file contains miscellaneous tests that are not actual pieces. @ The first test used to work on 32-bit systems but not on 64-bit ones. [stave 1 treble 1] (E`+\ard f\ A`+ C+ E+) [endstave] pmw-5.22/testdist/outfiles/0000755000222100022210000000000014541067540014036 5ustar ph10ph10pmw-5.22/testdist/outfiles/Test02.ps0000644000222100022210000002531214541067540015466 0ustar ph10ph10%%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol %%+ font PMW-Music %%Requirements: numcopies(1) %%EndComments %%BeginPaperSize: a4 a4 %%EndPaperSize %%BeginProlog %%Standard Header Omitted (testing) %%EndProlog %%BeginSetup %%IncludeResource: font Times-Roman /rm /rmX /Times-Roman inf %%IncludeResource: font Times-Italic /it /itX /Times-Italic inf %%IncludeResource: font Times-Bold /bf /bfX /Times-Bold inf %%IncludeResource: font Times-BoldItalic /bi /biX /Times-BoldItalic inf %%IncludeResource: font Symbol /sy /syX /Symbol inf %%IncludeResource: font PMW-Music /mf /mfX /PMW-Music inf %%EndSetup %%Page: 1 1 %%BeginPageSetup /pagesave save def %%EndPageSetup rm 17 ss(Mozart: Second trio from Clarinet Quintet)160.222 760 s it 10 ss(clarinet in )84 712 s(A)-0.18 0 rs mf 10 ss(!)142.82 708 s bf 11.8 ss(3)176.82 716 s(4)176.82 708.15 s it 10 ss(violino I)84 668 s mf 10 ss(!)142.82 664 s(%)158.82 678 s(%)163.82 672 s(%)168.82 680 s bf 11.8 ss(3)176.82 672 s(4)176.82 664.15 s it 10 ss(violino II)84 624 s mf 10 ss(!)142.82 620 s(%)158.82 634 s(%)163.82 628 s(%)168.82 636 s bf 11.8 ss(3)176.82 628 s(4)176.82 620.15 s it 10 ss(viola)84 580 s mf 10 ss(#)142.82 576 s(%)158.82 588 s(%)163.82 582 s(%)168.82 590 s bf 11.8 ss(3)176.82 584 s(4)176.82 576.15 s it 10 ss(violoncello) 84 536 s mf 10 ss(")142.32 532 s(%)158.82 542 s(%)163.82 536 s(%) 168.82 544 s bf 11.8 ss(3)176.82 540 s(4)176.82 532.15 s mf 10 ss 16 532(@)139.82 708 b 136.32 724 532 k %0/5 (-)191.72 536 s(@)216.826 532 s %0/4 (-)191.72 580 s 16 548(@)216.826 576 b %0/3 (-)191.72 624 s 16 592(@)216.826 620 b %0/2 (-)191.72 668 s 16 636(@)216.826 664 b %0/1 1.877 204.923 707.995 191.47 704 m bi 10 ss(p)190.72 694 s mf 10 ss(6) 190.72 716 s(K)203.773 719.876 s(KL)203.773 720 s 16 680(@)216.826 708 b %1/5 bi 10 ss(p)223.352 522 s mf 10 ss(6)223.352 546 s(-)250.458 536 s(-) 267.862 536 s(@)292.968 532 s %1/4 (-)224.352 580 s bi 10 ss(p)249.458 566 s mf 10 ss(5)249.458 582 s(5) 266.862 582 s 16 548(@)292.968 576 b %1/3 (-)224.352 624 s bi 10 ss(p)249.458 608 s mf 10 ss(5)249.458 618 s(5) 266.862 618 s 16 592(@)292.968 620 b %1/2 (-)224.352 668 s bi 10 ss(p)249.458 654 s mf 10 ss(5)249.458 668 s(5) 266.862 668 s 16 636(@)292.968 664 b %1/1 1.877 237.555 707.881 224.102 711.876 m(K)223.352 723.876 s(KL) 223.352 724 s(6)236.405 720 s(=)249.458 726 s(=)249.458 730 s(K) 249.458 728 s(KL)249.458 730 s 193.72 722 252.458 736 8 cv 1.877 281.065 707.881 267.612 711.876 m(K)266.862 723.876 s(KL) 266.862 724 s(6)279.915 720 s 16 680(@)292.968 708 b %2/5 (6)299.494 538 s(-)326.6 536 s(-)344.004 536 s(@)369.11 532 s %2/4 (-)300.494 580 s(5)325.6 580 s(5)343.004 580 s 16 548(@)369.11 576 b %2/3 (-)300.494 624 s(5)325.6 620 s(5)343.004 620 s 16 592(@)369.11 620 b %2/2 (-)300.494 668 s(5)325.6 668 s(5)343.004 668 s 16 636(@)369.11 664 b %2/1 1.877 313.697 709.995 300.244 706 m(6)299.494 718 s(K)312.547 721.876 s(KL) 312.547 722 s(=)325.6 726 s(6)325.6 726 s 269.862 730 328.6 732 6 cv 1.877 357.207 705.881 343.754 709.876 m(K)343.004 721.876 s(KL) 343.004 722 s(6)356.057 718 s 16 680(@)369.11 708 b %3/5 (6)375.636 540 s(-)402.742 536 s(-)428.848 536 s(@)453.954 532 s %3/4 (-)376.636 580 s(5)401.742 580 s(5)427.848 580 s 16 548(@)453.954 576 b %3/3 (-)376.636 624 s(5)401.742 616 s(5)427.848 616 s 16 592(@)453.954 620 b %3/2 (-)376.636 668 s(5)401.742 666 s(5)427.848 666 s 16 636(@)453.954 664 b %3/1 1.8 442.051 702 376.386 702 m(K)375.636 714 s(KL)375.636 716 s(6) 388.689 714 s(K)401.742 714 s(KL)401.742 720 s(K)414.795 714 s(KL) 414.795 718 s(K)427.848 714 s(K)427.848 724 s(L)427.848 724 s(K) 440.901 714 s(KL)440.901 722 s 346.004 728 443.901 728 8 cv 16 680(@)453.954 708 b %4/5 (6)463.08 542 s(-)481.485 536 s(-)498.89 536 s(@)523.996 532 s %4/4 (-)464.08 580 s(5)480.485 578 s(5)497.89 578 s 16 548(@)523.996 576 b %4/3 (-)464.08 624 s(=)480.485 614 s(5)480.485 614 s(=)497.89 614 s(5) 497.89 614 s 16 592(@)523.996 620 b %4/2 (-)464.08 668 s(5)480.485 668 s(5)497.89 668 s 16 636(@)523.996 664 b %4/1 (%)458.08 718 s(6)463.08 718 s(6)480.485 720 s 466.08 725 483.485 726 4.221 cv 1.877 512.093 707.995 498.64 704 m(6)497.89 716 s(K) 510.943 719.876 s(KL)510.943 720 s 500.89 722 523.996 725 6 cv 16 680(@)523.996 708 b (FFFCCCCCCCC)139.82 708 s (C)513.996 708 s (FFFCCCCCCCC)139.82 664 s (C)513.996 664 s (FFFCCCCCCCC)139.82 620 s (C)513.996 620 s (FFFCCCCCCCC)139.82 576 s (C)513.996 576 s (FFFCCCCCCCC)139.82 532 s (C)513.996 532 s (!)87 467 s(!)87 423 s(%)103 437 s(%)108 431 s(%)113 439 s(!)87 379 s(%) 103 393 s(%)108 387 s(%)113 395 s(#)87 335 s(%)103 347 s(%)108 341 s(%) 113 349 s(")86.5 291 s(%)103 301 s(%)108 295 s(%)113 303 s 16 291(@)84 467 b 80.5 483 291 k %5/5 (5)126 295 s(-)153.409 295 s(-)171.016 295 s(@)196.426 291 s %5/4 (-)127 339 s(5)152.409 341 s(5)170.016 341 s 16 307(@)196.426 335 b %5/3 (-)127 383 s(5)152.409 377 s(5)170.016 377 s 16 351(@)196.426 379 b %5/2 (-)127 427 s(5)152.409 427 s(5)170.016 427 s 16 395(@)196.426 423 b %5/1 1.876 140.354 466.882 126.75 470.881 m(K)126 482.881 s(KL)126 483 s(6) 139.204 479 s(=)152.409 485 s(=)152.409 489 s(K)152.409 487 s(KL) 152.409 489 s 118.5 489 155.409 495 6 cv 1.876 184.371 466.883 170.766 470.882 m(K)170.016 482.882 s(KL) 170.016 483 s(6)183.221 479 s 16 439(@)196.426 467 b rm 9 ss(5)84 491 s %6/5 mf 10 ss(5)204.877 297 s(-)232.296 295 s(-)249.902 295 s(@)275.312 291 s %6/4 (5)204.877 339 s(-)232.296 339 s(6)248.902 345 s 16 307(@)275.312 335 b %6/3 (5)204.877 375 s(-)232.296 383 s(\()244.652 381 s(5)248.902 381 s 16 351(@)275.312 379 b %6/2 (5)204.877 423 s(-)232.296 427 s 1.876 263.257 414.883 249.652 418.882 m(K) 248.902 430.882 s(KL)248.902 431 s(%)257.107 427 s(6)262.107 427 s 16 395(@)275.312 423 b %6/1 1.875 219.241 468.988 205.627 465 m(\()200.627 477 s(6)204.877 477 s(K) 218.091 480.871 s(KL)218.091 481 s(=)231.296 485 s(6)231.296 485 s 173.016 489 234.296 491 6 cv(-)249.902 471 s 16 439(@)275.312 467 b %7/5 (+)310.825 299 s(@)352.339 291 s %7/4 (4)281.913 343 s(6)325.929 345 s 16 307(@)352.339 335 b %7/3 (3)281.913 379 s(\()321.254 381 s(5)325.929 381 s 16 351(@)352.339 379 b %7/2 1.876 296.267 420.999 282.663 417 m(6)281.913 429 s(K)295.117 432.881 s(KL) 295.117 433 s(6)308.322 437 s 251.902 437 311.322 443 6 cv 1.876 340.284 414.883 326.679 418.882 m(K)325.929 430.882 s(KL) 325.929 431 s(%)334.134 427 s(6)339.134 427 s 16 395(@)352.339 423 b %7/1 (+)310.825 475 s 16 439(@)352.339 467 b %8/5 (+)392.252 299 s(@)438.165 291 s %8/4 (4)358.94 343 s 251.902 352 361.94 349 8 cv(-)403.956 339 s 16 307(@)438.165 335 b %8/3 (3)358.94 379 s 251.902 378 361.94 377 -8 cv(-)403.956 383 s 16 351(@)438.165 379 b %8/2 1.876 373.294 420.999 359.69 417 m(6)358.94 429 s(K)372.144 432.881 s(KL) 372.144 433 s(6)385.349 437 s 328.929 437 388.349 443 6 cv(-) 403.956 427 s 16 395(@)438.165 423 b %8/1 (-)359.94 471 s(-)386.349 471 s -1.894 432.678 471.147 408.806 479 m(5) 402.956 463 s(=)414.692 461 s(=)414.692 457 s(J)414.692 459.139 s(JL) 414.692 457 s(=)426.428 461 s(=)426.428 457 s(=)426.428 453 s(J) 426.428 455.278 s(JL)426.428 453 s it 8 ss(3)419.792 477 s mf 10 ss 16 439(@)438.165 467 b %9/5 (+)478.08 299 s(@)523.995 291 s %9/4 (+)478.08 343 s 16 307(@)523.995 335 b %9/3 (+)478.08 387 s 16 351(@)523.995 379 b %9/2 (+)478.08 431 s 16 395(@)523.995 423 b %9/1 -1.894 517.04 497.476 450.616 475.623 m(=)444.766 461 s(=)444.766 457 s(J) 444.766 459.623 s(JL)444.766 457 s 405.956 459 447.766 455 -11 cv(J) 457.97 463.967 s(JL)457.97 463 s(>)457.97 455 s(J)471.175 468.311 s(JL) 471.175 467 s(>)471.175 459 s(J)484.38 472.656 s(JL)484.38 471 s(>) 484.38 463 s(5)497.585 477 s(>)497.585 467 s(J)510.79 481.344 s(JL) 510.79 481 s(>)510.79 471 s 16 439(@)523.995 467 b (FFFFCCC)84 467 s (C)513.995 467 s (FFFFCCC)84 423 s (C)513.995 423 s (FFFFCCC)84 379 s (C)513.995 379 s (FFFFCCC)84 335 s (C)513.995 335 s (FFFFCCC)84 291 s (C)513.995 291 s (!)87 226 s(!)87 182 s(%)103 196 s(%)108 190 s(%)113 198 s(!)87 138 s(%) 103 152 s(%)108 146 s(%)113 154 s(#)87 94 s(%)103 106 s(%)108 100 s(%) 113 108 s(")86.5 50 s(%)103 60 s(%)108 54 s(%)113 62 s 16 50(@)84 226 b 80.5 242 50 k %10/5 (+)183.224 58 s(@)254.449 50 s %10/4 (+)183.224 102 s 16 66(@)254.449 94 b %10/3 (+)183.224 146 s 16 110(@)254.449 138 b %10/2 (+)183.224 190 s 16 154(@)254.449 182 b %10/1 1.804 234.191 222.802 126.75 230.752 m(=)126 244 s(K)126 242.752 s(KL) 126 244 s(K)147.408 241.168 s(KL)147.408 242 s(K)168.816 239.584 s(KL) 168.816 240 s(6)190.224 238 s(>)190.224 238 s(K)211.633 236.416 s(KL) 211.633 240 s(>)211.633 240 s(K)233.041 234.831 s(KL)233.041 236 s 129 250 236.041 243 8 cv 16 198(@)254.449 226 b rm 9 ss(10)84 250 s %11/5 mf 10 ss(=)265.153 44 s(5)265.153 44 s(>)265.153 36 s(=)307.969 44 s(5) 307.969 44 s(>)307.969 36 s(=)350.786 44 s(5)350.786 44 s(>)350.786 36 s 268.153 39 353.786 39 -8 cv(@)393.602 50 s %11/4 (3)265.153 90 s(?)273.553 90 s 16 66(@)393.602 94 b %11/3 (=)265.153 132 s(=)265.153 128 s(J)265.153 130 s(JM)265.153 128 s(%) 345.786 126 s(=)350.786 132 s(=)350.786 128 s(J)350.786 130 s(JL) 350.786 126 s 268.153 126 353.786 121 -5 cv 16 110(@)393.602 138 b %11/2 -1.8 378.444 196 271.003 196 m(=)265.153 176 s(J)265.153 180 s(JL) 265.153 176 s(5)286.561 180 s(=)307.969 176 s(J)307.969 180 s(JL) 307.969 176 s(5)329.377 180 s(J)350.786 180 s(JL)350.786 178 s(5) 372.194 180 s 268.153 174 375.194 178 -8 cv 16 154(@)393.602 182 b %11/1 (4)265.153 234 s 1.807 373.344 223.964 351.536 225.948 m(K) 350.786 237.948 s(KL)350.786 238 s(6)372.194 236 s 268.153 240 375.194 243 8 cv 16 198(@)393.602 226 b %12/5 (5)404.306 50 s(-)433.85 54 s(B)466.738 50 s(@)464.838 50 s(I) 462.338 54 s(B)466.738 50 s(@)470.238 50 s(I)471.838 54 s(-)482.181 54 s (@)523.998 50 s %12/4 (5)404.306 90 s 268.153 88 407.306 88 -5 cv(-)433.85 98 s 16 66(B)466.738 94 b 16 66(@)464.838 94 b(I)462.338 98 s 16 66(B)466.738 94 b 16 66(@)470.238 94 b(I)471.838 98 s(-)482.181 98 s 16 66(@)523.998 94 b %12/3 (=)404.306 132 s(=)404.306 128 s(J)404.306 130 s(JL)404.306 128 s(-) 433.85 142 s 16 110(B)466.738 138 b 16 110(@)464.838 138 b(I) 462.338 142 s 16 110(B)466.738 138 b 16 110(@)470.238 138 b(I) 471.838 142 s(-)482.181 142 s 16 110(@)523.998 138 b %12/2 (=)404.306 176 s(5)404.306 176 s(-)433.85 186 s 16 154(B)466.738 182 b 16 154(@)464.838 182 b(I)462.338 186 s 16 154(B)466.738 182 b 16 154(@)470.238 182 b(I)471.838 186 s -1.829 508.839 200.073 487.031 196.083 m(J)481.181 180.083 s(JL) 481.181 180 s(5)502.589 184 s 489.181 198.083 523.998 201 6 cv 16 154(@)523.998 182 b %12/1 (6)404.306 234 s(-)433.85 230 s 16 198(B)466.738 226 b 16 198(@)464.838 226 b(I)462.338 230 s 16 198(B)466.738 226 b 16 198(@)470.238 226 b(I)471.838 230 s(-)482.181 230 s 16 198(@)523.998 226 b (FFFFCCC)84 226 s (C)513.998 226 s (FFFFCCC)84 182 s (C)513.998 182 s (FFFFCCC)84 138 s (C)513.998 138 s (FFFFCCC)84 94 s (C)513.998 94 s (FFFFCCC)84 50 s (C)513.998 50 s pagesave restore showpage %%Trailer %%Pages: 1 pmw-5.22/testdist/outfiles/Test07.ps0000644000222100022210000000412214541067540015467 0ustar ph10ph10%%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol %%+ font PMW-Music Helvetica %%Requirements: numcopies(1) %%EndComments %%BeginPaperSize: a4 a4 %%EndPaperSize %%BeginProlog %%Standard Header Omitted (testing) %%EndProlog %%BeginSetup %%IncludeResource: font Times-Roman /rm /rmX /Times-Roman inf %%IncludeResource: font Times-Italic /it /itX /Times-Italic inf %%IncludeResource: font Times-Bold /bf /bfX /Times-Bold inf %%IncludeResource: font Times-BoldItalic /bi /biX /Times-BoldItalic inf %%IncludeResource: font Symbol /sy /syX /Symbol inf %%IncludeResource: font PMW-Music /mf /mfX /PMW-Music inf %%IncludeResource: font Helvetica /xx8 /xx8X /Helvetica inf %%EndSetup %%Page: 1 1 %%BeginPageSetup /pagesave save def %%EndPageSetup rm 14 ss(F)193.015 760 s(anc)-0.21 0 rs(y font and character demonstration) -0.21 0 rs rm 10 ss(T)64 744 s(en point stretched 1.0)-0.7 0 rs rm [7.999 0 0 10 0 0] sm(T)64 734 s(en point stretched 0.8)-0.559 0 rs rm [15 0 0 10 0 0] sm(T)64 724 s(en point stretched 1.5)-1.05 0 rs rm [10 0 3.639 10 0 0] sm(T)64 714 s(en pointSheared 20)-0.7 0 rs rm 14 ss(Dv)64 684 s (o)-0.28 0 rs rmX 14 ss (Y)sh rm 14 ss (\341k, Gli\350re, F)sh(aur\351, Lopes Gra\347a, v)-0.21 0 rs (on Preu\337en, Back)-0.28 0 rs(er Gr\370ndahl)-0.14 0 rs (Bullet \267 and dagger )64 664 s rmX 14 ss(\210)sh rm 14 ss ( and lozenge )sh rmX 14 ss(\227)sh rm 14 ss( )sh xx8 14 ss (and another typef)266.79 664 s(ace)-0.42 0 rs bf 12 ss (The f)64 624 s (ollo)-0.3 0 rs(wing can appear only on sta)-0.12 0 rs (v)-0.3 0 rs(es )-0.12 0 rs bfX 12 ss(\215)sh bf 12 ss ( this sta)sh(v)-0.3 0 rs(e is in)-0.12 0 rs(visible!)-0.48 0 rs rm [0 10 -10 0 0 0] sm(V)64 569.45 s(ertical)0 -1.11 rs %1/1 it [9.899 9.899 -9.899 9.899 0 0] sm(Rotated)81 567 s it [9.899 -9.899 9.899 9.899 0 0] sm(Rotated)115 595 s it 10 ss(squar) 169 597 s(e)-0.37 0 rs it [0 -10 10 0 0 0] sm(squar)195.85 597 s(e) 0 0.37 rs it [-10 0 0 -10 0 0] sm(squar)195.85 570.15 s(e)0.37 0 rs it [0 10 -10 0 0 0] sm(squar)169 570.15 s(e)0 -0.37 rs pagesave restore showpage %%Trailer %%Pages: 1 pmw-5.22/testdist/outfiles/Test01.ps0000644000222100022210000005434414541067540015474 0ustar ph10ph10%%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol %%+ font PMW-Music %%Requirements: numcopies(1) %%EndComments %%BeginPaperSize: a4 a4 %%EndPaperSize %%BeginProlog %%Standard Header Omitted (testing) %%EndProlog %%BeginSetup %%IncludeResource: font Times-Roman /rm /rmX /Times-Roman inf %%IncludeResource: font Times-Italic /it /itX /Times-Italic inf %%IncludeResource: font Times-Bold /bf /bfX /Times-Bold inf %%IncludeResource: font Times-BoldItalic /bi /biX /Times-BoldItalic inf %%IncludeResource: font Symbol /sy /syX /Symbol inf %%IncludeResource: font PMW-Music /mf /mfX /PMW-Music inf %%EndSetup %%Page: 1 1 %%BeginPageSetup /pagesave save def %%EndPageSetup rm 17 ss(Credo)283.226 760 s mf 10 ss(!)58 726 s bf 11.8 ss(3)78 734 s(4) 78 726.15 s mf 10 ss(")57.5 682 s bf 11.8 ss(3)78 690 s(4)78 682.15 s mf 10 ss 16 682(@)54 726 b 0.115 47 712 br2 %1/7 -1.831 129.506 696.03 97.75 702 m -1.831 129.506 693.03 114.853 695.785 m(5)91.9 686 s(J)109.003 682.785 s (JL)109.003 680 s(J)123.256 680.106 s(JL)123.256 680 s -1.831 175.117 696.03 143.36 702 m -1.831 175.117 693.03 160.463 695.785 m(5)137.51 686 s(J) 154.613 682.785 s(JL)154.613 680 s(J)168.867 680.105 s(JL)168.867 680 s -1.831 220.727 696.03 188.97 702 m -1.831 220.727 693.03 206.073 695.785 m(5)183.12 686 s(J) 200.223 682.785 s(JL)200.223 680 s(J)214.477 680.105 s(JL)214.477 680 s (@)228.73 682 s %1/6 -1.831 129.506 730.03 97.75 736 m -1.831 129.506 727.03 114.853 729.785 m rm 10 ss(Alle)77.9 748 s (gro Maestoso)-0.15 0 rs bi 10 ss(f)91.9 710 s mf 10 ss(=)91.9 720 s(5) 91.9 720 s(=)109.003 720 s(=)109.003 716 s(J)109.003 716.785 s(JL) 109.003 714 s(=)123.256 720 s(=)123.256 716 s(J)123.256 714.106 s(JL) 123.256 714 s -1.831 175.117 730.03 143.36 736 m -1.831 175.117 727.03 160.463 729.785 m(=)137.51 720 s(5)137.51 720 s(=) 154.613 720 s(=)154.613 716 s(J)154.613 716.785 s(JL)154.613 714 s(=) 168.867 720 s(=)168.867 716 s(J)168.867 714.105 s(JL)168.867 714 s -1.831 220.727 730.03 188.97 736 m -1.831 220.727 727.03 206.073 729.785 m(=)183.12 720 s(5)183.12 720 s(=) 200.223 720 s(=)200.223 716 s(J)200.223 716.785 s(JL)200.223 714 s(=) 214.477 720 s(=)214.477 716 s(J)214.477 714.105 s(JL)214.477 714 s 16 698(@)228.73 726 b %2/7 1.83 281.838 680.711 238.679 672.727 m 1.83 281.838 683.711 267.185 681 m(K)237.929 684.727 s(KL)237.929 686 s(6) 266.435 690 s(=)266.435 700 s(6)266.435 700 s(K)280.688 692.637 s(KL) 280.688 694 s(=)280.688 700 s(K)280.688 700.637 s(KL)280.688 702 s 1.8 324.598 688 295.692 688 m(=)294.942 700 s(6)294.942 700 s(=) 294.942 700 s(=)294.942 704 s(6)294.942 704 s(=)323.448 700 s(6) 323.448 700 s(=)323.448 700 s(=)323.448 704 s(6)323.448 704 s 1.8 381.612 682 352.705 682 m(6)351.955 694 s(=)351.955 700 s(6) 351.955 702 s(6)380.462 694 s(=)380.462 700 s(6)380.462 702 s (@)408.968 682 s %2/6 1.8 281.838 720 238.679 720 m 1.8 281.838 723 238.679 723 m(K) 237.929 732 s(KL)237.929 734 s(K)237.929 736 s(KL)237.929 738 s(6) 252.182 732 s(6)252.182 736 s(K)266.435 732 s(KL)266.435 734 s(6) 280.688 732 s(6)280.688 736 s 1.8 338.852 720 295.692 720 m 1.8 338.852 723 295.692 723 m(K)294.942 732 s(KL)294.942 734 s(K) 294.942 736 s(KL)294.942 738 s(6)309.195 732 s(6)309.195 736 s(K) 323.448 732 s(KL)323.448 734 s(K)323.448 736 s(KL)323.448 738 s(K) 337.702 732 s(KL)337.702 736 s(K)337.702 736 s(KL)337.702 740 s 1.8 395.865 720 352.705 720 m 1.8 395.865 723 352.705 723 m(6) 351.955 732 s(6)351.955 742 s(K)366.208 732 s(KL)366.208 734 s(=) 366.208 744 s(K)366.208 742 s(KL)366.208 744 s(K)380.462 732 s(KL) 380.462 736 s(K)380.462 736 s(KL)380.462 740 s(6)394.715 732 s(6) 394.715 742 s 16 698(@)408.968 726 b %3/7 (=)418.167 700 s(8)418.167 700 s -1.8 454.774 696 440.121 696 m -1.8 454.774 693 440.121 693 m(5)434.271 680 s(5)448.524 680 s -1.831 500.384 696.03 468.627 702 m -1.831 500.384 693.03 485.731 695.785 m(5)462.777 686 s(J) 479.881 682.785 s(JL)479.881 680 s(J)494.134 680.105 s(JL)494.134 680 s -1.831 545.994 696.03 514.237 702 m -1.831 545.994 693.03 531.341 695.785 m(5)508.387 686 s(J) 525.491 682.785 s(JL)525.491 680 s(J)539.744 680.105 s(JL)539.744 680 s (@)553.998 682 s %3/6 (8)418.167 734 s(6)418.167 738 s -1.8 454.774 734 440.121 734 m -1.8 454.774 731 440.121 731 m(=)434.271 720 s(=)434.271 716 s(J) 434.271 718 s(JL)434.271 714 s(=)448.524 720 s(=)448.524 716 s(J) 448.524 718 s(JL)448.524 714 s -1.831 500.384 730.03 468.627 736 m -1.831 500.384 727.03 485.731 729.785 m(=)462.777 720 s(5)462.777 720 s(=) 479.881 720 s(=)479.881 716 s(J)479.881 716.785 s(JL)479.881 714 s(=) 494.134 720 s(=)494.134 716 s(J)494.134 714.105 s(JL)494.134 714 s -1.831 545.994 730.03 514.237 736 m -1.831 545.994 727.03 531.341 729.785 m(=)508.387 720 s(5)508.387 720 s(=) 525.491 720 s(=)525.491 716 s(J)525.491 716.785 s(JL)525.491 714 s(=) 539.744 720 s(=)539.744 716 s(J)539.744 714.105 s(JL)539.744 714 s 16 698(@)553.998 726 b (FFFFCCCCCCCCC)54 726 s (C)543.998 726 s (FFFFCCCCCCCCC)54 682 s (C)543.998 682 s (!)58 623 s(")57.5 579 s 16 579(@)54 623 b 0.115 47 609 br2 %4/7 -1.8 115.305 599 87.85 599 m(5)82 583 s(5)109.055 583 s 1.842 164.317 578.913 136.861 584.898 m(=)136.111 597 s(K) 136.111 596.898 s(KL)136.111 597 s(6)163.167 591 s 1.818 218.428 570.942 190.972 574.923 m(K)190.222 586.923 s(KL) 190.222 587 s(6)217.278 583 s(@)244.334 579 s %4/6 1.8 123.733 617 82.75 617 m 1.8 123.733 620 82.75 620 m(K)82 629 s(KL) 82 631 s(K)82 633 s(KL)82 635 s(6)95.527 629 s(6)95.527 633 s(K) 109.055 629 s(KL)109.055 631 s(K)109.055 633 s(KL)109.055 635 s(K) 122.583 629 s(KL)122.583 633 s(K)122.583 633 s(KL)122.583 637 s 1.8 177.845 619 136.861 619 m 1.8 177.845 622 136.861 622 m(K) 136.111 631 s(KL)136.111 635 s(K)136.111 635 s(KL)136.111 639 s(K) 149.639 631 s(KL)149.639 633 s(K)149.639 635 s(KL)149.639 637 s(6) 163.167 631 s(6)163.167 635 s(K)176.695 631 s(KL)176.695 633 s(K) 176.695 635 s(KL)176.695 637 s 1.8 231.956 623 190.972 623 m 1.8 231.956 626 190.972 626 m(6)190.222 635 s(6)190.222 639 s(K) 203.75 635 s(KL)203.75 637 s(=)203.75 641 s(K)203.75 639 s(KL) 203.75 641 s(K)217.278 635 s(KL)217.278 639 s(')212.778 643 s(=) 217.278 641 s(K)217.278 639 s(KL)217.278 643 s(6)230.806 635 s(6) 230.806 639 s 16 595(@)244.334 623 b rm 10 ss(4)54 647 s %5/7 1.8 283.976 571 253.815 571 m 1.8 283.976 574 270.048 574 m mf 10 ss(K) 253.065 583 s(KL)253.065 589 s(6)269.298 583 s(6)282.826 583 s 1.8 327.266 571 297.104 571 m 1.8 327.266 574 313.338 574 m(K) 296.354 583 s(KL)296.354 589 s(6)312.588 583 s(6)326.116 583 s 1.8 370.555 571 340.394 571 m 1.8 370.555 574 356.627 574 m(K) 339.644 583 s(KL)339.644 589 s(6)355.877 583 s(6)369.405 583 s (@)382.933 579 s %5/6 (=)253.065 641 s(7)253.065 641 s(5)253.065 637 s 1.8 283.976 605 253.815 605 m 1.8 283.976 608 270.048 608 m(K) 253.065 617 s(KL)253.065 623 s(=)269.298 617 s(6)269.298 617 s(=) 282.826 617 s(6)282.826 617 s -1.834 332.366 633.028 302.204 639 m -1.834 332.366 630.028 318.438 632.786 m(5)296.354 623 s(=)312.588 617 s(J) 312.588 619.786 s(JL)312.588 617 s(=)326.116 617 s(J)326.116 617.108 s(JL) 326.116 617 s -1.834 375.655 633.029 345.494 639 m -1.834 375.655 630.029 361.727 632.786 m(5)339.644 623 s(=)355.877 617 s(J) 355.877 619.786 s(JL)355.877 617 s(=)369.405 617 s(J)369.405 617.108 s(JL) 369.405 617 s 16 595(@)382.933 623 b %6/7 -1.884 424.969 596.489 397.514 605 m(5)391.664 589 s(J)418.719 580.613 s (JL)418.719 575 s 1.804 473.981 578.976 446.525 577 m(6)445.775 589 s(K) 472.831 590.948 s(KL)472.831 591 s 1.818 528.092 576.942 500.636 580.923 m(K)499.886 592.923 s(KL) 499.886 593 s(6)526.942 589 s(@)553.998 579 s %6/6 1.8 433.397 625 392.414 625 m 1.8 433.397 628 392.414 628 m(6) 391.664 637 s(=)391.664 641 s(6)391.664 641 s(K)405.191 637 s(KL) 405.191 639 s(')400.691 643 s(=)405.191 641 s(K)405.191 641 s(KL) 405.191 643 s(=)418.719 641 s(K)418.719 637 s(KL)418.719 641 s(=) 418.719 641 s(=)418.719 645 s(K)418.719 641 s(KL)418.719 645 s(K) 432.247 637 s(KL)432.247 639 s(=)432.247 641 s(K)432.247 641 s(KL) 432.247 643 s 1.8 487.509 623 446.525 623 m 1.8 487.509 626 446.525 626 m(K)445.775 635 s(KL)445.775 637 s(=) 445.775 641 s(K)445.775 639 s(KL)445.775 641 s(K)459.303 635 s(KL) 459.303 639 s(=)459.303 641 s(K)459.303 639 s(KL)459.303 643 s(6) 472.831 635 s(6)472.831 639 s(K)486.359 635 s(KL)486.359 637 s(=) 486.359 641 s(K)486.359 639 s(KL)486.359 641 s 1.8 541.62 619 500.636 619 m 1.8 541.62 622 500.636 622 m(K) 499.886 631 s(KL)499.886 633 s(K)499.886 635 s(KL)499.886 637 s(K) 513.414 631 s(KL)513.414 635 s(K)513.414 635 s(KL)513.414 639 s(6) 526.942 631 s(6)526.942 635 s(K)540.47 631 s(KL)540.47 633 s(K) 540.47 635 s(KL)540.47 637 s 16 595(@)553.998 623 b (FFFFCCCCCCCCC)54 623 s (C)543.998 623 s (FFFFCCCCCCCCC)54 579 s (C)543.998 579 s (!)58 520 s(")57.5 476 s 16 476(@)54 520 b 0.115 47 506 br2 %7/7 1.8 119.633 470 87.6 470 m 1.8 119.633 473 104.88 473 m(K)86.85 482 s(KL) 86.85 488 s(6)104.13 482 s(6)118.483 482 s 1.8 165.562 470 133.585 470 m 1.8 165.562 473 150.809 473 m(K)132.835 482 s(KL)132.835 488 s(6) 150.059 482 s(6)164.412 482 s 1.8 211.491 470 179.514 470 m 1.8 211.491 473 196.738 473 m(K)178.764 482 s(KL)178.764 488 s(6) 195.988 482 s(6)210.341 482 s(@)224.694 476 s %7/6 -1.894 124.733 535.462 92.7 546 m -1.894 124.733 532.462 109.98 537.315 m(5)86.85 530 s(\()82.6 526 s(5) 86.85 526 s(J)104.13 524.315 s(JL)104.13 516 s(J)118.483 519.593 s(JL) 118.483 516 s -1.831 170.662 532.021 138.685 538 m -1.831 170.662 529.021 155.909 531.78 m(5)132.835 522 s(J) 150.059 518.78 s(JL)150.059 516 s(J)164.412 516.096 s(JL)164.412 516 s -1.831 216.591 532.021 184.614 538 m -1.831 216.591 529.021 201.838 531.78 m(5)178.764 522 s(J) 195.988 518.78 s(JL)195.988 516 s(J)210.341 516.096 s(JL)210.341 516 s 16 492(@)224.694 520 b rm 10 ss(7)54 544 s %8/7 1.8 264.571 476 235.457 476 m mf 10 ss(6)234.707 488 s(6)263.421 488 s 1.837 321.981 475.995 292.876 470 m(6)292.126 482 s(K)320.831 487.913 s(KL) 320.831 488 s -1.816 384.492 498.055 355.387 494.068 m(J) 349.537 478.068 s(JL)349.537 478 s(5)378.242 482 s(@)406.947 476 s %8/6 -1.801 284.023 544.018 240.557 542.019 m -1.801 284.023 541.018 240.557 539.019 m(\()230.457 526 s(J) 234.707 526.019 s(JL)234.707 526 s(J)234.707 522.019 s(JL)234.707 522 s(J) 249.068 526.679 s(JL)249.068 524 s(%)244.068 520 s(J)249.068 522.679 s(JL) 249.068 520 s(J)263.421 527.339 s(JL)263.421 526 s(J)263.421 523.339 s(JL) 263.421 522 s(5)277.773 528 s(5)277.773 524 s 1.8 336.334 512 292.876 512 m 1.8 336.334 515 292.876 515 m(K) 292.126 524 s(KL)292.126 526 s(K)292.126 528 s(KL)292.126 530 s(6) 306.479 524 s(6)306.479 528 s(K)320.831 524 s(KL)320.831 526 s(K) 320.831 528 s(KL)320.831 530 s(K)335.184 524 s(KL)335.184 528 s(K) 335.184 528 s(KL)335.184 532 s 1.801 393.745 515.981 350.287 517.98 m 1.801 393.745 518.981 350.287 520.98 m(K)349.537 529.98 s(KL) 349.537 530 s(\()345.287 534 s(K)349.537 533.98 s(KL)349.537 534 s(K) 363.889 529.32 s(KL)363.889 532 s(K)363.889 533.32 s(KL)363.889 536 s(K) 378.242 528.66 s(KL)378.242 530 s(K)378.242 532.66 s(KL)378.242 534 s(6) 392.595 528 s(6)392.595 532 s 16 492(@)406.947 520 b %9/7 (7)416.21 474 s(.)434.433 480 s(-)463.139 480 s(-)509.068 480 s (@)553.997 476 s %9/6 1.814 448.936 517.997 416.96 514 m 1.814 448.936 520.997 434.183 519.152 m(6)416.21 526 s(6)416.21 530 s(K) 433.433 528.152 s(KL)433.433 530 s(K)447.786 529.947 s(KL)447.786 530 s 1.8 494.865 518 462.889 518 m 1.8 494.865 521 480.112 521 m(K) 462.139 530 s(KL)462.139 536 s(6)479.362 530 s(6)493.715 530 s 1.8 540.794 518 508.818 518 m 1.8 540.794 521 526.042 521 m(K) 508.068 530 s(KL)508.068 536 s(6)525.292 530 s(6)539.644 530 s 16 492(@)553.997 520 b (FFFFCCCCCCCCC)54 520 s (C)543.997 520 s (FFFFCCCCCCCCC)54 476 s (C)543.997 476 s (!)58 417 s(")57.5 373 s 16 373(@)54 417 b 0.115 47 403 br2 %10/7 (.)83 377 s 1.8 108.766 373 96.722 373 m 1.8 108.766 376 96.722 376 m(6) 95.972 385 s(6)107.616 385 s 1.8 146.026 373 120.01 373 m 1.8 146.026 376 133.983 376 m(=)119.26 391 s(K)119.26 385 s(KL) 119.26 391 s(6)133.233 385 s(6)144.876 385 s 1.8 183.287 373 157.27 373 m 1.8 183.287 376 171.243 376 m(=) 156.52 391 s(K)156.52 385 s(KL)156.52 391 s(6)170.493 385 s(6) 182.137 385 s(@)193.781 373 s %10/6 (3)88 433 s(?)96.4 433 s 1.8 108.766 411 82.75 411 m 1.8 108.766 414 96.722 414 m(K)82 423 s(K)82 433 s(L)82 433 s(6) 95.972 423 s(6)107.616 423 s 1.8 146.026 411 120.01 411 m 1.8 146.026 414 133.983 414 m(K)119.26 423 s(KL)119.26 429 s(6) 133.233 423 s(6)144.876 423 s 1.8 183.287 411 157.27 411 m 1.8 183.287 414 171.243 414 m(K)156.52 423 s(KL)156.52 429 s(6) 170.493 423 s(6)182.137 423 s 16 389(@)193.781 417 b rm 10 ss(10) 54 441 s %11/7 mf 10 ss(.)202.296 377 s -1.8 233.162 393 221.118 393 m -1.8 233.162 390 221.118 390 m(5)215.268 377 s(5)226.912 377 s 1.8 265.322 367 239.306 367 m 1.8 265.322 370 253.279 370 m(K) 238.556 379 s(KL)238.556 383 s(6)252.529 379 s(6)264.172 379 s 1.8 302.583 369 276.566 369 m 1.8 302.583 372 290.539 372 m(K) 275.816 381 s(KL)275.816 385 s(6)289.789 381 s(6)301.433 381 s (@)313.077 373 s %11/6 (5)201.296 433 s(7)238.556 433 s 209.296 439 241.556 439 5 cv(5) 252.529 431 s(7)289.789 429 s 1.846 228.062 410.23 202.046 416.213 m 1.846 228.062 413.23 216.018 416 m(K)201.296 428.213 s(KL)201.296 429 s(6) 215.268 425 s(K)226.912 422.322 s(KL)226.912 423 s 1.8 253.679 409 239.306 409 m(6)238.556 421 s(6)252.529 421 s 1.817 290.939 412.997 276.566 411 m(6)275.816 423 s(K)289.789 424.942 s(KL) 289.789 425 s 16 389(@)313.077 417 b %12/7 1.8 347.358 371 321.342 371 m 1.8 347.358 374 335.314 374 m(K) 320.592 383 s(KL)320.592 387 s(6)334.564 383 s(6)346.208 383 s 1.8 384.618 373 358.602 373 m 1.8 384.618 376 372.575 376 m(K) 357.852 385 s(KL)357.852 389 s(6)371.825 385 s(6)383.468 385 s(6) 406.756 377 s(=)406.756 391 s(6)406.756 391 s(@)444.016 373 s %12/6 (5)320.592 429 s -1.8 401.362 443 363.702 443 m -1.8 401.362 440 389.318 440 m -1.8 401.362 437 389.318 437 m(5) 357.852 427 s(?)366.252 429 s(\210)357.852 447 s(J)383.468 427 s(JL) 383.468 425 s(5)395.112 427 s 1.846 347.358 406.23 321.342 412.213 m 1.846 347.358 409.23 335.314 412 m(K)320.592 424.213 s(KL)320.592 425 s(6) 334.564 421 s(K)346.208 418.322 s(KL)346.208 419 s(6)357.852 417 s 1.894 433.523 411.559 407.506 403 m 1.894 433.523 414.559 421.479 410.597 m(6)406.756 415 s(6)406.756 425 s(K) 420.729 419.597 s(K)420.729 429.597 s(KL)420.729 433 s(K) 432.373 423.427 s(KL)432.373 433 s 16 389(@)444.016 417 b %13/7 (.)452.531 377 s 1.8 478.297 373 466.253 373 m 1.8 478.297 376 466.253 376 m(6)465.503 385 s(6)477.147 385 s 1.884 503.914 364.876 489.541 369.331 m(=)488.791 391 s(K) 488.791 381.331 s(KL)488.791 391 s(6)502.764 377 s -1.884 546.274 396.545 531.901 401 m(5)526.051 385 s(J)540.024 380.669 s (JL)540.024 371 s(@)553.997 373 s %13/6 (=)451.531 435 s(=)451.531 439 s(K)451.531 437 s(KL)451.531 439 s(.) 489.791 421 s -1.884 520.657 441.124 508.614 437.391 m -1.884 520.657 438.124 508.614 434.391 m(J)502.764 421.391 s(JL) 502.764 415 s(5)514.407 425 s -1.884 546.274 439.124 531.901 434.669 m(J) 526.051 418.669 s(JL)526.051 413 s(5)540.024 423 s 16 389(@)553.997 417 b (FFFFCCCCCCCCC)54 417 s (C)543.997 417 s (FFFFCCCCCCCCC)54 373 s (C)543.997 373 s (!)58 314 s(!)58 270 s(!)58 226 s(!)58 182 s(")57.5 138 s(!)58 94 s(") 57.5 50 s 16 50(@)54 314 b 50.5 330 138 k 0.115 47 80 br2 %14/7 (7)82 54 s -1.8 119.987 64 105.161 64 m -1.8 119.987 61 105.161 61 m(5) 99.311 48 s(5)113.737 48 s -1.83 166.151 64.023 134.013 70 m -1.83 166.151 61.023 151.325 63.78 m(5)128.163 54 s(J)145.475 50.78 s(JL) 145.475 48 s(J)159.901 48.097 s(JL)159.901 48 s -1.83 212.315 64.023 180.177 70 m -1.83 212.315 61.023 197.489 63.78 m(5) 174.327 54 s(J)191.639 50.78 s(JL)191.639 48 s(J)206.065 48.097 s(JL) 206.065 48 s(@)220.491 50 s %14/6 (7)82 102 s(5)82 92 s -1.8 119.987 102 105.161 102 m -1.8 119.987 99 105.161 99 m(=)99.311 88 s(=)99.311 84 s(J)99.311 86 s(JL) 99.311 82 s(=)113.737 88 s(=)113.737 84 s(J)113.737 86 s(JL)113.737 82 s -1.83 166.151 98.023 134.013 104 m -1.83 166.151 95.023 151.325 97.78 m(=) 128.163 88 s(5)128.163 88 s(=)145.475 88 s(=)145.475 84 s(J) 145.475 84.78 s(JL)145.475 82 s(=)159.901 88 s(=)159.901 84 s(J) 159.901 82.097 s(JL)159.901 82 s -1.83 212.315 98.023 180.177 104 m -1.83 212.315 95.023 197.489 97.78 m(=)174.327 88 s(5)174.327 88 s(=) 191.639 88 s(=)191.639 84 s(J)191.639 84.78 s(JL)191.639 82 s(=) 206.065 88 s(=)206.065 84 s(J)206.065 82.097 s(JL)206.065 82 s 16 66(@)220.491 94 b %14/5 bi 10 ss(f)72 157 s rm 10 ss(Cre)77.78 127 s mf 10 ss(=)82 156 s(6) 82 156 s rm 10 ss(-)106.901 127 s(do,)124.913 127 s mf 10 ss(5) 128.163 142 s(-)175.327 142 s(@)220.491 138 s %14/4 bi 10 ss(f)82 202 s rm 10 ss(Cre)77.78 168 s mf 10 ss(6)82 190 s rm 10 ss(-)106.901 168 s(do,)124.913 168 s mf 10 ss(6)128.163 190 s(-) 175.327 186 s(@)220.491 182 s %14/3 bi 10 ss(f)82 246 s rm 10 ss(Cre)77.78 215 s mf 10 ss(5)82 228 s rm 10 ss(-)106.901 215 s(do,)124.913 215 s mf 10 ss(5)128.163 224 s(-) 175.327 230 s(@)220.491 226 s %14/2 bi 10 ss(f)82 290 s rm 10 ss(Cre)77.78 254 s mf 10 ss(6)82 278 s rm 10 ss(-)106.901 254 s(do,)124.913 254 s mf 10 ss(5)128.163 272 s(-) 175.327 274 s(@)220.491 270 s %14/1 bi 10 ss(f)82 334 s rm 10 ss(Cre)77.78 300 s mf 10 ss(6)82 326 s rm 10 ss(-)106.901 300 s(do,)124.913 300 s mf 10 ss(6)128.163 322 s(-) 175.327 318 s(@)220.491 314 s rm 10 ss(14)54 338 s %15/7 1.827 275.869 48.898 230.552 40.923 m 1.827 275.869 51.898 259.404 49 m mf 10 ss(K)229.802 52.923 s(KL)229.802 54 s(6)258.654 58 s(=) 258.654 68 s(6)258.654 68 s(K)274.719 60.828 s(KL)274.719 62 s(=) 274.719 68 s(K)274.719 68.828 s(KL)274.719 70 s 1.8 320.787 56 291.535 56 m(=)290.785 68 s(6)290.785 68 s(=)290.785 68 s(=) 290.785 72 s(6)290.785 72 s(=)319.637 68 s(6)319.637 68 s(=)319.637 68 s(=) 319.637 72 s(6)319.637 72 s 1.8 378.493 50 349.24 50 m(6)348.49 62 s(=) 348.49 68 s(6)348.49 70 s(6)377.343 62 s(=)377.343 68 s(6)377.343 70 s (@)406.195 50 s %15/6 1.8 275.869 88 230.552 88 m 1.8 275.869 91 230.552 91 m(K)229.802 100 s(KL) 229.802 102 s(K)229.802 104 s(KL)229.802 106 s(6)244.228 100 s(6) 244.228 104 s(K)258.654 100 s(KL)258.654 102 s(6)274.719 100 s(6) 274.719 104 s 1.8 335.214 88 291.535 88 m 1.8 335.214 91 291.535 91 m(K) 290.785 100 s(KL)290.785 102 s(K)290.785 104 s(KL)290.785 106 s(6) 305.211 100 s(6)305.211 104 s(K)319.637 100 s(KL)319.637 102 s(K) 319.637 104 s(KL)319.637 106 s(K)334.064 100 s(KL)334.064 104 s(K) 334.064 104 s(KL)334.064 108 s 1.8 392.919 88 349.24 88 m 1.8 392.919 91 349.24 91 m(6)348.49 100 s(6)348.49 110 s(K)362.916 100 s (KL)362.916 102 s(=)362.916 112 s(K)362.916 110 s(KL)362.916 112 s(K) 377.343 100 s(KL)377.343 104 s(K)377.343 104 s(KL)377.343 108 s(6) 391.769 100 s(6)391.769 110 s 16 66(@)406.195 94 b %15/5 rm 10 ss(cre)226.697 127 s mf 10 ss(=)229.802 156 s(8)229.802 156 s rm 10 ss(-)246.115 127 s(do)256.654 127 s mf 10 ss(=)258.654 156 s(:) 258.654 156 s rm 10 ss(in)273.829 127 s mf 10 ss(=)274.719 156 s(:) 274.719 156 s rm 10 ss(un)288.785 127 s mf 10 ss(=)290.785 156 s(8) 290.785 156 s rm 10 ss(-)305.851 127 s(um)316.247 127 s mf 10 ss(=) 319.637 156 s(8)319.637 156 s rm 10 ss(De)345.66 127 s mf 10 ss(6) 348.49 150 s(@)406.195 138 s %15/4 rm 10 ss(cre)226.697 168 s mf 10 ss(8)229.802 194 s rm 10 ss(-) 246.115 168 s(do)256.654 168 s mf 10 ss(:)258.654 194 s rm 10 ss(in) 273.829 168 s mf 10 ss(:)274.719 194 s rm 10 ss(un)288.785 168 s mf 10 ss(8)290.785 194 s rm 10 ss(-)305.851 168 s(um)316.247 168 s mf 10 ss(8)319.637 194 s rm 10 ss(De)345.66 168 s mf 10 ss(6) 348.49 192 s(@)406.195 182 s %15/3 rm 10 ss(cre)226.697 215 s mf 10 ss(7)229.802 228 s rm 10 ss(-) 246.115 215 s(do)256.654 215 s mf 10 ss(9)258.654 228 s rm 10 ss(in) 273.829 215 s mf 10 ss(9)274.719 228 s rm 10 ss(un)288.785 215 s mf 10 ss(7)290.785 228 s rm 10 ss(-)305.851 215 s(um)316.247 215 s mf 10 ss(7)319.637 228 s rm 10 ss(De)345.66 215 s mf 10 ss(5) 348.49 228 s(@)406.195 226 s %15/2 rm 10 ss(cre)226.697 254 s mf 10 ss(8)229.802 278 s rm 10 ss(-) 246.115 254 s(do)256.654 254 s mf 10 ss(:)258.654 278 s rm 10 ss(in) 273.829 254 s mf 10 ss(:)274.719 278 s rm 10 ss(un)288.785 254 s mf 10 ss(8)290.785 278 s rm 10 ss(-)305.851 254 s(um)316.247 254 s mf 10 ss(8)319.637 278 s rm 10 ss(De)345.66 254 s mf 10 ss(6) 348.49 276 s(@)406.195 270 s %15/1 rm 10 ss(cre)226.697 300 s mf 10 ss(8)229.802 326 s rm 10 ss(-) 246.115 300 s(do)256.654 300 s mf 10 ss(:)258.654 326 s rm 10 ss(in) 273.829 300 s mf 10 ss(:)274.719 326 s rm 10 ss(un)288.785 300 s mf 10 ss(8)290.785 326 s rm 10 ss(-)305.851 300 s(um)316.247 300 s mf 10 ss(8)319.637 326 s rm 10 ss(De)345.66 300 s mf 10 ss(6) 348.49 330 s(@)406.195 314 s %16/7 (7)415.506 54 s -1.8 453.493 64 438.667 64 m -1.8 453.493 61 438.667 61 m(5)432.817 48 s(5)447.243 48 s -1.83 499.657 64.023 467.519 70 m -1.83 499.657 61.023 484.831 63.78 m(5) 461.669 54 s(J)478.981 50.78 s(JL)478.981 48 s(J)493.407 48.097 s(JL) 493.407 48 s -1.83 545.821 64.023 513.683 70 m -1.83 545.821 61.023 530.995 63.78 m(5)507.833 54 s(J)525.145 50.78 s(JL) 525.145 48 s(J)539.571 48.097 s(JL)539.571 48 s(@)553.997 50 s %16/6 (8)415.506 102 s(6)415.506 106 s -1.8 453.493 102 438.667 102 m -1.8 453.493 99 438.667 99 m(=)432.817 88 s(=)432.817 84 s(J) 432.817 86 s(JL)432.817 82 s(=)447.243 88 s(=)447.243 84 s(J) 447.243 86 s(JL)447.243 82 s -1.83 499.657 98.023 467.519 104 m -1.83 499.657 95.023 484.831 97.78 m(=)461.669 88 s(5)461.669 88 s(=) 478.981 88 s(=)478.981 84 s(J)478.981 84.78 s(JL)478.981 82 s(=) 493.407 88 s(=)493.407 84 s(J)493.407 82.097 s(JL)493.407 82 s -1.83 545.821 98.023 513.683 104 m -1.83 545.821 95.023 530.995 97.78 m(=) 507.833 88 s(5)507.833 88 s(=)525.145 88 s(=)525.145 84 s(J) 525.145 84.78 s(JL)525.145 82 s(=)539.571 88 s(=)539.571 84 s(J) 539.571 82.097 s(JL)539.571 82 s 16 66(@)553.997 94 b %16/5 rm 10 ss(- - )16.391 371.317 127 ws(um,)410.866 127 s mf 10 ss(=) 415.506 156 s(6)415.506 156 s(-)462.669 142 s(-)508.833 142 s (@)553.997 138 s %16/4 rm 10 ss(- - )16.391 371.317 168 ws(um,)410.866 168 s mf 10 ss(6) 415.506 194 s(-)462.669 186 s(-)508.833 186 s(@)553.997 182 s %16/3 rm 10 ss(- - )16.391 371.317 215 ws(um,)410.866 215 s mf 10 ss(5) 415.506 228 s(-)462.669 230 s(-)508.833 230 s(@)553.997 226 s %16/2 rm 10 ss(- - )16.391 371.317 254 ws(um,)410.866 254 s mf 10 ss(6) 415.506 278 s(-)462.669 274 s(-)508.833 274 s(@)553.997 270 s %16/1 rm 10 ss(- - )16.391 371.317 300 ws(um,)410.866 300 s mf 10 ss(6) 415.506 326 s(-)462.669 318 s(-)508.833 318 s(@)553.997 314 s (FFFFCCCCCCCCC)54 314 s (C)543.997 314 s (FFFFCCCCCCCCC)54 270 s (C)543.997 270 s (FFFFCCCCCCCCC)54 226 s (C)543.997 226 s (FFFFCCCCCCCCC)54 182 s (C)543.997 182 s (FFFFCCCCCCCCC)54 138 s (C)543.997 138 s (FFFFCCCCCCCCC)54 94 s (C)543.997 94 s (FFFFCCCCCCCCC)54 50 s (C)543.997 50 s pagesave restore showpage %%Trailer %%Pages: 1 pmw-5.22/testdist/outfiles/Test03.ps0000644000222100022210000004213214541067540015466 0ustar ph10ph10%%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol %%+ font PMW-Music %%Requirements: numcopies(1) %%EndComments %%BeginPaperSize: a4 a4 %%EndPaperSize %%BeginProlog %%Standard Header Omitted (testing) %%EndProlog %%BeginSetup %%IncludeResource: font Times-Roman /rm /rmX /Times-Roman inf %%IncludeResource: font Times-Italic /it /itX /Times-Italic inf %%IncludeResource: font Times-Bold /bf /bfX /Times-Bold inf %%IncludeResource: font Times-BoldItalic /bi /biX /Times-BoldItalic inf %%IncludeResource: font Symbol /sy /syX /Symbol inf %%IncludeResource: font PMW-Music /mf /mfX /PMW-Music inf %%EndSetup %%Page: 1 1 %%BeginPageSetup /pagesave save def %%EndPageSetup rm 13 ss(Mahler)285.228 760 s it 13 ss(Das Lied von der Er)206.279 747 s (de)-0.481 0 rs(, )-0.13 0 rs rm 13 ss(Der )330.598 747 s(Abschied) -0.715 0 rs mf 10 ss(!)104 700 s(')120 706 s(')124.5 712 s(!)104 634 s(') 120 640 s(')124.5 646 s(!)104 634 s(')120 640 s(')124.5 646 s(") 103.5 576 s(')120 578 s(')124.5 584 s(")103.5 576 s(')120 578 s(') 124.5 584 s 16 576(@)104 700 b 0.141 97 613 br %1/5 (\()142.15 574 s(4)146.4 574 s(?)154.8 576 s(@)230.583 576 s %1/4 (\215)136.6 590 s(')140.1 588 s(\216)144.6 590 s(5)146.4 588 s(U) 147.4 601 s 134.4 598 149.4 598 4.5 cv(\()163.233 588 s(5)167.483 588 s(U) 168.483 601 s(\()184.112 590 s(5)188.362 590 s(U)189.362 603 s(\() 204.343 592 s(5)208.593 592 s(U)209.593 605 s it 9 ss(4)178.496 616 s 176.996 619.15 145.9 619.15 2 145.9 617.15 0.3 ll 215.593 617.15 215.593 619.15 2 184.496 619.15 0.3 ll mf 10 ss(@)230.583 576 s %1/3 (4)146.4 634 s(?)154.8 634 s(\()142.15 640 s(4)146.4 640 s(?)154.8 642 s 16 592(@)230.583 634 b %1/2 -1.816 225.234 654.002 152.25 664 m -1.816 225.234 651.002 220.234 651.687 m(5)146.4 648 s 134.4 654 149.4 654 4.5 cv(J)160.524 646.066 s(JL)160.524 646 s(J) 174.443 644.159 s(JL)174.443 644 s(J)188.362 642.252 s(JL)188.362 642 s(\() 198.031 640 s(J)202.281 640.345 s(JL)202.281 640 s(?)210.681 642 s(J) 218.984 638.056 s(JL)218.984 638 s(@)230.583 634 s %1/1 rm 10 ss(- ses.)138.4 690 s it 10 ss(- len.)138.4 680 s mf 10 ss(') 141.9 702 s(3)146.4 702 s 134.4 718 149.4 718 4.5 cv(-)203.281 704 s (@)230.583 700 s %2/5 (4)244.392 580 s(?)252.792 580 s(4)244.392 584 s(?)252.792 584 s(') 235.142 588 s(4)244.392 588 s(?)252.792 588 s(')239.892 592 s(4) 244.392 592 s(?)252.792 592 s(@)288.605 576 s %2/4 (@)288.605 576 s %2/3 (4)244.392 644 s(6)270.046 632 s(U)271.046 610 s 16 592(@)288.605 634 b %2/2 (\()240.142 652 s(=)244.392 652 s(3)244.392 652 s(?)252.792 654 s 226.984 656.741 247.392 662 6 cv(@)288.605 634 s %2/1 rm 10 ss(do not hurry)256.594 721 s(nicht eilen)256.594 731 s mf 10 ss(+) 256.594 708 s(@)288.605 700 s %3/5 (\()298.414 576 s(4)302.664 576 s(?)311.064 576 s(4)302.664 584 s(?) 311.064 584 s(\()293.164 588 s(4)302.664 588 s(?)311.064 588 s(%) 297.664 594 s(=)302.664 594 s(4)302.664 594 s(?)311.064 596 s (@)375.091 576 s %3/4 (@)375.091 576 s %3/3 it 10 ss( cr)312.664 598 s(esc. - - -)-0.37 0 rs mf 10 ss(4) 302.664 632 s 273.046 630 301.664 630 -5 cv 247.392 630 300.664 620 -20 cv(4)336.209 640 s it 9 ss(2)320.436 611 s 318.936 614.15 302.164 614.15 2 302.164 616.15 0.3 ll 343.209 616.15 343.209 614.15 2 326.436 614.15 0.3 ll mf 10 ss 16 592(@)375.091 634 b %3/2 (=)302.664 652 s(5)302.664 652 s 255.392 658 305.664 658 5 cv(%) 314.506 650 s(5)319.506 650 s 252.392 668 322.506 660 8 cv(5) 336.209 648 s(%)347.912 642 s(5)352.912 642 s it 9 ss(4)328.788 670 s 327.288 673.15 302.164 673.15 2 302.164 671.15 0.3 ll 359.912 671.15 359.912 673.15 2 334.788 673.15 0.3 ll mf 7 ss(%)361.591 656.6 s(=) 365.091 652.6 s(=)365.091 656.6 s(\2017)365.091 656.6 s 355.912 640 370.091 647 -6.253 cv mf 10 ss(@)375.091 634 s %3/1 (+)328.848 708 s(@)375.091 700 s %4/5 (4)384.65 578 s(?)393.05 580 s(4)384.65 586 s(?)393.05 588 s (@)428.083 576 s %4/4 (@)428.083 576 s %4/3 it 12 ss(s)365.65 614 s bi 12 ss(f pp)370.318 614 s mf 10 ss(-) 385.65 626 s(%)396.404 628 s(=)401.404 628 s(4)401.404 628 s(?) 409.804 630 s(U)402.404 606 s it 9 ss(4)394.527 603 s 393.027 606.15 385.15 606.15 2 385.15 608.15 0.3 ll 408.404 608.15 408.404 606.15 2 400.527 606.15 0.3 ll mf 10 ss 16 592(@)428.083 634 b %4/2 (%)379.65 656 s(=)384.65 652 s(=)384.65 656 s(3)384.65 656 s(?) 393.05 658 s(@)428.083 634 s %4/1 rm 12 ss(33)375.091 722 s 388.491 720 373.091 720 373.091 733 388.491 733 388.491 720 5 373.091 720 0.8 ll mf 10 ss(+)398.587 708 s (@)428.083 700 s %5/5 (\()432.892 578 s(4)437.142 578 s(?)445.542 580 s(4)437.142 586 s(?) 445.542 588 s(')432.642 590 s(4)437.142 590 s(?)445.542 592 s (@)503.995 576 s %5/4 (@)503.995 576 s %5/3 (=)437.142 628 s(6)437.142 628 s 404.404 626 436.142 626 -5 cv it 10 ss (espr)453.886 643 s(.)-1.11 0 rs mf 10 ss(6)453.886 630 s 404.404 616 451.886 622 -10 cv(6)470.589 632 s(6)487.292 634 s it 9 ss(4) 463.217 604 s 461.717 607.15 436.642 607.15 2 436.642 609.15 0.3 ll 494.292 609.15 494.292 607.15 2 469.217 607.15 0.3 ll 490.292 632 502.995 632 -2.81 cv mf 10 ss 16 592(@)503.995 634 b %5/2 (=)437.142 652 s(=)437.142 656 s(3)437.142 656 s(?)445.542 658 s 395.65 662 439.142 662 5 cv 448.142 662 502.995 662 5 cv(@)503.995 634 s %5/1 (+)463.039 708 s(@)503.995 700 s (FFFCCCCCCCCC)104 700 s (C)493.995 700 s (FFFCCCCCCCCC)104 634 s (C)493.995 634 s (FFFCCCCCCCCC)104 576 s (C)493.995 576 s (!)104 522 s(')120 528 s(')124.5 534 s(!)104 456 s(')120 462 s(') 124.5 468 s(!)104 456 s(')120 462 s(')124.5 468 s(")103.5 398 s(') 120 400 s(')124.5 406 s(")103.5 398 s(')120 400 s(')124.5 406 s 16 398(@)104 522 b 0.141 97 435 br %6/5 (4)140.85 402 s(?)149.25 402 s(4)140.85 408 s(?)149.25 410 s(\() 136.6 412 s(4)140.85 412 s(?)149.25 414 s(=)140.85 416 s(=)140.85 420 s(4) 140.85 420 s(?)149.25 422 s 143.85 402 179.85 402 -6 cv 149.85 410 179.85 410 -6 cv 151.85 416 179.85 416 6 cv 143.85 426 179.85 426 6 cv(@)191.913 398 s %6/4 (@)191.913 398 s %6/3 (6)140.85 456 s 129 454 139.85 454 -2.255 cv it 10 ss(cr)156.293 422.5 s (esc. -)-0.37 0 rs mf 10 ss(%)154.293 456 s(6)159.293 456 s(U) 160.293 434 s(6)175.603 458 s(U)176.603 436 s 16 414(@)191.913 456 b %6/2 (=)140.85 474 s(=)140.85 478 s(5)140.85 478 s 129 484 143.85 484 3.455 cv(%)154.293 478 s(=)159.293 474 s(=)159.293 478 s(3)159.293 478 s(U) 160.293 491 s(@)191.913 456 s %6/1 (+)156.956 530 s(@)191.913 522 s %7/5 (@)259.396 398 s %7/4 (3)200.629 394 s(?)209.029 394 s(@)259.396 398 s %7/3 it 10 ss(- - - - - - )194.629 421 s mf 10 ss(6)200.629 458 s 178.603 455 199.629 455 -5 cv(\()211.108 456 s(6)215.358 456 s(U) 216.358 434 s(\()225.787 454 s(6)230.037 454 s(U)231.037 432 s rm 9.5 ss( ) 246.53 424.5 s mf 10 ss(')240.217 454 s(6)244.717 454 s(U)245.717 432 s it 9 ss(4)223.673 429 s 222.173 432.15 200.129 432.15 2 200.129 434.15 0.3 ll 251.717 434.15 251.717 432.15 2 229.673 432.15 0.3 ll mf 10 ss 16 414(@)259.396 456 b %7/2 (%)195.629 478 s(=)200.629 474 s(=)200.629 478 s(3)200.629 478 s(?) 209.029 480 s(U)201.629 491 s(@)259.396 456 s %7/1 (+)222.654 530 s(@)259.396 522 s %8/5 (4)265.512 400 s(4)265.512 408 s(4)265.512 414 s(\()285.727 400 s(4) 289.977 400 s(4)289.977 408 s(')285.477 412 s(4)289.977 412 s it 9 ss(2) 278.744 379 s 277.244 382.15 265.012 382.15 2 265.012 384.15 0.3 ll 296.977 384.15 296.977 382.15 2 284.744 382.15 0.3 ll mf 10 ss (@)314.442 398 s %8/4 (-)266.512 422 s(-)282.822 422 s(=)298.132 416 s(5)298.132 418 s (@)314.442 398 s %8/3 bi 12 ss(p)266.512 446 s mf 10 ss 16 414(@)314.442 456 b %8/2 (=)265.512 474 s(=)265.512 478 s(K)265.512 476 s(KL)265.512 478 s 211.629 484 268.512 484 5 cv(=)281.822 474 s(=)281.822 478 s(K) 281.822 476 s(KM)281.822 480 s 307.822 453.5 281.822 450 0.2 l 307.822 446.5 281.822 450 0.2 l(@)314.442 456 s %8/1 (+)283.919 530 s(@)314.442 522 s %9/5 (4)320.558 402 s(?)328.958 402 s(4)320.558 406 s(?)328.958 406 s(4) 320.558 410 s(?)328.958 410 s(@)457.258 398 s %9/4 -1.8 430.887 438 326.408 438 m(=)320.558 416 s(J)320.558 422 s(JL) 320.558 418 s 306.132 424 323.558 424 4.227 cv(=)343.086 416 s(=) 343.086 420 s(J)343.086 422 s(JL)343.086 420 s 306.132 434 346.086 442 6 cv(=)363.474 416 s(=)363.474 420 s(5)363.474 422 s(U)364.474 436 s(%) 378.862 422 s(=)383.862 416 s(=)383.862 420 s(5)383.862 422 s(U) 384.862 436 s(5)383.862 412 s(=)404.249 416 s(=)404.249 420 s(=) 404.249 424 s(q)404.249 434 s(q)404.249 432 s(q)404.249 430 s(q) 404.249 428 s(q)404.249 426 s(qL)404.249 426 s(U)405.249 436 s(=) 424.637 416 s(=)424.637 420 s(=)424.637 424 s(q)424.637 434 s(q) 424.637 432 s(q)424.637 430 s(q)424.637 428 s(q)424.637 426 s(q) 424.637 424 s(qL)424.637 424 s(U)425.637 436 s(@)457.258 398 s %9/3 16 414(@)457.258 456 b %9/2 1.829 354.43 458.005 321.308 464 m 1.829 354.43 461.005 321.308 467 m(=) 320.558 474 s(=)320.558 478 s(K)320.558 476 s(KL)320.558 480 s 284.822 486 323.558 486 5 cv(\()328.642 478 s(=)332.892 474 s(=) 332.892 478 s(K)332.892 473.768 s(KL)332.892 478 s it 10 ss(veloce) 343.086 483 s(cr)343.086 448 s(esc. molto)-0.37 0 rs mf 10 ss(=) 343.086 474 s(K)343.086 471.923 s(KL)343.086 476 s(=)353.28 474 s(K) 353.28 470.078 s(KL)353.28 474 s 1.833 395.206 453.923 364.224 459.902 m 1.833 395.206 456.923 364.224 462.902 m(K)363.474 471.902 s(KL) 363.474 472 s(K)373.668 469.935 s(KL)373.668 470 s(K)383.862 467.968 s(KL) 383.862 468 s(6)394.056 466 s -1.833 441.081 474.021 410.099 480 m -1.833 441.081 471.021 410.099 477 m(5)404.249 464 s(J)414.443 462.033 s (JL)414.443 462 s(J)424.637 460.066 s(JL)424.637 460 s(J) 434.831 458.098 s(JL)434.831 458 s(\))434.831 479.063 s mf 7 ss(=) 447.258 474.6 s(=)447.258 478.6 s(\2017)447.258 478.6 s 437.831 455 450.258 471 -5.728 cv mf 10 ss(@)457.258 456 s %9/1 (-)321.558 526 s it 10 ss(appassionato)344.474 542 s mf 10 ss(-) 364.474 526 s rm 9.5 ss(O)403.82 508 s it 9.5 ss(O)403.82 497 s mf 10 ss(5) 404.249 522 s mf 7 ss(\2017)447.258 530.6 s 407.249 520 450.258 528 -5 cv 445.758 532 412.249 524 0.3 l 453.258 547.9 410.249 544.4 0.2 l 453.258 540.9 410.249 544.4 0.2 l mf 10 ss(@)457.258 522 s %10/5 (4)465.224 404 s(?)473.624 406 s(4)465.224 408 s(?)473.624 410 s(4) 465.224 414 s(?)473.624 414 s(@)503.996 398 s %10/4 (\()460.974 420 s(=)465.224 416 s(=)465.224 420 s(3)465.224 420 s(\() 483.436 422 s(=)487.686 416 s(=)487.686 420 s(5)487.686 422 s 473.224 426 489.686 429 3.938 cv 495.686 428 502.996 428 1.193 cv (@)503.996 398 s %10/3 bi 12 ss(fp)477.627 444 s mf 10 ss 16 414(@)503.996 456 b %10/2 (=)465.224 474 s(=)465.224 478 s(K)465.224 476 s(KM)465.224 478 s(?) 473.624 480 s 468.224 484 502.996 484 5 cv(@)503.996 456 s %10/1 bi 12 ss(\(f\))457.224 542 s rm 10 ss(steady)473.224 546 s(nicht eilen) 465.224 556 s rm 9.5 ss(beau)459.256 508 s it 9.5 ss(Sc)456.687 497 s(h\366n) -0.142 0 rs mf 10 ss(4)465.224 530 s(?)473.624 530 s 468.224 536 502.996 536 5 cv rm 9.5 ss(-)489.297 497 s(-)488.012 508 s mf 10 ss(@)503.996 522 s (FFFCCCCCCCCC)104 522 s (C)493.996 522 s (FFFCCCCCCCCC)104 456 s (C)493.996 456 s (FFFCCCCCCCCC)104 398 s (C)493.996 398 s (!)104 344 s(')120 350 s(')124.5 356 s(!)104 267 s(')120 273 s(') 124.5 279 s(!)104 267 s(')120 273 s(')124.5 279 s(")103.5 209 s(') 120 211 s(')124.5 217 s(")103.5 209 s(')120 211 s(')124.5 217 s 16 209(@)104 344 b 0.141 97 246 br %11/5 (4)136 215 s(4)136 219 s(4)136 225 s(=)136 227 s(=)136 231 s(4)136 233 s(%) 183.308 213 s(6)188.808 213 s(6)188.808 219 s(6)188.808 225 s(\() 184.133 231 s(=)188.808 227 s(=)188.808 231 s(6)188.808 231 s 145 227 186.808 227 -6 cv 145 221 182.808 221 -6 cv(@)215.077 209 s %11/4 (=)142 227 s(=)142 231 s(5)142 233 s 129 239 145 239 3.8 cv (@)215.077 209 s %11/3 it 10 ss(cr)154.253 243.5 s(esc.)-0.37 0 rs mf 10 ss(%)149.253 267 s(6) 154.253 267 s(6)178.57 273 s(6)196.823 271 s it 9 ss(4)170.911 250 s 169.411 253.15 142.5 253.15 2 142.5 251.15 0.3 ll 203.823 255.15 203.823 253.15 2 176.911 253.15 0.3 ll mf 10 ss 16 225(@)215.077 267 b %11/2 (=)136 285 s(4)136 287 s(?)144.4 287 s 129 293 138 293 2.7 cv (@)215.077 267 s %11/1 rm 9.5 ss(-)129.723 328.5 s(ty!)133.723 328.5 s(-)126.294 317.5 s it 9.5 ss(heit!)130.294 317.5 s mf 10 ss(4)136 350 s(?)144.4 352 s 129 357 139 357 3 cv(@)215.077 344 s %12/5 (\()220.281 213 s(4)229.031 213 s(?)237.431 213 s(\()224.781 219 s(4) 229.031 219 s(?)237.431 221 s(4)229.031 225 s(?)237.431 225 s (@)289.942 209 s %12/4 (-)230.031 233 s(')244.879 231 s(=)249.379 227 s(=)249.379 231 s(3) 249.379 231 s(@)289.942 209 s %12/3 (%)224.031 267 s(4)229.031 267 s rm 9.5 ss(- - - - - ) 12.516 187.976 243.5 ws( )271.473 245.5 s mf 10 ss(6)269.66 269 s 16 225(@)289.942 267 b %12/2 (=)229.031 285 s(3)229.031 287 s 139 293 232.031 293 5 cv(\() 264.985 281 s(5)269.66 281 s(@)289.942 267 s %12/1 (-)230.031 348 s(-)250.379 348 s rm 9.5 ss(O)269.231 328.5 s it 9.5 ss(O) 269.231 317.5 s mf 10 ss(5)269.66 344 s(@)289.942 344 s %13/5 (4)297.546 205 s(?)305.946 205 s(K)297.546 219 s(KM)297.546 223 s(?) 305.946 225 s(@)388.805 209 s %13/4 -1.815 379.844 237.062 303.396 247 m(=)297.546 227 s(=)297.546 231 s(5) 297.546 231 s 257.379 237 300.546 237 5 cv(=)312.756 227 s(J) 312.756 229.023 s(JL)312.756 229 s(=)327.965 227 s(J)327.965 227.046 s(JL) 327.965 227 s(J)343.175 225.069 s(JL)343.175 225 s(J)358.385 223.091 s(JL) 358.385 223 s(J)373.594 221.114 s(JL)373.594 221 s(@)388.805 209 s %13/3 (6)297.546 269 s 272.66 266 296.546 266 -5 cv(6)321.534 271 s(U) 322.534 249 s(6)343.175 277 s(U)344.175 255 s bi 12 ss(f)364.817 241 s mf 10 ss(6)364.817 275 s(U)365.817 253 s it 9 ss(4)332.181 247 s 330.681 250.15 297.046 250.15 2 297.046 252.15 0.3 ll 371.817 252.15 371.817 250.15 2 338.181 250.15 0.3 ll mf 10 ss 16 225(@)388.805 267 b %13/2 (5)297.546 281 s 277.66 287 300.546 287 5 cv(5)317.042 283 s(=) 334.218 285 s(5)334.218 285 s(=)352.132 285 s(5)352.132 287 s(=) 369.309 285 s(=)369.309 289 s(5)369.309 289 s it 9 ss(5)334.427 306 s 332.927 309.15 297.046 309.15 2 297.046 307.15 0.3 ll 376.309 307.15 376.309 309.15 2 340.427 309.15 0.3 ll mf 10 ss(@)388.805 267 s %13/1 rm 9.5 ss(life)294.215 328.5 s it 9.5 ss(e)298.437 317.5 s mf 10 ss(5) 297.546 346 s rm 9.5 ss(of)320.578 328.5 s mf 10 ss(5)321.534 348 s 300.546 343 324.534 346 -5 cv rm 9.5 ss(end)339.316 328.5 s(-) 320.589 317.5 s it 9.5 ss(wi)341.687 317.5 s mf 10 ss(5)343.175 350 s rm 9.5 ss(-)355.282 328.5 s(less)360.693 328.5 s(-)354.253 317.5 s it 9.5 ss(g)361.006 317.5 s(en)-0.095 0 rs mf 10 ss(6)364.817 352 s it 9 ss(4)332.181 368 s 330.681 371.15 297.046 371.15 2 297.046 369.15 0.3 ll 371.817 369.15 371.817 371.15 2 338.181 371.15 0.3 ll mf 10 ss(@)388.805 344 s %14/5 (,)397.409 209 s(=)420.747 203 s(=)420.747 199 s(4)420.747 197 s(4) 420.747 211 s it 9 ss(2)410.078 176 s 408.578 179.15 396.909 179.15 2 396.909 181.15 0.3 ll 427.747 181.15 427.747 179.15 2 416.078 179.15 0.3 ll mf 10 ss(@)445.086 209 s %14/4 (=)396.409 227 s(=)396.409 231 s(3)396.409 233 s(?)404.809 233 s(=) 396.409 227 s(3)396.409 229 s(?)404.809 229 s(3)396.409 225 s(?) 404.809 225 s(3)396.409 219 s(?)404.809 221 s(@)445.086 209 s %14/3 bi 12 ss(p)397.409 257 s it 10 ss(cr)419.747 257 s(esc.)-0.37 0 rs mf 10 ss 16 225(@)445.086 267 b %14/2 (4)396.409 279 s(=)396.409 285 s(=)396.409 289 s(=)396.409 293 s(4) 396.409 293 s(U)397.409 295 s(4)420.747 277 s(=)420.747 285 s(=) 420.747 289 s(4)420.747 291 s(U)421.747 293 s it 9 ss(2)409.578 305 s 408.078 308.15 395.909 308.15 2 395.909 306.15 0.3 ll 427.747 306.15 427.747 308.15 2 415.578 308.15 0.3 ll mf 10 ss(@)445.086 267 s %14/1 rm 12 ss(34)377.805 367 s 391.205 365 375.805 365 375.805 378 391.205 378 391.205 365 5 375.805 365 0.8 ll rm 9.5 ss(lo) 391.373 328.5 s(v)-0.142 0 rs(e)-0.142 0 rs it 9.5 ss(Lie) 393.339 317.5 s mf 10 ss(4)396.409 356 s(4)420.747 352 s 399.409 362 423.747 358 5 cv it 9 ss(2)409.578 369 s 408.078 372.15 395.909 372.15 2 395.909 370.15 0.3 ll 427.747 370.15 427.747 372.15 2 415.578 372.15 0.3 ll mf 10 ss(@)445.086 344 s %15/5 (=)455.29 203 s(=)455.29 199 s(4)455.29 197 s(4)455.29 211 s 423.747 195 454.54 195 -5 cv 428.247 212 454.54 212 -5 cv(') 475.155 195 s(=)479.655 203 s(=)479.655 199 s(=)479.655 195 s(4) 479.655 195 s(')475.155 209 s(4)479.655 209 s it 9 ss(2)468.472 174 s 466.972 177.15 454.79 177.15 2 454.79 179.15 0.3 ll 486.655 179.15 486.655 177.15 2 474.472 177.15 0.3 ll mf 10 ss(@)503.994 209 s %15/4 (=)455.29 227 s(=)455.29 231 s(3)455.29 233 s(?)463.69 233 s(=) 455.29 227 s(3)455.29 229 s(?)463.69 229 s(3)455.29 225 s(?)463.69 225 s(3) 455.29 219 s(?)463.69 221 s 407.909 239 458.29 239 5 cv 407.909 232 454.54 232 5 cv 407.909 228 454.54 228 5 cv 407.909 222 454.54 222 5 cv(@)503.994 209 s %15/3 16 225(@)503.994 267 b %15/2 (%)450.29 275 s(4)455.29 275 s(%)450.29 289 s(=)455.29 285 s(=) 455.29 289 s(4)455.29 289 s(U)456.29 291 s(4)479.655 277 s(=) 479.655 285 s(=)479.655 289 s(4)479.655 291 s(U)480.655 293 s it 9 ss(2) 468.472 304 s 466.972 307.15 454.79 307.15 2 454.79 305.15 0.3 ll 486.655 305.15 486.655 307.15 2 474.472 307.15 0.3 ll mf 10 ss (@)503.994 267 s %15/1 rm 9.5 ss(-)427.657 328.5 s(ing,)451.032 328.5 s(-)425.356 317.5 s it 9.5 ss(bens,)448.396 317.5 s mf 10 ss(%)450.29 352 s(4)455.29 352 s rm 9.5 ss(____)466.548 328.5 s(___)469.184 317.5 s(_)479.905 317.5 s mf 10 ss(4)479.655 354 s 458.29 358 482.655 361 5 cv it 9 ss(2) 468.472 368 s 466.972 371.15 454.79 371.15 2 454.79 369.15 0.3 ll 486.655 369.15 486.655 371.15 2 474.472 371.15 0.3 ll rm 9.5 ss(_) 480.655 317.5 s(_)480.655 328.5 s mf 10 ss(@)503.994 344 s (FFFCCCCCCCCC)104 344 s (C)493.994 344 s (FFFCCCCCCCCC)104 267 s (C)493.994 267 s (FFFCCCCCCCCC)104 209 s (C)493.994 209 s pagesave restore showpage %%Trailer %%Pages: 1 pmw-5.22/testdist/outfiles/Test08.ps0000644000222100022210000000217514541067540015476 0ustar ph10ph10%%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol %%+ font PMW-Music %%Requirements: numcopies(1) %%EndComments %%BeginPaperSize: a4 a4 %%EndPaperSize %%BeginProlog %%Standard Header Omitted (testing) %%EndProlog %%BeginSetup %%IncludeResource: font Times-Roman /rm /rmX /Times-Roman inf %%IncludeResource: font Times-Italic /it /itX /Times-Italic inf %%IncludeResource: font Times-Bold /bf /bfX /Times-Bold inf %%IncludeResource: font Times-BoldItalic /bi /biX /Times-BoldItalic inf %%IncludeResource: font Symbol /sy /syX /Symbol inf %%IncludeResource: font PMW-Music /mf /mfX /PMW-Music inf %%EndSetup %%Page: 1 1 %%BeginPageSetup /pagesave save def %%EndPageSetup mf 10 ss(!)64 760 s bf 11.8 ss(4)77 768 s(4)77 760.15 s %1/1 mf 10 ss(2)96.9 758 s(\245)96.9 742 s(\221)96.9 746 s(\221)96.9 750 s(\221) 96.9 754 s(\221)96.9 758 s(\))96.9 779 s(=)96.9 754 s(2)96.9 754 s(=) 96.9 754 s(=)96.9 750 s(2)96.9 750 s(=)96.9 754 s(=)96.9 750 s(=) 96.9 746 s(2)96.9 744 s(B)127.4 760 s(@)125.4 760 s (CCCCCC)64 760 s (C)118.9 760 s pagesave restore showpage %%Trailer %%Pages: 1 pmw-5.22/testdist/outfiles/Test04.ps0000644000222100022210000004743614541067540015503 0ustar ph10ph10%%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol %%+ font PMW-Music %%Requirements: numcopies(1) %%EndComments %%BeginPaperSize: a4 a4 %%EndPaperSize %%BeginProlog %%Standard Header Omitted (testing) %%EndProlog %%BeginSetup %%IncludeResource: font Times-Roman /rm /rmX /Times-Roman inf %%IncludeResource: font Times-Italic /it /itX /Times-Italic inf %%IncludeResource: font Times-Bold /bf /bfX /Times-Bold inf %%IncludeResource: font Times-BoldItalic /bi /biX /Times-BoldItalic inf %%IncludeResource: font Symbol /sy /syX /Symbol inf %%IncludeResource: font PMW-Music /mf /mfX /PMW-Music inf %%EndSetup %%Page: 1 1 %%BeginPageSetup /pagesave save def %%EndPageSetup it 14 ss(G\366tter)235.309 760 s(d\344mmerung)-0.518 0 rs(, )-0.14 0 rs rm 14 ss(Act I)345.083 760 s rm 12 ss(W)536.98 746 s(agner)-0.96 0 rs mf 10 ss(!)36 717 s(!)36 637 s(!)36 637 s(")35.5 581 s(")35.5 581 s 16 581(@)34 717 b 0.138 27 617 br2 %1/5 (@)235.83 581 s %1/4 -1.894 105.326 611.132 71.45 599.987 m -1.894 105.326 608.132 71.45 596.987 m(\243)65.6 565 s(J)65.6 583.987 s(JL) 65.6 581 s(J)75.843 587.356 s(JL)75.843 587 s(%)83.941 591 s(J) 88.941 591.666 s(JL)88.941 591 s(5)99.076 595 s 1.894 140.765 585.134 109.961 575 m 1.894 140.765 588.134 109.961 578 m(6) 109.211 587 s(K)119.345 590.334 s(KL)119.345 591 s(K)129.48 593.668 s(KL) 129.48 595 s(=)139.615 599 s(K)139.615 597.002 s(KL)139.615 601 s 1.894 184.268 590.109 150.5 579 m 1.894 184.268 593.109 150.5 582 m(6) 149.75 591 s(K)159.885 594.334 s(KL)159.885 595 s(=)170.02 599 s(K) 170.02 597.668 s(KL)170.02 601 s(%)178.118 605 s(=)183.118 599 s(=) 183.118 603 s(K)183.118 601.978 s(KL)183.118 605 s 1.894 226.845 593.805 194.003 583 m 1.894 226.845 596.805 194.003 586 m(6) 193.253 595 s(=)203.388 599 s(K)203.388 598.334 s(KL)203.388 601 s(=) 213.522 599 s(=)213.522 603 s(K)213.522 601.668 s(KL)213.522 605 s mf 9 ss($)225.695 565 s mf 10 ss(=)225.695 599 s(=)225.695 603 s(=) 225.695 607 s(K)225.695 605.673 s(KL)225.695 609 s 68.6 579 223.695 583.673 -17.336 cv(@)235.83 581 s %1/3 bi 10 ss(p)65.6 616 s mf 10 ss(6)65.6 641 s 52.6 641 63.6 641 -3.3 cv(=) 109.211 655 s(6)109.211 657 s(?)117.611 657 s(=)170.02 655 s(8) 170.02 655 s 1.8 220.787 633 194.003 633 m(K)193.253 645 s(KL) 193.253 651 s(%)203.56 645 s(6)208.56 645 s(K)219.637 645 s(KL) 219.637 647 s it 9 ss(3)204.195 623 s mf 10 ss 16 597(@)235.83 637 b %1/2 -1.806 95.191 667.034 71.45 665.04 m(%)60.6 649 s(J)65.6 649.04 s(JL) 65.6 649 s(%)83.941 651 s(5)88.941 651 s 73.6 667.04 223.637 665 12 cv (@)235.83 637 s %1/1 bf 10 ss(Br\374nnh.)66.6 737 s mf 10 ss(-)66.6 721 s(.)110.211 721 s rm 9.5 ss(ge)127.996 705.5 s it 9.5 ss(the)126.676 695.5 s mf 10 ss(7) 129.48 721 s rm 9.5 ss(-)137.868 705.5 s(denk)141.935 705.5 s rmX 9.5 ss(\242) sh it 9.5 ss(lo)144.884 695.5 s(ve)-0.095 0 rs mf 10 ss(5)149.75 721 s(?) 158.15 721 s rm 9.5 ss(der)210.457 705.5 s it 9.5 ss(we)211.245 695.5 s mf 10 ss(%)208.522 731 s(8)213.522 731 s(@)235.83 717 s %2/5 (@)399.824 581 s %2/4 -1.894 272.11 609.131 251.332 602.296 m(\243)245.482 565 s(J) 245.482 586.296 s(JL)245.482 581 s(J)255.725 589.665 s(JL)255.725 589 s(5) 265.86 593 s it 9 ss(3)259.671 574 s 1.894 308.774 574.772 279.708 584.334 m mf 10 ss(%)273.958 599 s(=) 278.958 599 s(K)278.958 596.334 s(KL)278.958 599 s(6)289.093 593 s(K) 307.624 586.903 s(KL)307.624 589 s 1.894 354.508 580.868 333.838 587.668 m(=)333.088 599 s(=)333.088 603 s(K) 333.088 599.668 s(KL)333.088 603 s(=)343.223 599 s(K)343.223 596.334 s(KL) 343.223 599 s(6)353.358 593 s 1.894 390.839 580.25 364.243 589 m mf 9 ss($) 363.493 565 s mf 10 ss(=)363.493 599 s(=)363.493 603 s(=)363.493 607 s(K) 363.493 601 s(KL)363.493 607 s(=)376.591 599 s(K)376.591 596.691 s(KL) 376.591 601 s(\243)379.689 564.382 s(K)389.689 592.382 s(KL) 389.689 597 s(%)384.689 607 s(=)389.689 599 s(=)389.689 603 s(=) 389.689 607 s(K)389.689 602.382 s(KL)389.689 607 s 253.482 613.296 392.689 616 8 cv 392.689 596.382 407.689 596.382 -4.5 cv 392.689 613 407.689 612 4.5 cv(@)399.824 581 s %2/3 (%)240.482 647 s(6)245.482 647 s rm 7 ss(1)278.958 657 s mf 10 ss(6) 278.958 649 s 284.958 632.5 245.482 629 0.2 l 284.958 625.5 245.482 629 0.2 l rm 7 ss(1)335.088 642 s mf 10 ss(6) 333.088 653 s 1.82 390.839 636.94 364.243 640.929 m(K)363.493 652.929 s(KL) 363.493 653 s 336.088 651 362.493 651 -5 cv(%)371.591 651 s(K) 376.591 650.965 s(KL)376.591 651 s(%)384.689 649 s(6)389.689 649 s it 9 ss(3)380.591 661 s 395.689 630 333.088 633.5 0.2 l 395.689 630 333.088 626.5 0.2 l mf 10 ss 16 597(@)399.824 637 b %2/2 (5)245.482 653 s(?)253.882 653 s -1.8 329.203 671 298.399 671 m -1.8 329.203 668 298.399 668 m -1.8 329.203 665 298.399 665 m(%) 287.549 651 s(J)292.549 655 s(JL)292.549 651 s(J)302.684 655 s(JL) 302.684 653 s(=)312.818 655 s(5)312.818 655 s(J)322.953 655 s(JL) 322.953 653 s(=)333.088 655 s(=)333.088 659 s(=)333.088 663 s(5) 333.088 663 s(?)341.488 665 s(=)386.109 655 s(7)386.109 657 s (@)399.824 637 s %2/1 rm 9.5 ss(Lie)242.151 705.5 s it 9.5 ss(live)241.623 695.5 s mf 10 ss(%) 240.482 727 s(6)245.482 727 s rm 9.5 ss(______)256.341 695.5 s mf 10 ss(4) 278.958 729 s 248.482 734 281.958 735 5 cv rm 9.5 ss(- - - - - ) 12.516 270.722 705.5 ws(be)362.009 705.5 s it 9.5 ss(for)360.95 695.5 s mf 10 ss(5)363.493 721 s(@)399.824 717 s %3/5 (@)573.998 581 s %3/4 1.894 438.393 580.109 404.626 569 m 1.894 438.393 583.109 404.626 572 m(6) 403.876 581 s(K)414.01 584.334 s(KL)414.01 587 s mf 9 ss($) 427.109 560.643 s mf 10 ss(%)422.109 591 s(K)427.109 588.643 s(KL) 427.109 591 s(K)437.243 591.977 s(KL)437.243 595 s 1.894 478.933 585.134 448.128 575 m 1.894 478.933 588.134 448.128 578 m(\243) 447.378 563 s(6)447.378 587 s(K)457.513 590.334 s(KL)457.513 591 s(K) 467.648 593.668 s(KL)467.648 595 s(=)477.783 599 s(K)477.783 597.003 s(KL) 477.783 601 s 1.894 522.436 590.109 488.668 579 m 1.894 522.436 593.109 488.668 582 m(6)487.918 591 s(K)498.053 594.334 s(KL) 498.053 595 s(=)508.188 599 s(K)508.188 597.668 s(KL)508.188 601 s(%) 516.286 605 s(=)521.286 599 s(=)521.286 603 s(K)521.286 601.978 s(KL) 521.286 605 s 1.894 565.013 593.805 532.171 583 m 1.894 565.013 596.805 532.171 586 m(6)531.421 595 s(=)541.556 599 s(K) 541.556 598.334 s(KL)541.556 601 s(=)551.69 599 s(=)551.69 603 s(K) 551.69 601.668 s(KL)551.69 605 s mf 9 ss($)563.863 565 s mf 10 ss(=) 563.863 599 s(=)563.863 603 s(=)563.863 607 s(K)563.863 605.673 s(KL) 563.863 609 s 406.876 590 566.863 615 20 cv(@)573.998 581 s %3/3 1.806 428.259 638.985 404.626 637 m bi 10 ss(p)403.876 623 s mf 10 ss(6) 403.876 649 s 392.689 647 402.876 647 -2.056 cv(%)422.109 651 s(K) 427.109 650.951 s(KL)427.109 651 s mf 7 ss(\2017)435.378 641.6 s mf 10 ss(6)447.378 647 s(?)455.778 649 s(\221)447.378 646 s(\221) 447.378 650 s(\221)447.378 654 s(\221)447.378 658 s(6)447.378 651 s(?) 455.778 653 s(=)447.378 655 s(6)447.378 657 s(?)455.778 657 s(=) 508.188 655 s(8)508.188 655 s 1.82 558.289 634.938 532.171 638.934 m(K) 531.421 650.934 s(KL)531.421 651 s rm 7 ss(1)546.241 629 s mf 10 ss(\() 541.991 649 s(K)546.241 648.667 s(KL)546.241 649 s rm 7 ss(2) 557.139 629 s mf 10 ss(6)557.139 647 s it 9 ss(3)549.28 656 s 410.876 655 560.139 659 21 cv mf 10 ss 16 597(@)573.998 637 b %3/2 (=)403.876 655 s(=)403.876 659 s(5)403.876 661 s 253.482 668 406.876 676 12 cv(@)573.998 637 s %3/1 (-)404.876 721 s rm 9.5 ss(der)444.313 705.5 s it 9.5 ss(aye) 443.785 695.5 s mf 10 ss(3)447.378 721 s rm 9.5 ss(wir)528.09 705.5 s it 9.5 ss(r)530.641 695.5 s(e)-0.351 0 rs mf 10 ss(5)531.421 721 s rm 9.5 ss(-)553.518 695.5 s mf 10 ss(@)573.998 717 s (FFFFFCCC)34 717 s (C)563.998 717 s (FFFFFCCC)34 637 s (C)563.998 637 s (FFFFFCCC)34 581 s (C)563.998 581 s (!)36 453 s(!)36 373 s(!)36 373 s(")35.5 317 s(")35.5 317 s 16 317(@)34 453 b 0.138 27 353 br2 %4/5 (4)66 317 s(')150.984 319 s(4)155.934 319 s(@)224.109 317 s %4/4 (.)69 333 s(.)67.3 329 s(.)65.6 325 s -1.8 95.992 345 79.938 345 m -1.8 95.992 342 79.938 342 m -1.8 95.992 339 79.938 339 m(5)74.088 329 s(J) 81.915 329 s(JL)81.915 325 s(5)89.742 329 s(5)97.569 325 s(5) 110.353 329 s -1.88 114.047 344.22 105.975 341.774 m -1.88 114.047 341.22 105.975 338.774 m -1.88 114.047 338.22 105.975 335.774 m(.)158.934 333 s(.)157.234 329 s(.) 155.534 325 s -1.8 185.665 345 169.611 345 m -1.8 185.665 342 169.611 342 m -1.8 185.665 339 169.611 339 m(5) 163.761 329 s(J)171.588 329 s(JL)171.588 325 s(5)179.415 329 s(5) 187.242 325 s(5)200.026 329 s -1.88 203.72 344.22 195.648 341.774 m -1.88 203.72 341.22 195.648 338.774 m -1.88 203.72 338.22 195.648 335.774 m(@)224.109 317 s %4/3 it 10 ss(poco accel.)54 411 s it 9.5 ss( cr)48.467 353.5 s(esc.) -0.351 0 rs mf 10 ss(6)66 375 s(\221)66 375 s(\221)66 379 s(\221) 66 383 s(6)66 383 s rm 7 ss(1)106.613 373 s mf 10 ss(%)99.613 381 s(4) 104.613 381 s(6)192.123 383 s 16 333(@)224.109 373 b %4/2 (5)72 389 s(?)80.4 389 s(5)72 385 s(?)80.4 385 s -1.8 152.27 407 128.389 407 m -1.8 152.27 404 128.389 404 m -1.8 152.27 401 128.389 401 m(%)117.539 387 s(J)122.539 391 s(JL) 122.539 387 s(J)130.366 391 s(JL)130.366 389 s(=)138.193 391 s(5) 138.193 391 s(J)146.02 391 s(JL)146.02 389 s(=)155.934 391 s(=) 155.934 395 s(=)155.934 399 s(5)155.934 399 s(?)164.334 401 s(7) 210.125 385 s(@)224.109 373 s %4/1 rm 9.5 ss(le)65.571 442.5 s(-)56 432.5 s it 9.5 ss(mem)60.032 432.5 s mf 10 ss(2)66 469 s(@)224.109 453 s %5/5 (\()228.089 319 s(4)232.339 319 s 69 309 230.339 311 -8 cv(4) 318.553 321 s(A)383.316 317 s %5/4 (.)235.339 333 s(.)233.639 329 s(.)231.939 325 s -1.8 268.397 345 246.238 345 m -1.8 268.397 342 246.238 342 m -1.8 268.397 339 246.238 339 m(5)240.388 329 s(')249.82 325 s(J) 254.32 329 s(JL)254.32 325 s(5)262.147 329 s(5)269.974 325 s(5) 305.769 329 s -1.81 304.86 344.193 282.983 341.787 m -1.81 304.86 341.193 282.983 338.787 m -1.81 304.86 338.193 282.983 335.787 m(.)321.553 333 s(.)319.853 329 s(.) 318.153 325 s -1.8 350.371 347 334.317 347 m -1.8 350.371 344 334.317 344 m -1.8 350.371 341 334.317 341 m(5) 328.467 331 s(J)336.294 331 s(JL)336.294 325 s(5)344.121 331 s(5) 351.948 325 s(5)364.731 329 s -1.88 368.425 344.219 360.354 341.774 m -1.88 368.425 341.219 360.354 338.774 m -1.88 368.425 338.219 360.354 335.774 m(A)383.316 317 s %5/3 (')227.839 385 s(6)232.339 385 s(6)302.325 389 s(=)302.325 391 s(=) 302.325 395 s(=)302.325 399 s(=)302.325 403 s(6)302.325 403 s(8) 318.553 389 s(=)318.553 391 s(=)318.553 395 s(=)318.553 399 s(=) 318.553 403 s(6)318.553 403 s 305.325 387 317.803 387 -2.743 cv 305.325 409 321.553 409 3.868 cv(6)351.948 389 s(=)351.948 391 s(=) 351.948 395 s(=)351.948 399 s(=)351.948 403 s(6)351.948 403 s rm 9.5 ss (- - - - - - - - - - - - - - - - )11.498 104.114 353.5 ws it 9.5 ss( ) 375.023 353.5 s mf 10 ss(')368.71 389 s(8)373.21 389 s(')368.71 403 s(=) 373.21 391 s(=)373.21 395 s(=)373.21 399 s(=)373.21 403 s(6)373.21 403 s 16 333(A)383.316 373 b %5/2 -1.8 299.705 407 238.189 407 m -1.8 284.051 404 275.824 404 m -1.8 291.878 404 283.651 404 m -1.8 299.705 404 291.478 404 m -1.8 284.051 401 275.824 401 m -1.8 291.878 401 283.651 401 m -1.8 299.705 401 291.478 401 m(J)232.339 391 s(JL)232.339 389 s(%) 264.474 387 s(J)269.974 391 s(JL)269.974 387 s(J)277.801 391 s(JL) 277.801 389 s(=)285.628 391 s(5)285.628 391 s(J)293.455 391 s(JL) 293.455 389 s(6)302.325 389 s 296.455 387 301.325 387 -1.461 cv (A)383.316 373 s %5/1 (4)232.339 469 s(?)240.739 469 s 69 475 235.339 475 5 cv rm 9.5 ss (- - - - - - - - - - - - - - - - )11.498 82.472 442.5 ws(ben:) 351.217 442.5 s(- - - - - - - - - - - - - - - )11.524 93.71 432.5 ws it 9.5 ss(ber:)351.483 432.5 s mf 10 ss(7)356.396 457 s(.)374.21 457 s (A)383.316 453 s %6/5 (')388.329 319 s(')392.829 325 s(')397.329 317 s(z.)413.031 329 s(.) 412.331 325 s 1.8 459.464 319 427.756 319 m 1.8 459.464 322 427.756 322 m(')422.506 335 s(=)427.006 335 s(K) 427.006 331 s(KL)427.006 335 s(6)434.833 331 s(=)442.66 335 s(K) 442.66 331 s(KL)442.66 335 s(6)450.487 331 s(=)458.314 335 s(K) 458.314 331 s(KL)458.314 335 s it 9 ss(6)433.422 305 s mf 10 ss(6) 468.228 331 s(=)476.055 335 s(6)476.055 335 s 2.001 475.64 322.237 470.543 319.76 m 2.001 475.64 325.237 470.543 322.76 m 2.001 475.64 328.237 470.543 325.76 m it 9 ss(6)473.141 305 s mf 10 ss(z.) 493.231 329 s(.)492.531 325 s 1.8 533.559 319 501.852 319 m 1.8 533.559 322 501.852 322 m(=)501.102 335 s(K)501.102 331 s(KL) 501.102 335 s(6)508.929 331 s(=)516.756 335 s(K)516.756 331 s(KL) 516.756 335 s(6)524.583 331 s(=)532.409 335 s(K)532.409 331 s(KL) 532.409 335 s it 9 ss(6)510.57 305 s mf 10 ss(6)545.194 327 s(\221) 545.194 327 s(\221)545.194 331 s(6)545.194 331 s(@)573.997 317 s %6/4 (')388.329 319 s(')392.829 325 s(')397.329 317 s(')407.531 323 s(4) 412.031 323 s(')487.281 323 s(4)492.231 323 s(=)412.031 335 s(=) 412.031 339 s(3)412.031 339 s(\()487.556 337 s(=)492.231 335 s(5) 492.231 337 s -1.808 571.376 351.008 551.044 353 m(')540.694 337 s(=) 545.194 335 s(5)545.194 337 s(\()560.876 335 s(=)565.126 335 s(J) 565.126 335.047 s(JL)565.126 335 s 420.031 343 568.126 353.537 10 cv (@)573.997 317 s %6/3 (')388.329 379 s(')392.829 385 s(')397.329 377 s it 10 ss(pi\371 ) 412.031 357 s bi 10 ss(f)427.311 357 s mf 10 ss(6)412.031 389 s(=) 412.031 391 s(=)412.031 395 s(=)412.031 399 s(=)412.031 403 s(6) 412.031 403 s 380.71 392 411.281 392 5 cv 376.21 409 415.031 409 5 cv(\() 463.553 387 s(4)468.228 387 s(\()463.553 401 s(=)468.228 391 s(=) 468.228 395 s(=)468.228 399 s(4)468.228 401 s 1.82 566.276 368.94 552.944 370.939 m(')542.694 383 s(K) 552.194 382.939 s(KL)552.194 383 s(\()560.876 381 s(6)565.126 381 s 16 333(@)573.997 373 b %6/2 (')388.329 379 s(')392.829 385 s(')397.329 377 s(5)545.194 387 s(5) 545.194 373 s 80 401 548.194 403 23 cv 548.194 371 573.997 371 -6 cv 553.194 393 573.997 393 6 cv(@)573.997 373 s %6/1 (')388.329 459 s(')392.829 465 s(')397.329 457 s rm 9.5 ss(Br\374nn) 403.157 442.5 s it 9.5 ss(Br\374nn)403.157 432.5 s mf 10 ss(') 407.531 469 s(6)412.031 469 s rm 9.5 ss(-)444.977 442.5 s(hil) 466.212 442.5 s(-)444.977 432.5 s it 9.5 ss(hil)466.212 432.5 s mf 10 ss(4) 468.228 467 s rm 9.5 ss(- - - )13.905 488.952 442.5 ws(de)543.71 442.5 s (- - - )13.905 488.952 432.5 ws it 9.5 ss(de)543.71 432.5 s mf 10 ss(6) 545.194 467 s(@)573.997 453 s (FFFFFCCC)34 453 s (C)563.997 453 s (FFFFFCCC)34 373 s (C)563.997 373 s (FFFFFCCC)34 317 s (C)563.997 317 s (!)36 189 s(')52 195 s(')56.5 201 s(')61 193 s(!)36 109 s(')52 115 s(') 56.5 121 s(')61 113 s(!)36 109 s(')52 115 s(')56.5 121 s(')61 113 s(") 35.5 53 s(')52 55 s(')56.5 61 s(')61 53 s(")35.5 53 s(')52 55 s(') 56.5 61 s(')61 53 s 16 53(@)34 189 b 0.138 27 89 br2 %7/5 (\()79.35 59 s(4)83.6 59 s(4)130.457 61 s(@)190.361 53 s %7/4 (.)84.6 69 s(5)95.942 67 s(')106.059 71 s(=)110.559 71 s(7)110.559 71 s 103.942 74 113.559 79 1.885 cv(.)131.457 69 s -1.851 165.135 87.096 148.49 83.102 m(J)142.64 67.102 s(JL)142.64 67 s(=) 158.885 71 s(5)158.885 71 s 150.64 73 161.885 77 2.373 cv(.)179.179 69 s (@)190.361 53 s %7/3 bi 10 ss(f)83.6 90 s(f)-0.18 0 rs mf 10 ss(')81.1 117 s(4)90.6 117 s(?) 99 117 s 1.884 179.329 104.935 166.635 101 m(6)165.885 113 s 91.6 139 162.885 135 8 cv(K)178.179 116.811 s(KL)178.179 117 s 16 69(@)190.361 109 b %7/2 (5)83.6 123 s(5)83.6 109 s 66 107 86.6 107 -6 cv 66 129 86.6 129 6 cv(') 99.969 123 s(3)104.469 123 s(')99.969 109 s(3)104.469 109 s(5) 158.885 121 s(5)158.885 107 s(@)190.361 109 s %7/1 rm 9.5 ss(brennt)74.464 178.5 s it 9.5 ss(then)78.421 168.5 s mf 10 ss(6) 83.6 203 s rm 9.5 ss(__)99.736 178.5 s(_)104.719 178.5 s(___) 95.78 168.5 s mf 10 ss(')99.969 203 s(4)104.469 203 s 86.6 210 107.469 210 5 cv rm 9.5 ss(dann)152.651 178.5 s it 9.5 ss(will) 154.756 168.5 s mf 10 ss(6)158.885 201 s(@)190.361 189 s %8/5 (')195.833 63 s(2)200.333 63 s 86.6 51 203.333 58 -10 cv(@)315.655 53 s %8/4 (\243)201.333 37 s(=)212.596 71 s(=)212.596 75 s(=)212.596 79 s(5) 212.596 81 s(=)227.214 71 s(=)227.214 75 s(5)227.214 75 s(')275.946 71 s(=) 280.896 71 s(5)280.896 71 s mf 9 ss($)295.513 37 s mf 10 ss(7) 295.513 67 s(@)315.655 53 s %8/3 (')195.833 117 s(6)200.333 117 s 181.179 115 199.333 115 -4.446 cv(8) 200.333 107 s(')195.833 117 s(6)200.333 117 s 161.885 99 198.333 107 -6 cv(\()222.964 119 s(<)227.214 117 s(<)227.214 120 s(<)227.214 123 s(K) 227.214 117 s(KL)227.214 119 s 1.8 265.275 109 240.146 109 m 1.8 265.275 112 240.146 112 m 1.8 265.275 115 240.146 115 m it 9.5 ss (dim. e r)239.396 97.5 s(all.)-0.142 0 rs mf 10 ss(6)239.396 121 s(') 247.442 123 s(K)251.942 121 s(KL)251.942 123 s rm 7 ss(1)264.125 130 s mf 10 ss(6)264.125 121 s(4)276.307 121 s 267.125 119 275.307 119 -1.454 cv 16 69(@)315.655 109 b %8/2 (5)200.333 121 s(?)208.733 121 s 166.885 125 203.333 125 6 cv(=) 276.307 127 s(=)276.307 131 s(=)276.307 135 s(5)276.307 135 s(?) 284.707 137 s(=)295.513 127 s(7)295.513 127 s 203.333 105 298.513 83 -8 cvw(@)315.655 109 s %8/1 rm 9.5 ss(e)201.224 178.5 s it 9.5 ss(b)194.456 168.5 s(urn)-0.19 0 rs mf 10 ss(4)200.333 201 s(?)208.733 201 s rm 9.5 ss(- - - - ) 12.979 214.459 178.5 ws(wig)282.191 178.5 s it 9.5 ss(for) 283.773 168.5 s mf 10 ss(5)286.316 193 s(@)315.655 189 s %9/5 (\()321.127 63 s(2)330.377 63 s(\()326.127 73 s(=)330.377 71 s(2) 330.377 73 s(@)441.192 53 s %9/4 (2)337.377 67 s(\210)337.377 75 s 303.513 69 332.377 69 6 cv -1.318 435.567 78.886 429.287 76.94 m -1.318 435.567 76.786 429.287 74.84 m mf 7 ss(\()422.217 65.6 s(J) 425.192 65.809 s(JL)425.192 65.6 s(J)431.192 67.669 s(JL)431.192 67.6 s 428.192 63 434.192 64 -1.8 cv mf 10 ss(@)441.192 53 s %9/3 (')325.877 117 s(6)330.377 117 s rm 7 ss(1)359.772 130 s mf 10 ss(4) 359.772 119 s(?)368.172 121 s 348.772 119 357.772 119 -2.7 cv 16 69(@)441.192 109 b %9/2 (')325.877 131 s(=)330.377 127 s(=)330.377 131 s(7)330.377 131 s rm 7 ss(2) 350.431 130 s mf 10 ss(\()346.181 119 s(5)350.431 119 s(\()365.878 123 s(5) 370.128 123 s(=)384.747 127 s(7)384.747 127 s -1.823 435.259 147.065 410.495 143.078 m(=)404.645 127 s(J) 404.645 127.078 s(JL)404.645 127 s 392.747 133 407.645 133 3.469 cv(=) 416.827 127 s(J)416.827 129.039 s(JL)416.827 129 s(=)429.009 127 s(=) 429.009 131 s(5)429.009 131 s it 9 ss(3)420.827 120 s 208.333 137 432.009 149 18 cv mf 10 ss(@)441.192 109 s %9/1 rm 9.5 ss(hei)327.573 178.5 s it 9.5 ss(e)331.268 168.5 s mf 10 ss(') 325.877 197 s(2)330.377 197 s(@)441.192 189 s %10/5 (')446.664 51 s(6)451.164 51 s(@)573.998 53 s %10/4 (\243)457.164 37 s(')446.664 65 s(5)451.164 65 s(')490.921 71 s(=) 495.871 71 s(6)495.871 71 s(=)510.489 71 s(=)510.489 75 s(K)510.489 73 s (KL)510.489 75 s(')532.501 79 s(=)537.451 71 s(=)537.451 75 s(=) 537.451 79 s(K)537.451 73 s(KL)537.451 79 s mf 9 ss($)561.998 37 s mf 8 ss(!)564.763 53.8 s 459.164 77 565.451 86 12 cv mf 10 ss (@)573.998 53 s %10/3 1.85 477.123 112.081 451.914 106.082 m bi 10 ss(p)451.164 94.082 s rm 9.5 ss(- - - - - - - - - )11.822 297.128 97.5 ws it 9.5 ss( ) 452.977 97.5 s mf 10 ss(\()446.914 119 s(K)451.164 118.082 s(KL) 451.164 119 s 362.772 113 450.164 113 -5 cv it 10 ss(dolce)471.427 94 s mf 10 ss(6)463.427 121 s(')471.473 125 s(K)475.973 123.986 s(KL) 475.973 125 s it 9 ss(3)461.318 98.082 s mf 10 ss(=)495.871 127 s(=) 495.871 131 s(K)495.871 129 s(KM)495.871 131 s(6)537.451 125 s 16 69(@)573.998 109 b %10/2 (')446.664 131 s(=)451.164 127 s(=)451.164 131 s(5)451.164 131 s 437.009 138 454.164 138 4.146 cv(=)475.973 127 s(=)475.973 131 s(=) 475.973 135 s(7)475.973 135 s(=)495.871 127 s(=)495.871 131 s(=) 495.871 135 s(=)495.871 139 s(5)495.871 141 s(?)504.271 141 s rm 7 ss(5) 517.553 148 s mf 10 ss(')513.053 139 s(=)517.553 127 s(=)517.553 131 s(=) 517.553 135 s(=)517.553 139 s(7)517.553 139 s -1.851 568.066 145.007 543.301 151 m rm 7 ss(4)537.451 144 s mf 10 ss(=) 537.451 127 s(=)537.451 131 s(=)537.451 135 s(5)537.451 135 s(=) 549.634 127 s(=)549.634 131 s(J)549.634 132.052 s(JL)549.634 131 s(=) 561.816 127 s(J)561.816 129.104 s(JL)561.816 129 s it 9 ss(3) 552.483 156 s 459.164 147 564.816 149.314 15.343 cv mf 10 ss (@)573.998 109 s %10/1 (')446.664 197 s(4)451.164 197 s 333.377 204 454.164 204 5 cv rm 9.5 ss (- - - - - - - - - )11.822 352.806 178.5 ws(lig)508.473 178.5 s (- - - - - - - - - )11.822 350.433 168.5 ws it 9.5 ss(ver) 507.424 168.5 s mf 10 ss(3)510.489 187 s(@)573.998 189 s (FFFFFCCC)34 189 s (C)563.998 189 s (FFFFFCCC)34 109 s (C)563.998 109 s (FFFFFCCC)34 53 s (C)563.998 53 s pagesave restore showpage %%Trailer %%Pages: 1 pmw-5.22/testdist/outfiles/Test06.ps0000644000222100022210000043554114541067540015503 0ustar ph10ph10%%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol %%+ font PMW-Music %%Requirements: numcopies(1) %%EndComments %%BeginPaperSize: a4 a4 %%EndPaperSize %%BeginProlog %%Standard Header Omitted (testing) %%EndProlog %%BeginSetup %%IncludeResource: font Times-Roman /rm /rmX /Times-Roman inf %%IncludeResource: font Times-Italic /it /itX /Times-Italic inf %%IncludeResource: font Times-Bold /bf /bfX /Times-Bold inf %%IncludeResource: font Times-BoldItalic /bi /biX /Times-BoldItalic inf %%IncludeResource: font Symbol /sy /syX /Symbol inf %%IncludeResource: font PMW-Music /mf /mfX /PMW-Music inf %%EndSetup %%Page: 1 1 %%BeginPageSetup /pagesave save def %%EndPageSetup rm 18 ss(Symphon)258.379 760 s(y 1)-0.27 0 rs rm 12 ss (W)406.612 730 s(illiam Bo)-0.48 0 rs(yce \(1711)-0.12 0 rs rmX 12 ss (\215)sh rm 12 ss(1779\))sh(I)302.002 710 s rm 10 ss(V)65.665 667 s (iolin I)-0.6 0 rs mf 10 ss(!)104.12 663 s(')120.12 669 s(')124.62 675 s bf 11.8 ss(4)129.12 671 s(4)129.12 663.15 s rm 10 ss(V)64 623 s(iolin II) -0.6 0 rs mf 10 ss(!)104.12 619 s(')120.12 625 s(')124.62 631 s bf 11.8 ss(4)129.12 627 s(4)129.12 619.15 s rm 10 ss(V)70.25 579 s(iola) -0.6 0 rs mf 10 ss(#)104.12 575 s(')120.12 579 s(')124.62 585 s bf 11.8 ss(4)129.12 583 s(4)129.12 575.15 s rm 10 ss(Cello)70.225 540 s (Bass)71.615 530 s mf 10 ss(")103.62 531 s(')120.12 533 s(')124.62 539 s bf 11.8 ss(4)129.12 539 s(4)129.12 531.15 s mf 10 ss 16 531(@)104.12 663 b 100.62 679 531 k %1/4 1.884 163.084 526.987 143.77 521 m bi 10 ss(f)143.02 511 s mf 10 ss(6) 143.02 533 s(K)161.934 538.863 s(KL)161.934 547 s 1.838 200.913 528.918 181.599 532.915 m(K)180.849 544.915 s(KL) 180.849 545 s(6)199.763 541 s -1.884 269.059 559.124 237.136 549.228 m(J) 231.286 533.228 s(JL)231.286 529 s(5)262.809 543 s -1.838 306.889 549.002 287.574 553 m(5)281.724 537 s(J)300.639 533.085 s (JL)300.639 533 s(@)320.183 531 s %1/3 bi 10 ss(f)143.02 565 s mf 10 ss(6)143.02 587 s 1.884 200.913 568.876 181.599 574.863 m(K)180.849 586.863 s(KL) 180.849 587 s(6)199.763 581 s -1.814 269.059 599.05 237.136 595.06 m(J) 231.286 579.06 s(JL)231.286 579 s(5)262.809 583 s 1.884 301.789 566.876 282.474 572.863 m(K)281.724 584.863 s(KL) 281.724 587 s(6)300.639 579 s 16 547(@)320.183 575 b %1/2 bi 10 ss(f)143.02 609 s mf 10 ss(5)143.02 625 s(5)180.849 619 s -1.884 269.059 641.124 237.136 631.228 m(J)231.286 615.228 s(JL) 231.286 615 s(5)262.809 625 s -1.838 306.889 631.083 287.574 627.085 m(=) 281.724 613 s(J)281.724 611.085 s(JL)281.724 611 s(5)300.639 615 s 16 591(@)320.183 619 b %1/1 bi 10 ss(f)143.02 652 s mf 10 ss(6)143.02 673 s 1.811 216.675 654.955 181.599 658.953 m 1.811 216.675 657.955 200.513 659.797 m(K)180.849 670.953 s(KL) 180.849 671 s(K)199.763 668.797 s(KL)199.763 669 s(6)215.525 667 s -1.8 269.059 685 237.136 685 m -1.8 253.298 682 237.136 682 m(5) 231.286 669 s(J)247.048 669 s(JL)247.048 667 s(5)262.809 669 s(.) 282.724 667 s(7)300.639 663 s 16 635(@)320.183 663 b %1/0 bf 10 ss(Allegr)129.12 689 s(o)-0.18 0 rs %2/4 1.814 362.313 522.95 330.39 526.94 m mf 10 ss(K)329.64 538.94 s(KL) 329.64 539 s(6)361.163 535 s 1.803 425.359 526.975 393.436 528.954 m(K) 392.686 540.954 s(KL)392.686 541 s(6)424.209 539 s -1.814 493.505 549.01 461.582 553 m(5)455.732 537 s(J)487.255 533.06 s(JL) 487.255 533 s 1.884 526.234 524.876 506.919 530.863 m(K) 506.169 542.863 s(KL)506.169 543 s(6)525.084 537 s(@)543.998 531 s %2/3 (6)329.64 589 s(6)392.686 587 s 1.855 488.405 574.98 456.482 567 m(6) 455.732 579 s(K)487.255 586.88 s(KL)487.255 587 s 1.838 526.234 566.917 506.919 570.915 m(K)506.169 582.915 s(KL) 506.169 583 s(6)525.084 579 s 16 547(@)543.998 575 b %2/2 -1.831 367.413 633.075 335.49 627.106 m(=)329.64 613 s(J) 329.64 611.106 s(JL)329.64 611 s(5)361.163 617 s -1.884 430.459 639.124 398.536 629.228 m(=)392.686 613 s(J) 392.686 613.228 s(JL)392.686 613 s(5)424.209 623 s -1.814 493.505 631.01 461.582 635 m(5)455.732 619 s(J)487.255 615.06 s(JL) 487.255 615 s -1.884 531.334 641.124 512.019 635.137 m(=)506.169 613 s(J) 506.169 619.137 s(JL)506.169 611 s(5)525.084 625 s 528.084 622 542.998 622 -3.474 cv 16 591(@)543.998 619 b %2/1 -1.8 383.174 685 335.49 685 m -1.8 383.174 682 335.49 682 m(J) 329.64 669 s(JL)329.64 665 s(J)345.401 669 s(JL)345.401 667 s(5) 361.163 669 s(J)376.924 669 s(JL)376.924 667 s -1.8 446.22 687 398.536 687 m -1.8 446.22 684 398.536 684 m(J) 392.686 671 s(JL)392.686 667 s(J)408.447 671 s(JL)408.447 669 s(5) 424.209 671 s(J)439.97 671 s(JL)439.97 669 s -1.8 493.505 685 461.582 685 m -1.8 477.743 682 461.582 682 m(5) 455.732 669 s(J)471.493 669 s(JL)471.493 667 s(5)487.255 669 s(.) 507.169 667 s(8)525.084 677 s 16 635(@)543.998 663 b %2/0 (FFFFCCC)104.12 663 s (C)533.998 663 s (FFFFCCC)104.12 619 s (C)533.998 619 s (FFFFCCC)104.12 575 s (C)533.998 575 s (FFFFCCC)104.12 531 s (C)533.998 531 s (!)64 427.5 s(')80 433.5 s(')84.5 439.5 s(!)64 383.5 s(')80 389.5 s(') 84.5 395.5 s(#)64 339.5 s(')80 343.5 s(')84.5 349.5 s(")63.5 295.5 s(') 80 297.5 s(')84.5 303.5 s 16 295.5(@)64 427.5 b 60.5 443.5 295.5 k %3/4 1.884 110.224 287.376 97.75 291.242 m(K)97 303.242 s(KL)97 303.5 s(6) 109.074 299.5 s 1.808 142.422 291.462 121.898 293.452 m(K) 121.148 305.452 s(KL)121.148 305.5 s(6)141.272 303.5 s 1.884 182.669 295.862 162.146 289.5 m(6)161.396 301.5 s(K) 181.519 307.738 s(KL)181.519 311.5 s 1.808 222.917 293.49 202.393 291.5 m(6)201.643 303.5 s(K) 221.767 305.452 s(KL)221.767 305.5 s(@)241.891 295.5 s %3/3 (6)97 349.5 s(6)121.148 345.5 s(6)161.396 347.5 s 1.808 222.917 339.462 202.393 341.452 m(K)201.643 353.452 s(KL) 201.643 353.5 s(6)221.767 351.5 s 16 311.5(@)241.891 339.5 b %3/2 -1.884 115.324 411.624 102.85 407.758 m(J)97 391.758 s(JL)97 389.5 s 90 386.5 100 386.5 -3 cv(5)109.074 395.5 s -1.833 147.522 403.577 126.998 399.596 m(J)121.148 383.596 s(JL) 121.148 383.5 s(5)141.272 387.5 s(7)161.396 383.5 s(5)181.519 389.5 s(7) 221.767 387.5 s 16 355.5(@)241.891 383.5 b %3/1 1.884 110.224 421.366 97.75 417.5 m(6)97 429.5 s(K)109.074 433.242 s(K) 109.074 443.242 s(KL)109.074 443.5 s -1.8 157.584 451.5 126.998 451.5 m -1.8 157.584 448.5 126.998 448.5 m(J)121.148 435.5 s(JL)121.148 431.5 s(J) 131.21 435.5 s(JL)131.21 433.5 s(5)141.272 435.5 s(J)151.334 435.5 s(JL) 151.334 433.5 s 1.8 192.731 421.5 162.146 421.5 m 1.8 192.731 424.5 162.146 424.5 m(6)161.396 433.5 s(K)171.458 433.5 s(KL) 171.458 435.5 s(K)181.519 433.5 s(KL)181.519 437.5 s(K)191.581 433.5 s(KL) 191.581 435.5 s 1.8 232.979 423.5 202.393 423.5 m 1.8 232.979 426.5 202.393 426.5 m(6)201.643 435.5 s(K)211.705 435.5 s(KL) 211.705 437.5 s(K)221.767 435.5 s(KL)221.767 439.5 s(K)231.829 435.5 s(KL) 231.829 437.5 s 16 399.5(@)241.891 427.5 b %3/0 rm 10 ss(3)64 451.5 s 70.5 449.5 62 449.5 62 460.5 70.5 460.5 70.5 449.5 5 62 449.5 0.666 ll %4/4 1.884 269.201 289.376 248.678 295.738 m mf 10 ss(K)247.928 307.738 s(KL) 247.928 311.5 s(6)268.051 301.5 s 1.833 301.399 291.422 280.876 295.403 m(K)280.126 307.403 s(KL) 280.126 307.5 s(6)300.249 303.5 s 1.808 341.647 295.49 321.123 293.5 m(6) 320.373 305.5 s(K)340.497 307.452 s(KL)340.497 307.5 s 1.884 366.047 293.376 353.321 297.321 m(K)352.571 309.321 s(KL) 352.571 309.5 s(6)364.897 305.5 s(@)376.971 295.5 s %4/3 (6)247.928 351.5 s 1.833 301.399 341.481 280.876 337.5 m(6) 280.126 349.5 s(K)300.249 353.403 s(KL)300.249 353.5 s(6)320.373 351.5 s(.) 353.571 343.5 s(8)364.897 355.5 s 16 311.5(@)376.971 339.5 b %4/2 1.884 269.201 383.862 248.678 377.5 m(6)247.928 389.5 s(K) 268.051 395.738 s(KL)268.051 397.5 s -1.833 306.499 401.519 285.976 405.5 m(5)280.126 389.5 s(J) 300.249 385.597 s(JL)300.249 385.5 s -1.808 346.747 391.51 326.223 393.5 m(=)320.373 377.5 s(5) 320.373 377.5 s(=)340.497 377.5 s(J)340.497 375.548 s(JL)340.497 375.5 s(=) 352.571 377.5 s(7)352.571 377.5 s(8)364.897 391.5 s(>)364.897 391.5 s 16 355.5(@)376.971 383.5 b %4/1 1.894 269.201 432.252 248.678 425.5 m 1.894 259.139 431.941 248.678 428.5 m(6)247.928 437.5 s(K) 257.989 440.81 s(KL)257.989 441.5 s(=)268.051 445.5 s(K)268.051 444.12 s (KL)268.051 447.5 s 1.834 311.461 421.422 280.876 427.416 m 1.834 311.461 424.422 280.876 430.416 m(K)280.126 439.416 s(KL) 280.126 439.5 s(K)290.187 437.445 s(KL)290.187 437.5 s(K) 300.249 435.472 s(KL)300.249 435.5 s(6)310.311 433.5 s -1.833 346.747 443.519 326.223 447.5 m -1.833 336.685 442.471 326.223 444.5 m(5)320.373 431.5 s(J) 330.435 429.548 s(JL)330.435 429.5 s(J)340.497 427.596 s(JL) 340.497 427.5 s(.)353.571 431.5 s(8)364.897 441.5 s(>)364.897 441.5 s 16 399.5(@)376.971 427.5 b %4/0 %5/4 1.8 414.343 297.5 383.758 297.5 m 1.8 414.343 300.5 383.758 300.5 m(K) 383.008 309.5 s(KL)383.008 311.5 s(6)393.069 309.5 s(K)403.131 309.5 s(KL) 403.131 311.5 s(=)413.193 313.5 s(K)413.193 309.5 s(KL)413.193 313.5 s 1.8 454.591 299.5 424.005 299.5 m 1.8 454.591 302.5 424.005 302.5 m(=) 423.255 313.5 s(K)423.255 311.5 s(KL)423.255 315.5 s(=)433.317 313.5 s(K) 433.317 311.5 s(KL)433.317 313.5 s(=)443.379 313.5 s(K)443.379 311.5 s(KL) 443.379 315.5 s(6)453.441 311.5 s 1.803 494.838 295.474 464.253 297.462 m 1.803 494.838 298.474 464.253 300.462 m(K)463.503 309.462 s(KL) 463.503 309.5 s(K)473.565 308.808 s(KL)473.565 311.5 s(K) 483.627 308.154 s(KL)483.627 309.5 s(6)493.688 307.5 s 1.8 535.086 293.5 504.5 293.5 m 1.8 535.086 296.5 504.5 296.5 m(6) 503.75 305.5 s(K)513.812 305.5 s(KL)513.812 307.5 s(K)523.874 305.5 s(KL) 523.874 309.5 s(6)533.936 305.5 s(@)543.998 295.5 s %5/3 1.8 414.343 343.5 383.758 343.5 m 1.8 414.343 346.5 383.758 346.5 m(=) 383.008 357.5 s(K)383.008 355.5 s(KL)383.008 357.5 s(6)393.069 355.5 s(=) 403.131 357.5 s(K)403.131 355.5 s(KL)403.131 357.5 s(=)413.193 357.5 s(K) 413.193 355.5 s(KL)413.193 359.5 s 1.8 454.591 345.5 424.005 345.5 m 1.8 454.591 348.5 424.005 348.5 m(=)423.255 357.5 s(=)423.255 361.5 s(K) 423.255 357.5 s(KL)423.255 361.5 s(=)433.317 357.5 s(K)433.317 357.5 s(KL) 433.317 359.5 s(=)443.379 357.5 s(=)443.379 361.5 s(K)443.379 357.5 s(KL) 443.379 361.5 s(=)453.441 357.5 s(6)453.441 357.5 s 1.803 494.838 341.474 464.253 343.462 m 1.803 494.838 344.474 464.253 346.462 m(K)463.503 355.462 s(KL) 463.503 355.5 s(=)473.565 357.5 s(K)473.565 354.808 s(KL)473.565 357.5 s(K) 483.627 354.154 s(KL)483.627 355.5 s(6)493.688 353.5 s 1.8 535.086 339.5 504.5 339.5 m 1.8 535.086 342.5 504.5 342.5 m(6) 503.75 351.5 s(K)513.812 351.5 s(KL)513.812 353.5 s(K)523.874 351.5 s(KL) 523.874 355.5 s(6)533.936 351.5 s 16 311.5(@)543.998 339.5 b %5/2 1.8 414.343 379.5 383.758 379.5 m 1.8 414.343 382.5 383.758 382.5 m(K) 383.008 391.5 s(KL)383.008 393.5 s(6)393.069 391.5 s(K)403.131 391.5 s(KL) 403.131 393.5 s(K)413.193 391.5 s(KL)413.193 395.5 s 1.8 454.591 381.5 424.005 381.5 m 1.8 454.591 384.5 424.005 384.5 m(K) 423.255 393.5 s(KL)423.255 397.5 s(K)433.317 393.5 s(KL)433.317 395.5 s(K) 443.379 393.5 s(KL)443.379 397.5 s(6)453.441 393.5 s 1.803 494.838 377.474 464.253 379.462 m 1.803 494.838 380.474 464.253 382.462 m(K)463.503 391.462 s(KL) 463.503 391.5 s(K)473.565 390.808 s(KL)473.565 393.5 s(K) 483.627 390.154 s(KL)483.627 391.5 s(6)493.688 389.5 s -1.8 540.186 407.5 509.6 407.5 m -1.8 540.186 404.5 509.6 404.5 m(J) 503.75 391.5 s(JL)503.75 387.5 s(J)513.812 391.5 s(JL)513.812 389.5 s(5) 523.874 391.5 s(J)533.936 391.5 s(JL)533.936 387.5 s 16 355.5(@)543.998 383.5 b %5/1 (6)383.008 441.5 s 1.884 444.529 421.862 424.005 415.5 m(6) 423.255 427.5 s(>)423.255 427.5 s(K)443.379 433.738 s(KL)443.379 441.5 s(>) 443.379 441.5 s(6)463.503 441.5 s 1.875 525.024 429.493 504.5 423.5 m(6) 503.75 435.5 s(>)503.75 435.5 s(K)523.874 441.376 s(KL)523.874 441.5 s(>) 523.874 441.5 s 16 399.5(@)543.998 427.5 b %5/0 (FFFFCCCCCCC)64 427.5 s (C)533.998 427.5 s (FFFFCCCCCCC)64 383.5 s (C)533.998 383.5 s (FFFFCCCCCCC)64 339.5 s (C)533.998 339.5 s (FFFFCCCCCCC)64 295.5 s (C)533.998 295.5 s (!)64 192 s(')80 198 s(')84.5 204 s(!)64 148 s(')80 154 s(')84.5 160 s(#) 64 104 s(')80 108 s(')84.5 114 s(")63.5 60 s(')80 62 s(')84.5 68 s 16 60(@)64 192 b 60.5 208 60 k %6/4 (6)97 76 s(?)105.4 76 s(7)179.269 62 s(6)206.693 70 s(U)207.693 76 s 1.8 303.824 58 262.289 58 m 1.8 303.824 61 262.289 61 m(6)261.539 70 s 209.693 77 264.539 77 5 cv(K)275.251 70 s(KL)275.251 72 s(K)288.963 70 s (KL)288.963 74 s(6)302.674 70 s(@)316.386 60 s %6/3 (=)97 122 s(6)97 122 s(.)152.846 108 s(8)179.269 116 s(6)206.693 116 s(?) 215.093 116 s(=)288.963 122 s(8)288.963 124 s 16 76(@)316.386 104 b %6/2 1.802 139.284 143.981 97.75 145.974 m 1.802 139.284 146.981 97.75 148.974 m(K)97 157.974 s(KL)97 158 s(K) 110.711 157.316 s(KL)110.711 160 s(K)124.423 156.658 s(KL)124.423 158 s(6) 138.134 156 s -1.8 199.231 170 157.696 170 m -1.8 199.231 167 157.696 167 m(5)151.846 154 s(J)165.558 154 s(JL) 165.558 152 s(5)179.269 154 s(J)192.981 154 s(J)192.981 144 s(L) 192.981 144 s -1.8 254.078 160 212.543 160 m -1.8 254.078 157 212.543 157 m(=)206.693 142 s(J)206.693 144 s(JL) 206.693 142 s(5)220.404 144 s(=)234.116 142 s(J)234.116 144 s(JL) 234.116 142 s(=)247.828 142 s(J)247.828 144 s(JL)247.828 140 s -1.884 295.213 172.124 267.389 163.499 m(=)261.539 142 s(=)261.539 138 s(J) 261.539 147.499 s(JL)261.539 138 s(5)288.963 156 s 16 120(@)316.386 148 b %6/1 1.802 139.284 191.981 97.75 193.974 m 1.802 139.284 194.981 97.75 196.974 m(K)97 205.974 s(KL)97 206 s(K) 110.711 205.316 s(KL)110.711 208 s(K)124.423 204.658 s(KL)124.423 206 s(6) 138.134 204 s 1.8 194.131 186 152.596 186 m 1.8 194.131 189 152.596 189 m(K)151.846 198 s(KL)151.846 202 s(K) 165.558 198 s(KL)165.558 200 s(K)179.269 198 s(KL)179.269 202 s(6) 192.981 198 s -1.8 254.078 214 212.543 214 m -1.8 254.078 211 212.543 211 m(J)206.693 198 s(JL)206.693 196 s(5) 220.404 198 s(J)234.116 198 s(JL)234.116 196 s(J)247.828 198 s(JL) 247.828 194 s(7)261.539 192 s(8)288.963 206 s 16 164(@)316.386 192 b %6/0 rm 10 ss(6)64 216 s 70.5 214 62 214 62 225 70.5 225 70.5 214 5 62 214 0.666 ll %7/4 mf 10 ss(6)324.613 76 s 1.8 421.744 60 380.209 60 m 1.8 421.744 63 380.209 63 m(K)379.459 72 s(KL)379.459 76 s 327.613 82 382.459 82 5 cv(K)393.171 72 s(KL)393.171 74 s(K)406.882 72 s (KL)406.882 76 s(6)420.594 72 s(=)434.306 78 s(6)434.306 78 s 1.8 531.437 62 489.902 62 m 1.8 531.437 65 489.902 65 m(=)489.152 78 s(K) 489.152 74 s(KL)489.152 78 s 437.306 84 492.152 84 5 cv(K)502.864 74 s(KL) 502.864 76 s(=)516.576 78 s(K)516.576 74 s(KL)516.576 78 s(6) 530.287 74 s(@)543.999 60 s %7/3 1.841 353.186 109.981 325.363 104 m(6)324.613 116 s(=)352.036 122 s(K) 352.036 121.895 s(KL)352.036 122 s(.)380.459 108 s(=)406.882 122 s(8) 406.882 122 s 1.841 462.879 111.981 435.056 106 m(6)434.306 118 s(=) 461.729 122 s(K)461.729 123.895 s(KL)461.729 124 s(.)490.152 108 s(=) 516.576 122 s(8)516.576 124 s 16 76(@)543.999 104 b %7/2 1.802 366.897 143.981 325.363 145.974 m 1.802 366.897 146.981 325.363 148.974 m(K)324.613 157.974 s(KL) 324.613 158 s(K)338.324 157.316 s(KL)338.324 160 s(K)352.036 156.658 s(KL) 352.036 158 s(6)365.747 156 s 1.818 408.032 145.978 380.209 142 m(6) 379.459 154 s(K)406.882 157.921 s(KL)406.882 158 s 1.802 476.591 145.981 435.056 147.974 m 1.802 476.591 148.981 435.056 150.974 m(\()430.056 160 s(K) 434.306 159.974 s(KL)434.306 160 s(K)448.017 159.316 s(KL)448.017 162 s(K) 461.729 158.658 s(KL)461.729 160 s(6)475.441 158 s 1.818 517.726 147.978 489.902 144 m(6)489.152 156 s(K)516.576 159.921 s(KL) 516.576 160 s 16 120(@)543.999 148 b %7/1 1.802 366.897 191.981 325.363 193.974 m 1.802 366.897 194.981 325.363 196.974 m(K)324.613 205.974 s(KL) 324.613 206 s 291.963 212 327.613 212 5 cv(K)338.324 205.316 s(KL) 338.324 208 s(K)352.036 204.658 s(KL)352.036 206 s(6)365.747 204 s 1.841 408.032 195.981 380.209 190 m(6)379.459 202 s(K)406.882 207.895 s(KL) 406.882 208 s 1.802 476.591 193.981 435.056 195.974 m 1.802 476.591 196.981 435.056 198.974 m(K)434.306 207.974 s(KL) 434.306 208 s 409.882 214 437.306 214 5 cv(=)448.017 210 s(K) 448.017 207.316 s(KL)448.017 210 s(K)461.729 206.658 s(KL)461.729 208 s(6) 475.441 206 s 1.841 517.726 197.982 489.902 192 m(\()484.902 204 s(6) 489.152 204 s(=)516.576 210 s(K)516.576 209.896 s(KL)516.576 210 s 519.576 216 542.999 216 5 cv 16 164(@)543.999 192 b %7/0 (FFFFCCCCCCC)64 192 s (C)533.999 192 s (FFFFCCCCCCC)64 148 s (C)533.999 148 s (FFFFCCCCCCC)64 104 s (C)533.999 104 s (FFFFCCCCCCC)64 60 s (C)533.999 60 s rm 8 ss(Computer typesetting by Philip Hazel)423.112 30 s pagesave restore showpage %%Page: 2 2 %%BeginPageSetup /pagesave save def %%EndPageSetup rm 10 ss(2 )44.2 800 s( )558 800 s mf 10 ss(!)64 753 s(')80 759 s(') 84.5 765 s(!)64 709 s(')80 715 s(')84.5 721 s(#)64 665 s(')80 669 s(') 84.5 675 s(")63.5 621 s(')80 623 s(')84.5 629 s 16 621(@)64 753 b 60.5 769 621 k %8/4 (=)97 639 s(6)97 641 s 1.8 175.178 625 142.727 625 m 1.8 175.178 628 142.727 628 m(=)141.977 639 s(K)141.977 637 s(KL) 141.977 641 s 100 647 144.977 647 5 cv(=)152.661 639 s(K)152.661 637 s(KL) 152.661 639 s(=)163.344 639 s(K)163.344 637 s(KL)163.344 641 s(6) 174.028 637 s 1.879 201.032 625.002 187.705 629 m(\()182.705 643 s(=) 186.955 639 s(=)186.955 643 s(K)186.955 641 s(KL)186.955 643 s(=) 199.882 639 s(K)199.882 637.122 s(KL)199.882 639 s 1.807 235.487 630.98 213.72 629 m(=)212.97 639 s(6)212.97 641 s(=) 234.337 639 s(=)234.337 643 s(K)234.337 642.944 s(KL)234.337 643 s (@)255.704 621 s %8/3 1.866 119.517 674.985 97.75 669 m(6)97 681 s(=)118.367 683 s(=) 118.367 687 s(K)118.367 686.875 s(KL)118.367 687 s(.)142.977 669 s(=) 163.344 683 s(=)163.344 687 s(HK)163.344 685 s(KL)163.344 687 s 1.8 201.032 667 187.705 667 m(6)186.955 679 s(6)199.882 679 s 1.807 235.487 662.964 213.72 664.944 m(K)212.97 676.944 s(KL) 212.97 677 s(\()230.087 675 s(6)234.337 675 s 16 637(@)255.704 665 b %8/2 1.802 132.444 708.977 97.75 710.954 m 1.802 132.444 711.977 97.75 713.954 m(K)97 722.954 s(KL)97 723 s(K) 107.683 722.346 s(KL)107.683 725 s(K)118.367 721.737 s(KL)118.367 723 s(\() 127.044 721 s(6)131.294 721 s 1.829 164.494 710.983 142.727 707 m(6) 141.977 719 s(K)163.344 722.91 s(KL)163.344 723 s(8)186.955 725 s(\() 195.632 707 s(7)199.882 707 s -1.807 240.587 727.036 218.82 725.056 m(J) 212.97 709.056 s(JL)212.97 709 s(5)234.337 711 s 16 681(@)255.704 709 b %8/1 1.802 132.444 756.977 97.75 758.954 m 1.802 132.444 759.977 97.75 761.954 m(=)97 771 s(K)97 770.954 s(KL) 97 771 s 90 777 100 777 3 cv(=)107.683 771 s(K)107.683 770.346 s(KL) 107.683 773 s(=)118.367 771 s(K)118.367 769.737 s(KL)118.367 771 s(6) 131.294 769 s 1.866 164.494 760.985 142.727 755 m(6)141.977 767 s(=) 163.344 771 s(K)163.344 772.875 s(KL)163.344 773 s(>)163.344 773 s 1.884 201.032 746.876 187.705 751.007 m(=)186.955 771 s(K) 186.955 763.007 s(KL)186.955 773 s(6)199.882 759 s 1.8 246.17 747 213.72 747 m 1.8 246.17 750 213.72 750 m(6)212.97 759 s 202.882 766 215.97 766 2.926 cv(K)223.653 759 s(KL)223.653 763 s(K) 234.337 759 s(KL)234.337 761 s(6)245.02 759 s 16 725(@)255.704 753 b %8/0 rm 10 ss(8)64 777 s 70.5 775 62 775 62 786 70.5 786 70.5 775 5 62 775 0.666 ll %9/4 1.884 282.12 622.876 262.864 628.845 m mf 10 ss(=)262.114 639 s(=) 262.114 643 s(K)262.114 640.845 s(KL)262.114 645 s(6)280.97 635 s 1.82 307.761 626.996 294.54 625 m(6)293.79 637 s(=)306.611 639 s(K) 306.611 638.935 s(KL)306.611 639 s 1.884 352.738 621.747 330.971 615 m(6) 330.221 627 s(=)351.588 639 s(K)351.588 633.623 s(KL)351.588 641 s 1.88 378.379 618.879 365.159 622.871 m(K)364.409 634.871 s(KL) 364.409 635 s(6)377.229 631 s(@)390.049 621 s %9/3 1.884 282.12 662.876 262.864 668.845 m(=)262.114 683 s(K) 262.114 680.845 s(KL)262.114 685 s(\215)271.17 677 s(')274.67 675 s(\216) 279.17 677 s(6)280.97 675 s 1.82 307.761 658.939 294.54 660.935 m(K) 293.79 672.935 s(KL)293.79 673 s(6)306.611 671 s 1.829 352.738 668.983 330.971 665 m(6)330.221 677 s(K)351.588 680.91 s(KL) 351.588 681 s 1.884 378.379 663.098 365.159 659 m(6)364.409 671 s(K) 377.229 674.974 s(KL)377.229 677 s 16 637(@)390.049 665 b %9/2 1.884 282.12 704.876 262.864 710.845 m(K)262.114 722.845 s(KL) 262.114 723 s(6)280.97 717 s(6)293.79 715 s 1.884 352.738 707.747 330.971 701 m(6)330.221 713 s(K)351.588 719.623 s(KL) 351.588 723 s -1.88 383.479 729.121 370.259 725.129 m(J) 364.409 709.129 s(JL)364.409 709 s(5)377.229 713 s 16 681(@)390.049 709 b %9/1 (=)262.114 771 s(6)262.114 771 s 1.82 320.688 752.939 294.54 756.913 m 1.82 320.688 755.939 307.361 757.965 m(K)293.79 768.913 s(KL) 293.79 769 s(K)306.611 766.965 s(KL)306.611 767 s(\()315.288 765 s(6) 319.538 765 s 1.8 352.738 753 330.971 753 m 1.8 342.055 756 330.971 756 m(K)330.221 765 s(KL)330.221 767 s(6) 340.905 765 s(K)351.588 765 s(KL)351.588 767 s(.)365.409 757 s(8) 377.229 761 s 16 725(@)390.049 753 b %9/0 %10/4 1.824 421.219 620.934 397.209 624.919 m(K)396.459 636.919 s(KL) 396.459 637 s(6)420.069 633 s 1.807 463.953 624.964 442.186 626.944 m(=) 441.436 639 s(K)441.436 638.944 s(KL)441.436 639 s(6)462.803 637 s 1.829 506.688 618.927 484.92 622.91 m(K)484.17 634.91 s(KL)484.17 635 s(6) 505.538 631 s 1.884 532.328 622.876 519.108 626.974 m(=)518.358 639 s(K) 518.358 638.974 s(KL)518.358 641 s(6)531.178 635 s(@)543.998 621 s %10/3 (6)396.459 673 s(6)441.436 671 s 1.884 506.688 671.748 484.92 665 m(6) 484.17 677 s(=)505.538 683 s(K)505.538 683.624 s(KL)505.538 685 s 1.88 532.328 664.879 519.108 668.871 m(K)518.358 680.871 s(KL) 518.358 681 s(6)531.178 677 s 16 637(@)543.998 665 b %10/2 -1.854 426.319 731.1 402.309 725.122 m(J)396.459 709.122 s(JL) 396.459 709 s(5)420.069 715 s -1.884 469.053 735.124 447.286 728.377 m(J) 441.436 712.377 s(JL)441.436 711 s(\()458.553 719 s(5)462.803 719 s 1.829 506.688 700.927 484.92 704.91 m(K)484.17 716.91 s(KL)484.17 717 s(6) 505.538 713 s 1.884 532.328 701.098 519.108 697 m(6)518.358 709 s(K) 531.178 712.974 s(K)531.178 722.974 s(KL)531.178 723 s 534.178 729 542.998 729 2.646 cv 16 681(@)543.998 709 b %10/1 1.8 431.903 751 397.209 751 m 1.8 431.903 754 397.209 754 m(6) 396.459 763 s(\()405.136 765 s(K)409.386 763 s(KL)409.386 765 s(K) 420.069 763 s(KL)420.069 767 s(K)430.753 763 s(KL)430.753 765 s 1.8 474.637 753 442.186 753 m 1.8 474.637 756 442.186 756 m(6) 441.436 765 s(K)452.12 765 s(KL)452.12 767 s(K)462.803 765 s(KL) 462.803 769 s(K)473.487 765 s(KL)473.487 767 s 1.8 506.688 753 484.92 753 m 1.8 496.004 756 484.92 756 m(K)484.17 765 s (KL)484.17 767 s(6)494.854 765 s(K)505.538 765 s(KL)505.538 767 s(.) 519.358 757 s(=)531.178 771 s(=)531.178 775 s(HK)531.178 773 s(KL) 531.178 775 s 16 725(@)543.998 753 b %10/0 (FFFFCCCCCCC)64 753 s (C)533.998 753 s (FFFFCCCCCCC)64 709 s (C)533.998 709 s (FFFFCCCCCCC)64 665 s (C)533.998 665 s (FFFFCCCCCCC)64 621 s (C)533.998 621 s (!)64 566 s(')80 572 s(')84.5 578 s(!)64 522 s(')80 528 s(')84.5 534 s(#) 64 478 s(')80 482 s(')84.5 488 s(")63.5 434 s(')80 436 s(')84.5 442 s 16 434(@)64 566 b 60.5 582 434 k %11/4 1.867 112.177 433.889 97.75 437.885 m(K)97 449.885 s(KL)97 450 s(6) 111.027 446 s 1.884 149.583 425.876 125.805 433.247 m(=)125.055 452 s(K) 125.055 445.247 s(KL)125.055 452 s(6)148.433 438 s 1.8 243.097 425.988 172.561 427.963 m(K)171.811 439.963 s(KL) 171.811 440 s(K)195.19 439.309 s(K)195.19 449.309 s(KL)195.19 450 s(\() 214.318 442 s(K)218.568 438.654 s(KL)218.568 442 s(6)241.947 438 s (@)265.325 434 s %11/3 (=)97 496 s(6)97 496 s 1.825 149.583 475.933 125.805 479.927 m(K) 125.055 491.927 s(KL)125.055 492 s(\()144.183 488 s(6)148.433 488 s 1.8 196.34 478 172.561 478 m(6)171.811 490 s(6)195.19 490 s 1.8 243.097 472 219.318 472 m(6)218.568 484 s(6)241.947 484 s 16 450(@)265.325 478 b %11/2 1.884 112.177 528.472 97.75 524 m(6)97 536 s 90 542 100 542 3 cv(=) 111.027 540 s(K)111.027 540.348 s(KL)111.027 542 s 1.806 149.583 515.966 125.805 517.963 m(K)125.055 529.963 s(KL) 125.055 530 s(6)148.433 528 s 1.856 196.34 519.992 172.561 514 m(6) 171.811 526 s(K)195.19 531.891 s(KL)195.19 532 s -1.825 248.197 536.006 224.418 540 m(5)218.568 524 s(\()237.697 520 s(J) 241.947 520.073 s(JL)241.947 520 s 16 494(@)265.325 522 b %11/1 1.884 112.177 568.472 97.75 564 m(6)97 576 s(=)111.027 584 s(=) 111.027 588 s(K)111.027 580.348 s(KL)111.027 590 s 1.8 161.272 566 125.805 566 m 1.8 161.272 569 125.805 569 m(\() 120.805 578 s(6)125.055 578 s(K)136.744 578 s(KL)136.744 580 s(K) 148.433 578 s(KL)148.433 582 s(K)160.122 578 s(KL)160.122 580 s 1.8 208.029 568 172.561 568 m 1.8 208.029 571 172.561 571 m(6) 171.811 580 s(K)183.501 580 s(KL)183.501 582 s(=)195.19 584 s(K) 195.19 580 s(KL)195.19 584 s(K)206.879 580 s(KL)206.879 582 s 1.894 254.786 552.177 219.318 563.845 m 1.894 254.786 555.177 219.318 566.845 m(K)218.568 575.845 s(KL) 218.568 582 s(6)230.257 572 s(K)241.947 568.154 s(KL)241.947 570 s(K) 253.636 564.308 s(KL)253.636 568 s 16 538(@)265.325 566 b %11/0 rm 10 ss(11)64 590 s 75.5 588 62 588 62 599 75.5 599 75.5 588 5 62 588 0.666 ll %12/4 -1.884 292.907 455.438 278.188 460 m mf 10 ss(5)272.338 444 s(J) 286.657 439.562 s(JL)286.657 434 s -1.817 330.313 454.055 315.886 452.065 m(J)310.036 436.065 s(JL) 310.036 436 s(5)324.063 438 s(5)338.383 430 s(-)358.087 438 s (B)383.35 434 s(@)381.45 434 s(I)378.95 438 s %12/3 (6)272.338 484 s 1.817 325.213 471.945 310.786 473.935 m(K) 310.036 485.935 s(KL)310.036 486 s(6)324.063 484 s(6)338.383 484 s(-) 358.087 482 s 16 450(B)383.35 478 b 16 450(@)381.45 478 b(I)378.95 482 s %12/2 (7)272.338 522 s(5)286.657 522 s(\()319.388 520 s(7)324.063 520 s(5) 338.383 522 s(-)358.087 526 s 16 494(B)383.35 522 b 16 494(@)381.45 522 b(I)378.95 526 s %12/1 -1.82 304.597 582.175 278.188 586.162 m -1.82 304.597 579.175 292.507 581 m(J)272.338 570.162 s(JL)272.338 570 s(5) 286.657 568 s(J)298.347 566.235 s(JL)298.347 566 s(5)310.036 568 s(5) 338.383 566 s(-)358.087 570 s 16 538(B)383.35 566 b 16 538(@)381.45 566 b(I)378.95 570 s %12/0 %13/4 bi 10 ss(p)391.363 424 s mf 10 ss(.)391.363 438 s 1.8 451.176 432 405.14 432 m(6)404.39 444 s(>)404.39 446 s(=) 435.998 452 s(=)435.998 456 s(K)435.998 444 s(K)435.998 454 s(KL) 435.998 458 s(>)435.998 458 s(6)450.026 444 s(>)450.026 446 s(.) 465.054 438 s 1.8 521.77 432 478.831 432 m(6)478.081 444 s(>) 478.081 446 s(=)497.241 452 s(=)497.241 456 s(K)497.241 444 s(K) 497.241 454 s(KL)497.241 458 s(>)497.241 458 s(6)520.62 444 s(>) 520.62 446 s(@)543.998 434 s %13/3 bi 10 ss(p)391.363 468 s mf 10 ss(.)391.363 482 s -1.8 456.276 506 410.24 506 m(J)404.39 490 s(J)404.39 480 s(JL) 404.39 476 s(>)404.39 468 s(5)435.998 490 s(>)435.998 482 s(J) 450.026 490 s(J)450.026 480 s(JL)450.026 476 s(>)450.026 468 s(.) 465.054 482 s -1.8 526.87 506 483.931 506 m(J)478.081 490 s(J) 478.081 480 s(JL)478.081 476 s(>)478.081 468 s(5)497.241 490 s(>) 497.241 482 s(J)520.62 490 s(J)520.62 480 s(JL)520.62 476 s(>) 520.62 468 s 16 450(@)543.998 478 b %13/2 bi 10 ss(p)391.363 512 s mf 10 ss(.)391.363 526 s -1.8 456.276 546 410.24 546 m(')399.89 526 s(J)404.39 530 s(JL) 404.39 526 s(>)404.39 518 s(5)435.998 530 s(>)435.998 522 s(J) 450.026 530 s(JL)450.026 526 s(>)450.026 518 s(.)465.054 526 s -1.8 526.87 544 483.931 544 m(J)478.081 528 s(J)478.081 518 s(L) 478.081 518 s(>)478.081 510 s(\()492.991 528 s(5)497.241 528 s(>) 497.241 518 s(\()516.37 514 s(=)520.62 516 s(J)520.62 528 s(J) 520.62 518 s(JL)520.62 514 s(>)520.62 506 s 16 494(@)543.998 522 b %13/1 1.8 424.7 566 391.113 566 m 1.8 424.7 569 412.611 569 m 1.8 424.7 572 412.611 572 m bi 10 ss(p)390.363 556 s mf 10 ss(K) 390.363 578 s(KL)390.363 580 s(?)398.763 582 s(\210)390.363 588 s(\() 407.611 578 s(6)411.861 578 s(K)423.55 578 s(KL)423.55 580 s 1.884 451.176 561.876 436.748 566.348 m(')431.498 584 s(=)435.998 584 s(K) 435.998 578.348 s(KL)435.998 584 s(>)435.998 584 s(6)450.026 574 s(>) 450.026 574 s 1.807 486.702 561.992 464.804 560 m 1.807 486.702 564.992 481.702 564.537 m(\()459.804 572 s(6)464.054 572 s(?) 472.454 574 s(\210)464.054 585 s(K)485.552 573.956 s(KL)485.552 574 s 1.8 533.459 560 497.991 560 m 1.8 533.459 563 497.991 563 m(K) 497.241 572 s(KL)497.241 576 s(6)508.931 572 s(K)520.62 572 s(KL) 520.62 574 s(K)532.309 572 s(KL)532.309 576 s 16 538(@)543.998 566 b %13/0 (FFFFCCCCCCC)64 566 s (C)533.998 566 s (FFFFCCCCCCC)64 522 s (C)533.998 522 s (FFFFCCCCCCC)64 478 s (C)533.998 478 s (FFFFCCCCCCC)64 434 s (C)533.998 434 s (!)64 379 s(')80 385 s(')84.5 391 s(!)64 335 s(')80 341 s(')84.5 347 s(#) 64 291 s(')80 295 s(')84.5 301 s(")63.5 247 s(')80 249 s(')84.5 255 s 16 247(@)64 379 b 60.5 395 247 k %14/4 1.884 125.117 251.483 97.75 243 m(6)97 255 s(>)97 255 s(=)123.967 265 s(=) 123.967 269 s(K)123.967 263.359 s(KL)123.967 269 s(>)123.967 269 s 1.875 179.051 246.883 151.684 254.874 m(=)150.934 265 s(K) 150.934 266.874 s(KL)150.934 267 s(>)150.934 267 s(6)177.901 259 s(>) 177.901 259 s 1.842 232.985 246.912 205.618 252.905 m(=)204.868 265 s(K) 204.868 264.905 s(KL)204.868 265 s(>)204.868 265 s(6)231.835 259 s(>) 231.835 259 s 1.819 286.92 238.942 259.553 242.937 m(K)258.803 254.937 s (KL)258.803 255 s(>)258.803 255 s(6)285.77 251 s(>)285.77 251 s (@)312.737 247 s %14/3 1.884 125.117 287.483 97.75 279 m(6)97 291 s(>)97 291 s(K) 123.967 299.359 s(KL)123.967 305 s(>)123.967 305 s 1.842 179.051 292.993 151.684 287 m(6)150.934 299 s(>)150.934 299 s(K) 177.901 304.905 s(KL)177.901 305 s(>)177.901 305 s(6)204.868 305 s 1.8 286.92 293 259.553 293 m(6)258.803 305 s(>)258.803 305 s(6) 285.77 305 s(>)285.77 305 s 16 263(@)312.737 291 b %14/2 (.)98 339 s(6)123.967 343 s(\()173.226 341 s(8)177.901 341 s(6) 204.868 343 s(z.)259.803 339 s(.)259.103 335 s 1.8 300.403 333 273.036 333 m 1.8 300.403 336 273.036 336 m(K) 272.286 345 s(KL)272.286 347 s(6)285.77 345 s(K)299.253 345 s(KL) 299.253 347 s 16 307(@)312.737 335 b %14/1 1.8 138.6 373 97.75 373 m 1.8 138.6 376 97.75 376 m(K)97 385 s(KL) 97 387 s(\()106.233 385 s(6)110.483 385 s(K)123.967 385 s(KL) 123.967 387 s(K)137.45 385 s(K)137.45 395 s(L)137.45 395 s 1.8 192.535 377 151.684 377 m 1.8 192.535 380 151.684 380 m(K) 150.934 389 s(KL)150.934 393 s(K)164.417 389 s(KL)164.417 391 s(K) 177.901 389 s(KL)177.901 393 s(6)191.385 389 s 1.802 246.469 376.981 205.618 378.941 m 1.802 246.469 379.981 205.618 381.941 m(K)204.868 390.941 s(KL) 204.868 391 s(K)218.352 390.294 s(KL)218.352 393 s(K)231.835 389.647 s(KL) 231.835 391 s(6)245.319 389 s 1.833 300.403 382.965 259.553 375 m 1.833 300.403 385.965 259.553 378 m(6)258.803 387 s(K)272.286 389.629 s(KL) 272.286 395 s(K)285.77 392.258 s(KL)285.77 393 s(K)299.253 394.887 s(KL) 299.253 395 s 16 351(@)312.737 379 b %14/0 rm 10 ss(14)64 403 s 75.5 401 62 401 62 412 75.5 412 75.5 401 5 62 401 0.666 ll %15/4 1.804 351.139 246.977 323.676 245 m mf 10 ss(6)322.926 257 s(>) 322.926 259 s(K)349.989 258.948 s(KL)349.989 259 s(>)349.989 259 s 1.819 405.074 244.942 377.706 248.937 m(')372.456 261 s(K) 376.956 260.937 s(KL)376.956 261 s(>)376.956 261 s(6)403.924 257 s(>) 403.924 259 s(6)430.891 259 s 1.8 531.665 247 490.814 247 m 1.8 531.665 250 490.814 250 m(6)490.064 259 s 433.891 265 493.064 265 5 cv(\()499.298 261 s(K)503.548 259 s(KL)503.548 261 s(\()512.781 263 s(K) 517.031 259 s(KL)517.031 263 s(6)530.515 259 s(@)543.999 247 s %15/3 (6)322.926 303 s 1.842 405.074 290.993 377.706 285 m(6)376.956 297 s(>) 376.956 299 s(K)403.924 302.905 s(KL)403.924 303 s(>)403.924 303 s(6) 430.891 299 s 1.819 518.181 282.942 490.814 286.937 m(K) 490.064 298.937 s(KL)490.064 299 s(>)490.064 299 s(\()512.356 295 s(6) 517.031 295 s(>)517.031 295 s 16 263(@)543.999 291 b %15/2 1.802 364.623 328.981 323.676 330.946 m 1.802 364.623 331.981 359.623 332.221 m(K)322.926 342.946 s(KL) 322.926 343 s(?)331.326 343 s(\215)352.693 343 s(')356.193 341 s(\216) 360.693 343 s(6)363.473 341 s(')372.456 339 s(5)376.956 339 s -1.842 464.108 347.007 436.741 353 m(5)430.891 337 s(>)430.891 327 s(J) 457.858 331.095 s(JL)457.858 331 s(>)457.858 323 s(\()485.814 327 s(=) 490.064 329 s(7)490.064 327 s(>)490.064 319 s(8)517.031 345 s(>) 517.031 347 s 16 307(@)543.999 335 b %15/1 1.8 364.623 383 323.676 383 m 1.8 364.623 386 323.676 386 m(') 318.426 397 s(=)322.926 397 s(K)322.926 395 s(KL)322.926 397 s(6) 336.506 395 s(=)349.989 397 s(K)349.989 395 s(KL)349.989 397 s(6) 363.473 395 s 1.819 418.557 374.941 377.706 380.905 m 1.819 418.557 377.941 377.706 383.905 m(K)376.956 392.905 s(KL) 376.956 393 s(K)390.44 390.937 s(KL)390.44 391 s(K)403.924 388.968 s(KL) 403.924 389 s(6)417.407 387 s 1.801 477.731 370.983 431.641 372.964 m 1.801 477.731 373.983 431.641 375.964 m(\()426.641 385 s(K) 430.891 384.964 s(KL)430.891 385 s(K)444.374 384.385 s(KL)444.374 387 s(K) 457.858 383.805 s(KL)457.858 385 s(\215\(\216)466.531 383 s(6) 476.581 383 s 1.884 518.181 377.483 490.814 369 m(6)490.064 381 s(K) 517.031 389.359 s(KL)517.031 395 s(>)517.031 395 s 16 351(@)543.999 379 b %15/0 (FFFFCCCCCCC)64 379 s (C)533.999 379 s (FFFFCCCCCCC)64 335 s (C)533.999 335 s (FFFFCCCCCCC)64 291 s (C)533.999 291 s (FFFFCCCCCCC)64 247 s (C)533.999 247 s (!)64 192 s(')80 198 s(')84.5 204 s(!)64 148 s(')80 154 s(')84.5 160 s(#) 64 104 s(')80 108 s(')84.5 114 s(")63.5 60 s(')80 62 s(')84.5 68 s 16 60(@)64 192 b 60.5 208 60 k %16/4 1.8 137.776 64 97.75 64 m 1.8 137.776 67 97.75 67 m(=)97 78 s(K)97 76 s(KL) 97 78 s(\()105.958 76 s(6)110.208 76 s(=)123.417 78 s(K)123.417 76 s(KL) 123.417 78 s(=)136.626 78 s(K)136.626 76 s(KL)136.626 80 s 1.8 190.612 66 150.585 66 m 1.8 190.612 69 150.585 69 m(=)149.835 78 s(=) 149.835 82 s(K)149.835 78 s(KL)149.835 82 s(=)163.044 78 s(K) 163.044 78 s(KL)163.044 80 s(=)176.253 78 s(=)176.253 82 s(K) 176.253 78 s(KL)176.253 82 s(=)189.462 78 s(6)189.462 78 s 1.801 254.554 61.983 208.974 63.942 m 1.801 254.554 64.983 208.974 66.942 m(K)208.224 75.942 s(KL)208.224 76 s(=) 221.433 78 s(K)221.433 75.375 s(KL)221.433 78 s(\215\(\216)230.145 76 s(K) 240.195 74.568 s(KL)240.195 76 s(6)253.404 74 s 1.819 294.181 63.995 267.363 60 m(6)266.613 72 s(>)266.613 72 s(\215\(\216) 282.981 76 s(K)293.031 75.936 s(KL)293.031 76 s(>)293.031 76 s (@)319.449 60 s %16/3 -1.802 142.876 128.02 102.85 126.059 m -1.802 142.876 125.02 102.85 123.059 m(J)97 110.059 s(JL)97 110 s(\() 105.958 108 s(J)110.208 110.706 s(JL)110.208 108 s(J)123.417 111.353 s(JL) 123.417 110 s(5)136.626 112 s 1.8 190.612 98 150.585 98 m 1.8 190.612 101 150.585 101 m(K)149.835 110 s(KL)149.835 114 s(K) 163.044 110 s(KL)163.044 112 s(K)176.253 110 s(KL)176.253 114 s(6) 189.462 110 s -1.8 259.654 126 214.074 126 m -1.8 259.654 123 214.074 123 m(\215\(\216)198.174 108 s(J)208.224 110 s(JL) 208.224 108 s(5)221.433 110 s(J)240.195 110 s(JL)240.195 108 s(J) 253.404 110 s(JL)253.404 106 s -1.819 299.281 124.059 272.463 120.064 m(J) 266.613 104.064 s(JL)266.613 104 s(>)266.613 96 s(5)293.031 108 s(>) 293.031 100 s 16 76(@)319.449 104 b %16/2 1.802 137.776 145.98 97.75 147.941 m 1.802 137.776 148.98 97.75 150.941 m(K)97 159.941 s(KL)97 160 s(K) 110.208 159.294 s(KL)110.208 162 s(K)123.417 158.647 s(KL)123.417 160 s(6) 136.626 158 s 1.8 190.612 142 150.585 142 m 1.8 190.612 145 150.585 145 m(K)149.835 154 s(KL)149.835 156 s(\() 158.794 154 s(6)163.044 154 s(K)176.253 154 s(KL)176.253 156 s(K) 189.462 154 s(KL)189.462 160 s 1.801 254.554 143.983 208.974 145.942 m 1.801 254.554 146.983 208.974 148.942 m(K)208.224 157.942 s(KL) 208.224 158 s(K)221.433 157.375 s(KL)221.433 160 s(K)240.195 156.568 s(KL) 240.195 158 s(6)253.404 156 s 1.819 294.181 145.995 267.363 142 m(6) 266.613 154 s(K)293.031 157.936 s(KL)293.031 158 s 16 120(@)319.449 148 b %16/1 (6)97 208 s 1.884 177.403 190.313 150.585 182 m(6)149.835 194 s(>) 149.835 196 s(K)176.253 202.189 s(KL)176.253 208 s(>)176.253 208 s(6) 208.224 208 s(z.)267.613 196 s(.)266.913 192 s 1.819 307.39 193.941 280.572 197.936 m 1.819 307.39 196.941 280.572 200.936 m(')275.322 210 s(=)279.822 210 s(K) 279.822 209.936 s(KL)279.822 210 s(K)293.031 207.968 s(KL)293.031 208 s(6) 306.24 206 s 16 164(@)319.449 192 b %16/0 rm 10 ss(16)64 216 s 75.5 214 62 214 62 225 75.5 225 75.5 214 5 62 214 0.666 ll %17/4 1.884 354.941 51.876 328.124 60.189 m mf 10 ss(=)327.374 78 s(K) 327.374 72.189 s(KL)327.374 78 s(>)327.374 78 s(6)353.791 64 s(>) 353.791 64 s 1.884 407.777 62.313 380.959 54 m(6)380.209 66 s(>) 380.209 68 s(=)406.627 78 s(K)406.627 74.189 s(KL)406.627 80 s(>) 406.627 80 s 1.884 450.045 55.876 433.795 60.913 m(=)433.045 78 s(=) 433.045 82 s(K)433.045 72.913 s(KL)433.045 82 s(>)433.045 82 s(6) 448.895 68 s(>)448.895 68 s 1.808 505.522 61.962 465.496 58 m(6) 464.746 70 s(>)464.746 72 s(')499.422 74 s(K)504.372 73.922 s(KL) 504.372 74 s(>)504.372 74 s(@)543.999 60 s %17/3 1.878 354.941 105.991 328.124 98 m(6)327.374 110 s(>)327.374 112 s(K) 353.791 117.872 s(KL)353.791 118 s(>)353.791 118 s 1.819 407.777 103.995 380.959 100 m(6)380.209 112 s(>)380.209 112 s(K) 406.627 115.936 s(KL)406.627 116 s(>)406.627 116 s 1.853 450.045 97.902 433.795 101.899 m(K)433.045 113.899 s(KL) 433.045 114 s(>)433.045 116 s(6)448.895 110 s(>)448.895 112 s 1.835 505.522 111.965 465.496 104 m(6)464.746 116 s(>)464.746 116 s(=) 504.372 122 s(K)504.372 123.885 s(KL)504.372 124 s(>)504.372 124 s 16 76(@)543.999 104 b %17/2 (7)327.374 150 s(6)353.791 156 s(\()401.952 154 s(8)406.627 154 s 1.884 450.045 149.037 433.795 144 m(6)433.045 156 s(K)448.895 160.913 s(KL) 448.895 164 s(6)464.746 156 s 467.746 162 542.999 162 5 cv 16 120(@)543.999 148 b %17/1 1.8 368.15 188 328.124 188 m 1.8 368.15 191 328.124 191 m(K) 327.374 200 s(KL)327.374 204 s(K)340.582 200 s(KL)340.582 202 s(K) 353.791 200 s(KL)353.791 204 s(6)367 200 s 1.8 420.986 190 380.959 190 m 1.8 420.986 193 380.959 193 m(K)380.209 202 s(KL)380.209 206 s(K) 393.418 202 s(KL)393.418 204 s(K)406.627 202 s(KL)406.627 206 s(6) 419.836 202 s 1.884 450.045 201.037 433.795 196 m(6)433.045 208 s(=) 448.895 210 s(=)448.895 214 s(K)448.895 212.913 s(KL)448.895 214 s 1.819 479.104 197.942 465.496 199.928 m 1.819 479.104 200.942 465.496 202.928 m 1.819 479.104 203.942 465.496 205.928 m(=)464.746 210 s(K) 464.746 211.928 s(KL)464.746 212 s(')473.454 210 s(=)477.954 210 s(6) 477.954 210 s(z.)492.163 196 s(.)491.463 192 s 1.819 518.731 193.942 505.122 195.928 m 1.819 518.731 196.942 505.122 198.928 m 1.819 518.731 199.942 505.122 201.928 m(K)504.372 207.928 s(KL) 504.372 208 s(6)517.581 206 s(z.)531.79 196 s(.)531.09 192 s 16 164(@)543.999 192 b %17/0 (FFFFCCCCCCC)64 192 s (C)533.999 192 s (FFFFCCCCCCC)64 148 s (C)533.999 148 s (FFFFCCCCCCC)64 104 s (C)533.999 104 s (FFFFCCCCCCC)64 60 s (C)533.999 60 s pagesave restore showpage %%Page: 3 3 %%BeginPageSetup /pagesave save def %%EndPageSetup rm 10 ss( )44.2 800 s( 3)553 800 s mf 10 ss(!)64 753 s(')80 759 s(') 84.5 765 s(!)64 709 s(')80 715 s(')84.5 721 s(#)64 665 s(')80 669 s(') 84.5 675 s(")63.5 621 s(')80 623 s(')84.5 629 s 16 621(@)64 753 b 60.5 769 621 k %18/4 1.806 121.188 622.992 97.75 621 m(6)97 633 s(>)97 633 s(')115.538 635 s(K) 120.038 634.958 s(KL)120.038 635 s(>)120.038 635 s 1.819 150.25 620.998 136.837 619 m(6)136.087 631 s(>)136.087 633 s(K) 149.1 632.938 s(KL)149.1 633 s(>)149.1 633 s 1.884 176.275 617.158 162.862 613 m(6)162.112 625 s(>)162.112 625 s(K) 175.125 629.034 s(KL)175.125 633 s(>)175.125 633 s 1.878 212.326 618.88 198.913 622.877 m(K)198.163 634.877 s(KL) 198.163 635 s(>)198.163 635 s(6)211.176 631 s(>)211.176 633 s (@)224.188 621 s %18/3 1.884 121.188 658.876 97.75 666.141 m(K)97 678.141 s(KL)97 679 s(>) 97 679 s(6)120.038 671 s(>)120.038 673 s 1.819 150.25 666.94 136.837 668.938 m(')131.587 681 s(K) 136.087 680.938 s(KL)136.087 681 s(>)136.087 681 s(6)149.1 679 s(>) 149.1 679 s 1.805 188.469 664.969 162.862 666.966 m 1.805 188.469 667.969 183.469 668.359 m(K)162.112 678.966 s(KL) 162.112 679 s(?)170.512 681 s(>)162.112 679 s(6)187.319 677 s(>) 187.319 677 s 1.884 212.326 667.158 198.913 663 m(6)198.163 675 s(>) 198.163 677 s(K)211.176 679.034 s(KL)211.176 681 s(>)211.176 681 s 16 637(@)224.188 665 b %18/2 1.822 110.344 702.937 97.75 704.926 m 1.822 110.344 705.937 97.75 707.926 m(K)97 716.926 s(KL)97 717 s 90 723 100 723 3 cv(\()104.944 715 s(6)109.194 715 s(6)120.038 717 s(8) 149.1 715 s -1.894 193.569 724.576 167.962 733 m -1.894 193.569 721.576 180.975 725.719 m(5)162.112 717 s(J) 175.125 712.719 s(JL)175.125 707 s(J)187.319 708.707 s(JL)187.319 705 s -1.884 217.426 733.124 204.013 728.966 m(=)198.163 703 s(J) 198.163 712.966 s(JL)198.163 703 s(5)211.176 717 s 16 681(@)224.188 709 b %18/1 1.804 126.393 754.976 97.75 753 m 1.804 126.393 757.976 121.393 757.631 m(6)97 765 s(?)105.4 765 s(K) 125.243 766.948 s(KL)125.243 767 s(6)136.087 763 s 1.8 188.469 747 162.862 747 m 1.8 188.469 750 175.875 750 m(K) 162.112 759 s(KL)162.112 765 s(K)175.125 759 s(K)175.125 769 s(L) 175.125 769 s(\()183.069 759 s(6)187.319 759 s 1.884 212.326 753.158 198.913 749 m(6)198.163 761 s(>)198.163 761 s(K) 211.176 765.034 s(KL)211.176 767 s(>)211.176 767 s 16 725(@)224.188 753 b %18/0 rm 10 ss(18)64 777 s 75.5 775 62 775 62 786 75.5 786 75.5 775 5 62 775 0.666 ll %19/4 1.806 254.882 622.992 231.444 621 m mf 10 ss(6)230.694 633 s(>) 230.694 633 s(')249.232 635 s(K)253.732 634.958 s(KL)253.732 635 s(>) 253.732 635 s 1.819 283.944 620.998 270.531 619 m(6)269.781 631 s(>) 269.781 633 s(K)282.794 632.938 s(KL)282.794 633 s(>)282.794 633 s 1.884 309.969 617.158 296.556 613 m(6)295.806 625 s(>)295.806 625 s(=) 308.819 639 s(K)308.819 629.034 s(KL)308.819 639 s(>)308.819 639 s 1.829 344.669 618.928 322.582 622.925 m(\()317.582 635 s(K) 321.832 634.925 s(KL)321.832 635 s(>)321.832 635 s(6)343.519 631 s(>) 343.519 633 s(@)365.207 621 s %19/3 1.857 254.882 672.976 231.444 667 m(6)230.694 679 s(>)230.694 679 s(=) 253.732 683 s(K)253.732 684.874 s(KL)253.732 685 s(>)253.732 685 s 1.819 283.944 666.94 270.531 668.938 m(')265.281 681 s(K) 269.781 680.938 s(KL)269.781 681 s(>)269.781 681 s(6)282.794 679 s(>) 282.794 679 s 1.878 309.969 662.88 296.556 666.877 m(K)295.806 678.877 s (KL)295.806 679 s(>)295.806 679 s(6)308.819 675 s(>)308.819 677 s 1.884 344.669 665.846 322.582 659 m(6)321.832 671 s(>)321.832 673 s(\() 339.269 681 s(K)343.519 677.722 s(KL)343.519 681 s(>)343.519 681 s 16 637(@)365.207 665 b %19/2 -1.822 249.138 731.011 236.544 733 m -1.822 249.138 728.011 236.544 730 m(5)230.694 717 s 214.176 715 233.694 715 -4.855 cv(\()238.638 715 s(J)242.888 715.074 s(JL) 242.888 715 s(6)253.732 717 s(8)282.794 715 s(6)295.806 717 s(z.) 322.832 713 s(.)322.132 709 s 1.829 355.513 704.928 333.425 708.925 m 1.829 355.513 707.928 333.425 711.925 m(K)332.675 720.925 s(KL) 332.675 721 s(K)343.519 718.963 s(KL)343.519 719 s(6)354.363 717 s 16 681(@)365.207 709 b %19/1 1.804 260.087 754.976 231.444 753 m 1.804 260.087 757.976 255.087 757.631 m(6)230.694 765 s(?)239.094 765 s(K) 258.937 766.948 s(KL)258.937 767 s(6)269.781 763 s(6)295.806 761 s(z.) 322.832 757 s(.)322.132 753 s 1.829 355.513 752.928 333.425 756.925 m 1.829 355.513 755.928 333.425 759.925 m(K)332.675 768.925 s(KL) 332.675 769 s(K)343.519 766.963 s(KL)343.519 767 s(6)354.363 765 s 16 725(@)365.207 753 b %19/0 %20/4 1.884 402.008 614.876 379.863 621.74 m(K)379.113 633.74 s(KL) 379.113 637 s(>)379.113 637 s(6)400.858 627 s(>)400.858 629 s 1.884 436.708 617.157 423.296 613 m(6)422.546 625 s(>)422.546 625 s(K) 435.558 629.033 s(KL)435.558 631 s(>)435.558 633 s(5)457.246 623 s(.) 501.622 625 s(7)522.31 627 s(@)543.997 621 s %20/3 1.8 402.008 665 379.863 665 m(6)379.113 677 s(>)379.113 677 s(6) 400.858 677 s(>)400.858 677 s 1.819 436.708 664.94 423.296 666.938 m(K) 422.546 678.938 s(KL)422.546 679 s(>)422.546 679 s(6)435.558 677 s(>) 435.558 677 s(6)457.246 677 s(.)501.622 669 s(8)522.31 677 s 16 637(@)543.997 665 b %20/2 -1.827 396.264 729.012 384.963 731 m -1.827 396.264 726.012 384.963 728 m(\215)369.313 717 s(')372.813 715 s(\216) 377.313 717 s(5)379.113 715 s(J)390.014 713.082 s(JL)390.014 713 s(5) 400.858 715 s(7)435.558 713 s(5)457.246 715 s(z.)501.622 713 s(.) 500.922 709 s 1.829 534.303 700.928 512.216 704.925 m 1.829 534.303 703.928 512.216 707.925 m(K)511.466 716.925 s(KL) 511.466 717 s(K)522.31 714.963 s(KL)522.31 715 s(6)533.153 713 s 16 681(@)543.997 709 b %20/1 1.813 412.852 746.952 379.863 750.943 m 1.813 412.852 749.952 401.608 751.312 m(K)379.113 762.943 s(KL) 379.113 763 s(K)400.858 760.312 s(KL)400.858 761 s(6)411.702 759 s 1.824 447.552 748.935 423.296 752.912 m 1.824 447.552 751.935 436.308 753.779 m(K)422.546 764.912 s(KL) 422.546 765 s(K)435.558 762.779 s(KL)435.558 763 s(6)446.402 761 s 1.8 490.928 747 457.996 747 m 1.8 490.928 750 457.996 750 m(K) 457.246 759 s(KL)457.246 763 s(K)468.09 759 s(KL)468.09 761 s(K) 478.934 759 s(KL)478.934 763 s(6)489.778 759 s(6)500.622 767 s 503.622 773 542.997 773 5 cv 16 725(@)543.997 753 b %20/0 rm 12 ss(A)365.207 781 s 375.271 779 363.207 779 363.207 792 375.271 792 375.271 779 5 363.207 779 0.8 ll mf 10 ss (FFFFCCCCCCC)64 753 s (C)533.997 753 s (FFFFCCCCCCC)64 709 s (C)533.997 709 s (FFFFCCCCCCC)64 665 s (C)533.997 665 s (FFFFCCCCCCC)64 621 s (C)533.997 621 s (!)64 566 s(')80 572 s(')84.5 578 s(!)64 522 s(')80 528 s(')84.5 534 s(#) 64 478 s(')80 482 s(')84.5 488 s(")63.5 434 s(')80 436 s(')84.5 442 s 16 434(@)64 566 b 60.5 582 434 k %21/4 (6)97 446 s(?)105.4 446 s(7)149.152 438 s(6)169.172 444 s 1.8 232.385 432 201.954 432 m 1.8 232.385 435 201.954 435 m(6) 201.204 444 s 172.172 451 204.204 451 5 cv(K)211.214 444 s(KL) 211.214 446 s(K)221.225 444 s(KL)221.225 448 s(6)231.235 444 s (@)241.245 434 s %21/3 (6)97 492 s(?)105.4 494 s(8)149.152 492 s(6)169.172 490 s(?) 177.572 490 s(8)221.225 484 s 16 450(@)241.245 478 b %21/2 (5)97 528 s(?)105.4 530 s(\()144.477 520 s(7)149.152 520 s(=) 169.172 516 s(5)169.172 516 s(?)177.572 518 s 1.884 232.385 513.876 221.975 517.103 m 1.884 232.385 516.876 221.975 520.103 m(K)221.225 529.103 s(KL) 221.225 530 s(6)231.235 526 s 16 494(@)241.245 522 b %21/1 1.827 120.272 563.929 97.75 567.915 m 1.827 120.272 566.929 109.862 568.772 m(K)97 579.915 s(KL)97 580 s 90 586 100 586 3 cv(\()104.862 578 s(K)109.112 577.772 s(KL) 109.112 578 s(6)119.122 576 s 1.8 160.312 560 129.882 560 m 1.8 160.312 563 129.882 563 m(K)129.132 572 s(KL)129.132 578 s(K) 139.142 572 s(KL)139.142 574 s(K)149.152 572 s(K)149.152 582 s(L) 149.152 582 s(6)159.162 572 s 1.828 192.344 555.928 169.922 559.919 m 1.828 192.344 558.928 181.934 560.781 m(K)169.172 571.919 s(KL) 169.172 572 s 162.162 579 172.172 579 2.003 cv(K)181.184 569.781 s(KL) 181.184 570 s(6)191.194 568 s 1.884 222.375 564.33 201.954 558 m(6) 201.204 570 s(K)221.225 576.206 s(KL)221.225 580 s 16 538(@)241.245 566 b %21/0 rm 10 ss(21)64 590 s 75.5 588 62 588 62 599 75.5 599 75.5 588 5 62 588 0.666 ll %22/4 mf 10 ss(6)247.251 446 s(?)255.651 446 s(7)299.403 438 s(6)319.423 444 s 1.8 382.636 432 352.205 432 m 1.8 382.636 435 352.205 435 m(6) 351.455 444 s 322.423 451 354.455 451 5 cv(K)361.465 444 s(KL) 361.465 446 s(K)371.476 444 s(KL)371.476 448 s(6)381.486 444 s (@)391.496 434 s %22/3 (6)247.251 492 s(?)255.651 494 s(8)299.403 492 s(6)319.423 490 s(?) 327.823 490 s(8)371.476 484 s 16 450(@)391.496 478 b %22/2 (5)247.251 522 s(?)255.651 522 s(\()294.728 520 s(7)299.403 520 s(=) 319.423 516 s(5)319.423 516 s(?)327.823 518 s 1.884 382.636 513.876 372.226 517.103 m 1.884 382.636 516.876 372.226 520.103 m(K)371.476 529.103 s(KL) 371.476 530 s(6)381.486 526 s 16 494(@)391.496 522 b %22/1 1.827 270.523 563.929 248.001 567.915 m 1.827 270.523 566.929 260.113 568.772 m(K)247.251 579.915 s(KL) 247.251 580 s 224.225 586 250.251 586 5 cv(\()255.113 578 s(K) 259.363 577.772 s(KL)259.363 578 s(6)269.373 576 s 1.8 310.563 560 280.133 560 m 1.8 310.563 563 280.133 563 m(K) 279.383 572 s(KL)279.383 578 s(K)289.393 572 s(KL)289.393 574 s(=) 299.403 584 s(K)299.403 572 s(K)299.403 582 s(KL)299.403 586 s(6) 309.413 572 s 1.828 342.595 555.928 320.173 559.919 m 1.828 342.595 558.928 332.185 560.781 m(K)319.423 571.919 s(KL) 319.423 572 s 312.413 579 322.423 579 2.003 cv(K)331.435 569.781 s(KL) 331.435 570 s(6)341.445 568 s 1.884 372.626 564.33 352.205 558 m(6) 351.455 570 s(')366.976 578 s(K)371.476 576.206 s(KL)371.476 578 s 16 538(@)391.496 566 b %22/0 %23/4 (6)397.502 450 s(?)405.902 450 s(7)449.554 436 s(6)471.926 442 s 1.8 535.139 430 504.709 430 m 1.8 535.139 433 504.709 433 m(6) 503.959 442 s 474.926 448 506.959 448 5 cv(K)513.969 442 s(KL) 513.969 444 s(K)523.979 442 s(KL)523.979 446 s(6)533.989 442 s (@)543.999 434 s %23/3 (5)397.502 482 s(?)405.902 482 s(8)449.554 486 s(6)471.926 488 s(?) 480.326 490 s(8)523.979 488 s 16 450(@)543.999 478 b %23/2 (5)397.502 522 s(?)405.902 522 s(7)449.554 518 s(=)471.926 516 s(5) 471.926 514 s(?)480.326 514 s -1.884 540.239 540.773 529.829 544 m -1.884 540.239 537.773 529.829 541 m(5)523.979 528 s(J)533.989 524.897 s (JL)533.989 524 s 16 494(@)543.999 522 b %23/1 1.828 420.674 561.928 398.252 565.919 m 1.828 420.674 564.928 410.264 566.781 m(K)397.502 577.919 s(KL) 397.502 578 s 374.476 584 400.502 584 5 cv(K)409.514 575.781 s(KL) 409.514 576 s(6)419.524 574 s 1.8 463.066 558 430.284 558 m 1.8 463.066 561 430.284 561 m(K)429.534 570 s(KL)429.534 576 s(K) 439.544 570 s(KL)439.544 572 s(K)449.554 570 s(K)449.554 580 s(L) 449.554 580 s(')457.416 570 s(6)461.916 570 s 1.828 495.099 553.929 472.676 557.92 m 1.828 495.099 556.929 484.689 558.782 m(K)471.926 569.92 s(KL) 471.926 570 s 464.916 576 474.926 576 2.003 cv(K)483.939 567.782 s(KL) 483.939 568 s(6)493.949 566 s 1.884 525.129 562.33 504.709 556 m(6) 503.959 568 s(K)523.979 574.206 s(KL)523.979 578 s 526.979 584 542.999 584 3.806 cv 16 538(@)543.999 566 b %23/0 (FFFFCCCCCCC)64 566 s (C)533.999 566 s (FFFFCCCCCCC)64 522 s (C)533.999 522 s (FFFFCCCCCCC)64 478 s (C)533.999 478 s (FFFFCCCCCCC)64 434 s (C)533.999 434 s (!)64 379 s(')80 385 s(')84.5 391 s(!)64 335 s(')80 341 s(')84.5 347 s(#) 64 291 s(')80 295 s(')84.5 301 s(")63.5 247 s(')80 249 s(')84.5 255 s 16 247(@)64 379 b 60.5 395 247 k %24/4 1.876 111.296 248.996 97.75 245 m(6)97 257 s(K)110.146 260.878 s(KL) 110.146 261 s 1.884 155.12 236.876 132.808 243.792 m(K)132.058 255.792 s (KL)132.058 263 s(6)153.97 249 s 1.804 205.517 246.993 176.632 245 m 1.804 205.517 249.993 200.517 249.648 m(6)175.882 257 s(?)184.282 259 s(K) 204.367 258.965 s(KL)204.367 259 s 1.828 249.341 238.928 216.073 244.916 m 1.828 249.341 241.928 216.073 247.916 m(K)215.323 256.916 s(KL) 215.323 257 s(K)226.279 254.944 s(KL)226.279 255 s(K)237.235 252.972 s(KL) 237.235 253 s(6)248.191 251 s(@)259.147 247 s %24/3 1.884 111.296 289.199 97.75 285 m(6)97 297 s(K)110.146 301.075 s(KL) 110.146 303 s 1.863 155.12 290.893 132.808 296.872 m(=)132.058 309 s(K) 132.058 308.872 s(KL)132.058 309 s(6)153.97 303 s(6)175.882 303 s(-) 216.323 295 s 16 263(@)259.147 291 b %24/2 -1.819 116.396 353.009 102.85 355 m(5)97 339 s(J)110.146 337.068 s(JL) 110.146 337 s -1.8 171.176 351 137.908 351 m -1.8 171.176 348 137.908 348 m(5)132.058 335 s 113.146 334 135.058 333 -5 cv(J)143.014 335 s(JL)143.014 333 s(5)153.97 335 s(J)164.926 335 s(JL) 164.926 331 s(=)175.882 329 s(5)175.882 329 s(-)216.323 339 s 16 307(@)259.147 335 b %24/1 1.823 122.252 374.935 97.75 378.928 m 1.823 122.252 377.935 110.896 379.786 m(K)97 390.928 s(KL)97 391 s 90 397 100 397 3 cv(K)110.146 388.786 s(KL)110.146 389 s(6)121.102 387 s 1.8 166.076 373 132.808 373 m 1.8 166.076 376 132.808 376 m(K) 132.058 385 s(KL)132.058 389 s(K)143.014 385 s(KL)143.014 387 s(K) 153.97 385 s(KL)153.97 389 s(6)164.926 385 s -1.828 204.044 395.007 181.732 399 m -1.828 193.088 393.968 181.732 396 m(5)175.882 383 s(J)186.838 381.039 s (JL)186.838 381 s(J)197.794 379.078 s(JL)197.794 379 s(-)216.323 383 s 16 351(@)259.147 379 b %24/0 rm 10 ss(24)64 403 s 75.5 401 62 401 62 412 75.5 412 75.5 401 5 62 401 0.666 ll %25/4 1.884 280.015 241.199 266.469 237 m bi 10 ss(f)265.719 227 s(f) -0.18 0 rs mf 10 ss(6)265.719 249 s(K)278.865 253.075 s(KL)278.865 263 s 1.876 306.309 244.882 292.762 248.878 m(K)292.012 260.878 s(KL) 292.012 261 s(6)305.159 257 s -1.884 355.233 275.124 332.921 268.208 m(J) 327.071 252.208 s(JL)327.071 245 s(5)348.983 259 s -1.876 390.292 265.004 376.745 269 m(5)370.895 253 s(J)384.042 249.122 s (JL)384.042 249 s(@)397.189 247 s %25/3 bi 10 ss(f)265.719 281 s(f)-0.18 0 rs mf 10 ss(6)265.719 303 s 1.884 306.309 284.876 292.762 289.075 m(K)292.012 301.075 s(KL) 292.012 303 s(6)305.159 297 s(5)327.071 295 s 1.884 385.192 290.876 371.645 295.075 m(=)370.895 309 s(K) 370.895 307.075 s(KL)370.895 309 s(6)384.042 303 s 16 263(@)397.189 291 b %25/2 bi 10 ss(f)265.719 325 s(f)-0.18 0 rs mf 10 ss(=)265.719 353 s(6) 265.719 355 s(6)292.012 349 s 1.8 361.089 331 327.821 331 m 1.8 361.089 334 327.821 334 m(K)327.071 343 s(KL)327.071 345 s(6) 338.027 343 s(K)348.983 343 s(KL)348.983 345 s(K)359.939 343 s(KL) 359.939 347 s 1.876 385.192 332.882 371.645 336.878 m(K) 370.895 348.878 s(KL)370.895 349 s(6)384.042 345 s 16 307(@)397.189 335 b %25/1 bi 10 ss(f)265.719 369 s(f)-0.18 0 rs mf 10 ss(=)265.719 397 s(=) 265.719 401 s(K)265.719 399 s(KL)265.719 403 s 1.823 317.265 383.007 292.762 387 m 1.823 317.265 386.007 305.909 387.858 m(=)292.012 397 s(=)292.012 401 s(K) 292.012 399 s(KL)292.012 401 s(=)305.159 397 s(K)305.159 396.858 s(KL) 305.159 399 s(=)316.115 397 s(K)316.115 395.072 s(KL)316.115 397 s 1.8 350.133 385 327.821 385 m 1.8 339.177 388 327.821 388 m(=) 327.071 397 s(K)327.071 397 s(KL)327.071 399 s(=)338.027 397 s(6) 338.027 397 s(=)348.983 397 s(K)348.983 397 s(KL)348.983 399 s(.) 371.895 383 s(')379.542 397 s(=)384.042 397 s(8)384.042 397 s 16 351(@)397.189 379 b %25/0 %26/4 1.884 418.057 247.199 404.511 243 m(6)403.761 255 s(=)416.907 265 s(=) 416.907 269 s(K)416.907 259.075 s(KL)416.907 269 s 1.876 444.351 250.882 430.804 254.878 m(=)430.054 265 s(K) 430.054 266.878 s(KL)430.054 267 s(6)443.201 263 s 1.884 488.175 245.916 465.863 239 m(6)465.113 251 s(K)487.025 257.792 s(KL) 487.025 259 s 1.863 523.234 246.893 500.922 252.872 m(=)500.172 265 s(K) 500.172 264.872 s(KL)500.172 265 s(6)522.084 259 s(@)543.996 247 s %26/3 (8)403.761 301 s(=)416.907 309 s(6)416.907 309 s(8)443.201 303 s 1.828 488.175 292.993 465.863 289 m(6)465.113 301 s(K)487.025 304.922 s(KL) 487.025 305 s 1.828 523.234 296.993 500.922 293 m(6)500.172 305 s(=) 522.084 309 s(K)522.084 308.922 s(KL)522.084 309 s 16 263(@)543.996 291 b %26/2 1.884 418.057 333.199 404.511 329 m(6)403.761 341 s(K)416.907 345.075 s(KL) 416.907 347 s(6)430.054 341 s -1.828 493.275 357.071 470.963 353.078 m(J) 465.113 337.078 s(JL)465.113 337 s(5)487.025 341 s 1.8 534.19 331 500.922 331 m 1.8 534.19 334 500.922 334 m(6) 500.172 343 s(K)511.128 343 s(KL)511.128 345 s(K)522.084 343 s(KL) 522.084 347 s(K)533.04 343 s(KL)533.04 345 s 16 307(@)543.996 335 b %26/1 (6)403.761 395 s 1.823 455.307 376.935 430.804 380.928 m 1.823 455.307 379.935 443.951 381.786 m(K)430.054 392.928 s(KL) 430.054 393 s(K)443.201 390.786 s(KL)443.201 391 s(6)454.157 389 s 1.8 488.175 377 465.863 377 m 1.8 477.219 380 465.863 380 m(K) 465.113 389 s(KL)465.113 391 s(6)476.069 389 s(K)487.025 389 s(KL) 487.025 391 s 1.8 534.19 379 500.922 379 m 1.8 534.19 382 500.922 382 m(6) 500.172 391 s 490.025 397 503.172 397 2.944 cv(K)511.128 391 s(KL) 511.128 393 s(K)522.084 391 s(KL)522.084 395 s(K)533.04 391 s(KL) 533.04 393 s 16 351(@)543.996 379 b %26/0 (FFFFCCCCCCC)64 379 s (C)533.996 379 s (FFFFCCCCCCC)64 335 s (C)533.996 335 s (FFFFCCCCCCC)64 291 s (C)533.996 291 s (FFFFCCCCCCC)64 247 s (C)533.996 247 s (!)64 192 s(')80 198 s(')84.5 204 s(!)64 148 s(')80 154 s(')84.5 160 s(#) 64 104 s(')80 108 s(')84.5 114 s(")63.5 60 s(')80 62 s(')84.5 68 s 16 60(@)64 192 b 60.5 208 60 k %27/4 1.803 127.728 59.974 97.75 61.952 m(K)97 73.952 s(KL)97 74 s(6) 126.578 72 s 1.815 186.884 57.946 156.906 61.933 m(K)156.156 73.933 s(KL) 156.156 74 s(6)185.734 70 s 1.815 246.041 59.946 216.063 63.933 m(K) 215.313 75.933 s(KL)215.313 76 s(6)244.891 72 s 1.884 305.198 51.876 275.219 61.169 m(=)274.469 78 s(K)274.469 73.169 s(KL) 274.469 78 s(6)304.048 64 s(@)333.626 60 s %27/3 (=)97 122 s(6)97 124 s(6)156.156 120 s 1.835 246.041 109.995 216.063 104 m(6)215.313 116 s(=)244.891 122 s(K) 244.891 121.915 s(KL)244.891 122 s 1.815 305.198 107.947 275.219 111.934 m(=)274.469 122 s(K) 274.469 123.934 s(KL)274.469 124 s(6)304.048 120 s 16 76(@)333.626 104 b %27/2 1.8 142.517 142 97.75 142 m 1.8 142.517 145 97.75 145 m(K)97 154 s(KL) 97 156 s(6)111.789 154 s(K)126.578 154 s(KL)126.578 156 s(K) 141.367 154 s(KL)141.367 158 s 1.8 201.674 144 156.906 144 m 1.8 201.674 147 156.906 147 m(6)156.156 156 s(K)170.945 156 s(KL) 170.945 160 s(K)185.734 156 s(KL)185.734 158 s(6)200.524 156 s -1.8 265.93 170 221.163 170 m -1.8 265.93 167 221.163 167 m(5) 215.313 154 s(J)230.102 154 s(JL)230.102 152 s(5)244.891 154 s(J) 259.68 154 s(JL)259.68 150 s -1.815 310.298 172.053 280.319 168.066 m(J) 274.469 152.066 s(JL)274.469 152 s(5)304.048 156 s 16 120(@)333.626 148 b %27/1 1.8 142.517 190 97.75 190 m 1.8 142.517 193 97.75 193 m(K)97 202 s(KL) 97 204 s(6)111.789 202 s(K)126.578 202 s(KL)126.578 204 s(K) 141.367 202 s(KL)141.367 206 s 1.8 201.674 192 156.906 192 m 1.8 201.674 195 156.906 195 m(6)156.156 204 s(K)170.945 204 s(KL) 170.945 208 s(K)185.734 204 s(KL)185.734 206 s(6)200.524 204 s 1.8 260.83 186 216.063 186 m 1.8 260.83 189 216.063 189 m(K) 215.313 198 s(KL)215.313 202 s(K)230.102 198 s(KL)230.102 200 s(K) 244.891 198 s(KL)244.891 202 s(6)259.68 198 s 1.8 319.987 188 275.219 188 m 1.8 319.987 191 275.219 191 m(K) 274.469 200 s(KL)274.469 204 s(K)289.259 200 s(KL)289.259 202 s(K) 304.048 200 s(KL)304.048 204 s(6)318.837 200 s 16 164(@)333.626 192 b %27/0 rm 10 ss(27)64 216 s 75.5 214 62 214 62 225 75.5 225 75.5 214 5 62 214 0.666 ll %28/4 1.835 373.227 59.995 343.249 54 m mf 10 ss(6)342.499 66 s(K) 372.077 71.915 s(KL)372.077 72 s 1.81 420.551 57.996 402.405 56 m(6) 401.655 68 s(K)419.401 69.952 s(KL)419.401 70 s -1.815 473.346 82.054 443.368 78.067 m(J)437.518 62.067 s(JL) 437.518 62 s(5)467.096 66 s -1.843 520.67 84.088 502.524 80.096 m(J) 496.674 64.096 s(JL)496.674 64 s(5)514.42 68 s(@)543.999 60 s %28/3 1.815 373.227 99.946 343.249 103.933 m(K)342.499 115.933 s(KL) 342.499 116 s(6)372.077 112 s 1.81 420.551 103.956 402.405 105.952 m(K) 401.655 117.952 s(KL)401.655 118 s(6)419.401 116 s 1.884 468.246 113.293 438.268 104 m(6)437.518 116 s(=)467.096 122 s(=) 467.096 126 s(K)467.096 125.169 s(KL)467.096 126 s 1.884 515.57 111.625 497.424 106 m(6)496.674 118 s(=)514.42 122 s(K) 514.42 123.501 s(KL)514.42 124 s 16 76(@)543.999 104 b %28/2 -1.861 363.538 168.006 348.349 172 m -1.861 363.538 165.006 348.349 169 m(5)342.499 156 s 307.048 154 345.499 154 -5 cv(J)357.288 152.111 s(JL)357.288 152 s(5) 372.077 154 s(7)419.401 152 s 1.8 483.035 146 438.268 146 m 1.8 483.035 149 438.268 149 m(6)437.518 158 s(K)452.307 158 s(KL) 452.307 160 s(K)467.096 158 s(KL)467.096 162 s(K)481.885 158 s(KL) 481.885 160 s 1.843 515.57 143.912 497.424 147.904 m(K)496.674 159.904 s (KL)496.674 160 s(6)514.42 156 s 517.42 162 542.999 162 5 cv 16 120(@)543.999 148 b %28/1 1.8 388.016 186 343.249 186 m 1.8 388.016 189 372.827 189 m(K) 342.499 198 s(KL)342.499 206 s(6)372.077 198 s(K)386.866 198 s(KL) 386.866 200 s(6)401.655 200 s(\210)401.655 211 s(8)437.518 198 s(=) 467.096 210 s(6)467.096 212 s 1.815 530.36 195.948 515.17 197.937 m 1.815 530.36 198.948 515.17 200.937 m(=)514.42 210 s(K)514.42 209.937 s(KL) 514.42 210 s(6)529.21 208 s 16 164(@)543.999 192 b %28/0 (FFFFCCCCCCC)64 192 s (C)533.999 192 s (FFFFCCCCCCC)64 148 s (C)533.999 148 s (FFFFCCCCCCC)64 104 s (C)533.999 104 s (FFFFCCCCCCC)64 60 s (C)533.999 60 s pagesave restore showpage %%Page: 4 4 %%BeginPageSetup /pagesave save def %%EndPageSetup rm 10 ss(4 )44.2 800 s( )558 800 s mf 10 ss(!)64 753 s(')80 759 s(') 84.5 765 s(!)64 709 s(')80 715 s(')84.5 721 s(#)64 665 s(')80 669 s(') 84.5 675 s(")63.5 621 s(')80 623 s(')84.5 629 s 16 621(@)64 753 b 60.5 769 621 k %29/4 1.865 134.291 624.975 97.75 615 m(6)97 627 s(K)133.141 636.866 s(KL) 133.141 637 s 1.865 206.575 626.975 170.033 617 m(6)169.283 629 s(=) 205.425 639 s(K)205.425 638.866 s(KL)205.425 639 s 1.81 278.858 614.957 242.317 618.939 m(K)241.567 630.939 s(KL) 241.567 631 s(6)277.708 627 s 1.829 336.685 616.927 314.6 620.924 m(K) 313.85 632.924 s(KL)313.85 633 s(6)335.535 629 s(@)357.22 621 s %29/3 1.81 134.291 660.957 97.75 664.939 m(K)97 676.939 s(KL)97 677 s(6) 133.141 673 s 1.801 224.646 660.985 170.033 662.951 m 1.801 224.646 663.985 219.646 664.165 m(K)169.283 674.951 s(KL) 169.283 675 s(?)177.683 677 s(6)223.496 673 s 1.8 296.929 659 242.317 659 m 1.8 296.929 662 278.458 662 m(6) 241.567 671 s(K)277.708 671 s(KL)277.708 673 s(6)295.779 671 s -1.8 341.785 685 319.7 685 m(5)313.85 669 s(5)335.535 669 s 16 637(@)357.22 665 b %29/2 (8)97 717 s 90 723 100 723 3 cv(6)133.141 715 s(7)205.425 711 s -1.801 302.029 723.034 247.417 725 m -1.801 302.029 720.034 297.029 720.214 m(5)241.567 709 s(?)249.967 709 s(J) 295.779 707.049 s(JL)295.779 707 s -1.884 341.785 741.124 319.7 734.278 m(J)313.85 718.278 s(J) 313.85 708.278 s(JL)313.85 705 s(5)335.535 725 s 16 681(@)357.22 709 b %29/1 1.8 152.362 751 97.75 751 m 1.8 152.362 754 97.75 754 m(K)97 763 s(KL) 97 767 s(K)115.07 763 s(KL)115.07 765 s(K)133.141 763 s(KL)133.141 767 s(6) 151.212 763 s 1.829 224.646 744.312 170.033 754.306 m 1.829 224.646 747.312 170.033 757.306 m(K)169.283 766.306 s(KL) 169.283 769 s(6)187.354 763 s(K)205.425 759.693 s(KL)205.425 761 s(K) 223.496 756.386 s(KL)223.496 759 s 1.8 296.929 741 242.317 741 m 1.8 296.929 744 242.317 744 m(K)241.567 753 s(KL)241.567 757 s(6) 259.637 753 s(K)277.708 753 s(K)277.708 763 s(KL)277.708 767 s(K) 295.779 753 s(KL)295.779 757 s 1.884 336.685 753.846 314.6 747 m(6) 313.85 759 s(=)335.535 771 s(K)335.535 765.722 s(KL)335.535 773 s 16 725(@)357.22 753 b %29/0 rm 10 ss(29)64 777 s 75.5 775 62 775 62 786 75.5 786 75.5 775 5 62 775 0.666 ll %30/4 1.824 405.352 620.992 368.811 615 m mf 10 ss(6)368.061 627 s(K) 404.202 632.927 s(KL)404.202 633 s 1.807 463.179 618.987 441.094 617 m(6) 440.344 629 s(K)462.029 630.951 s(KL)462.029 631 s(5)484.165 623 s(-) 514.078 625 s(B)542.498 621 s(@)540.498 621 s %30/3 -1.81 410.452 689.043 373.911 685.061 m(J)368.061 669.061 s(JL) 368.061 669 s(5)404.202 673 s 1.807 463.179 664.964 441.094 666.951 m(K) 440.344 678.951 s(KL)440.344 679 s(6)462.029 677 s(6)484.165 677 s(-) 514.078 669 s 16 637(B)542.498 665 b 16 637(@)540.498 665 b %30/2 -1.841 392.381 717.011 373.911 721 m -1.841 392.381 714.011 373.911 718 m(5)368.061 705 s(=)386.131 703 s(J) 386.131 701.097 s(JL)386.131 701 s(5)404.202 715 s(7)462.029 713 s(5) 484.165 715 s(-)514.078 713 s 16 681(B)542.498 709 b 16 681(@)540.498 709 b %30/1 -1.819 428.523 777.697 373.911 769.724 m -1.819 428.523 774.697 410.052 772 m(J)368.061 753.724 s(JL) 368.061 753 s(5)404.202 759 s(J)422.273 761.638 s(JL)422.273 761 s(6) 440.344 761 s(\210)440.344 772 s(6)484.165 759 s(-)514.078 757 s 16 725(B)542.498 753 b 16 725(@)540.498 753 b %30/0 (FFFFCCCCCCC)64 753 s (C)533.998 753 s (FFFFCCCCCCC)64 709 s (C)533.998 709 s (FFFFCCCCCCC)64 665 s (C)533.998 665 s (FFFFCCCCCCC)64 621 s (C)533.998 621 s rm 12 ss(II)300.004 517 s rm 10 ss(V)65.665 464 s(iolin I)-0.6 0 rs mf 10 ss(!)104.12 460 s(')120.12 466 s(')124.62 472 s bf 11.8 ss(3) 129.12 468 s(8)129.12 460.15 s rm 10 ss(V)64 420 s(iolin II)-0.6 0 rs mf 10 ss(!)104.12 416 s(')120.12 422 s(')124.62 428 s bf 11.8 ss(3) 129.12 424 s(8)129.12 416.15 s rm 10 ss(V)70.25 376 s(iola)-0.6 0 rs mf 10 ss(#)104.12 372 s(')120.12 376 s(')124.62 382 s bf 11.8 ss(3) 129.12 380 s(8)129.12 372.15 s rm 10 ss(Cello)70.225 337 s(Bass) 71.615 327 s mf 10 ss(")103.62 328 s(')120.12 330 s(')124.62 336 s bf 11.8 ss(3)129.12 336 s(8)129.12 328.15 s mf 10 ss 16 328(@)104.12 460 b 100.62 476 328 k %1/4 bi 10 ss(p)144.02 318 s mf 10 ss(.)144.02 332 s 1.873 171.026 327.884 157.198 331.88 m(K)156.448 343.88 s(KL) 156.448 344 s(6)169.876 340 s(@)203.445 328 s %1/3 bi 10 ss(p)144.02 362 s mf 10 ss(.)144.02 376 s 1.884 171.026 367.876 157.198 372.162 m(K)156.448 384.162 s(KL) 156.448 386 s(6)169.876 380 s 16 344(@)203.445 372 b %1/2 bi 10 ss(p)143.02 405 s mf 10 ss(6)143.02 426 s 1.8 193.405 422 170.626 422 m 1.8 193.405 425 170.626 425 m(=) 169.876 434 s(K)169.876 434 s(KL)169.876 436 s(=)181.066 434 s(6) 181.066 434 s(=)192.255 434 s(K)192.255 434 s(KL)192.255 436 s it 9 ss(3) 182.065 443 s 180.565 446.15 169.376 446.15 2 169.376 444.15 0.3 ll 199.255 444.15 199.255 446.15 2 188.065 446.15 0.3 ll mf 10 ss 16 388(@)203.445 416 b %1/1 bi 10 ss(p)143.02 449 s mf 10 ss(6)143.02 470 s 1.8 193.405 466 170.626 466 m 1.8 193.405 469 170.626 469 m(=) 169.876 478 s(K)169.876 478 s(KL)169.876 480 s(=)181.066 478 s(6) 181.066 478 s(=)192.255 478 s(K)192.255 478 s(KL)192.255 480 s it 9 ss(3) 182.065 487 s 180.565 490.15 169.376 490.15 2 169.376 488.15 0.3 ll 199.255 488.15 199.255 490.15 2 188.065 490.15 0.3 ll mf 10 ss 16 432(@)203.445 460 b %1/0 bf 10 ss(Moderato e dolce)129.12 500 s %2/4 1.818 227.359 331.994 213.509 330 m mf 10 ss(6)212.759 342 s(K) 226.209 343.936 s(KL)226.209 344 s(.)240.637 332 s(@)253.065 328 s %2/3 1.818 227.359 367.994 213.509 366 m(6)212.759 378 s(K)226.209 379.936 s(KL) 226.209 380 s(.)240.637 376 s 16 344(@)253.065 372 b %2/2 1.818 227.359 419.994 213.509 418 m(%)207.759 430 s(6)212.759 430 s(\210) 212.759 441 s(K)226.209 431.936 s(KL)226.209 432 s(.)240.637 420 s 16 388(@)253.065 416 b %2/1 1.818 227.359 463.994 213.509 462 m(%)207.759 474 s(6)212.759 474 s(\210) 212.759 485 s(K)226.209 475.936 s(KL)226.209 476 s(.)240.637 464 s 16 432(@)253.065 460 b %3/4 1.8 307.926 322 260.529 322 m(=)259.779 346 s(K)259.779 334 s(K) 259.779 344 s(KL)259.779 346 s(=)273.207 346 s(K)273.207 334 s(K) 273.207 344 s(KL)273.207 348 s(6)306.776 334 s(@)342.113 328 s %3/3 (6)259.779 386 s(8)306.776 378 s 16 344(@)342.113 372 b %3/2 (8)259.779 428 s 1.827 296.736 409.93 273.957 413.916 m 1.827 296.736 412.93 273.957 416.916 m(K)273.207 425.916 s(KL) 273.207 426 s(K)284.396 423.958 s(KL)284.396 424 s(6)295.586 422 s it 9 ss(3)285.396 439 s 283.896 442.15 272.707 442.15 2 272.707 440.15 0.3 ll 302.586 440.15 302.586 442.15 2 291.396 442.15 0.3 ll -1.823 337.174 432.024 312.626 436 m -1.823 337.174 429.024 312.626 433 m mf 10 ss(5)306.776 420 s(J) 317.965 418.188 s(JL)317.965 418 s(%)325.924 416 s(J)330.924 416.089 s(JL) 330.924 416 s it 9 ss(3)319.85 439 s 318.35 442.15 306.276 442.15 2 306.276 440.15 0.3 ll 337.924 440.15 337.924 442.15 2 325.85 442.15 0.3 ll mf 10 ss 16 388(@)342.113 416 b %3/1 (8)259.779 472 s 1.827 296.736 453.93 273.957 457.916 m 1.827 296.736 456.93 273.957 460.916 m(K)273.207 469.916 s(KL) 273.207 470 s(K)284.396 467.958 s(KL)284.396 468 s(6)295.586 466 s it 9 ss(3)285.396 483 s 283.896 486.15 272.707 486.15 2 272.707 484.15 0.3 ll 302.586 484.15 302.586 486.15 2 291.396 486.15 0.3 ll -1.823 337.174 476.024 312.626 480 m -1.823 337.174 473.024 312.626 477 m mf 10 ss(5)306.776 464 s(J) 317.965 462.188 s(JL)317.965 462 s(%)325.924 460 s(J)330.924 460.089 s(JL) 330.924 460 s it 9 ss(3)319.85 483 s 318.35 486.15 306.276 486.15 2 306.276 484.15 0.3 ll 337.924 484.15 337.924 486.15 2 325.85 486.15 0.3 ll mf 10 ss 16 432(@)342.113 460 b %4/4 1.8 388.023 320 349.577 320 m(K)348.827 332 s(KL)348.827 336 s(6) 373.444 332 s(K)386.873 332 s(KL)386.873 334 s(@)400.301 328 s %4/3 1.838 388.023 371.996 349.577 364 m(6)348.827 376 s(K)373.444 381.12 s(KL) 373.444 386 s(%)381.873 384 s(K)386.873 383.913 s(KL)386.873 384 s 16 344(@)400.301 372 b %4/2 -1.818 368.505 436.058 354.677 434.067 m -1.818 368.505 433.058 354.677 431.067 m -1.818 368.505 430.058 363.505 429.338 m(J)348.827 418.067 s(JL) 348.827 418 s(?)357.227 420 s(5)362.255 420 s -1.818 393.123 436.009 379.294 438 m(5)373.444 422 s(J)386.873 420.067 s (JL)386.873 420 s 16 388(@)400.301 416 b %4/1 -1.818 368.505 480.058 354.677 478.067 m -1.818 368.505 477.058 354.677 475.067 m -1.818 368.505 474.058 363.505 473.338 m(J)348.827 462.067 s(JL) 348.827 462 s(?)357.227 464 s(5)362.255 464 s -1.818 393.123 480.009 379.294 482 m(5)373.444 466 s(J)386.873 464.067 s (JL)386.873 464 s 16 432(@)400.301 460 b %5/4 (.)408.015 332 s 1.873 455.162 327.884 441.333 331.88 m(K) 440.583 343.88 s(KL)440.583 344 s(6)454.012 340 s(@)470.837 328 s %5/3 (.)408.015 376 s 1.873 455.162 377.996 441.333 374 m(6)440.583 386 s(=) 454.012 390 s(K)454.012 389.88 s(KL)454.012 390 s 16 344(@)470.837 372 b %5/2 -1.8 435.644 442 412.865 442 m -1.8 435.644 439 412.865 439 m(J) 407.015 426 s(JL)407.015 422 s(J)418.204 426 s(JL)418.204 418 s(5) 429.394 426 s 1.883 460.798 419.995 441.333 414 m 1.883 460.798 422.995 455.798 421.455 m(6)440.583 426 s(?)448.983 428 s(K) 459.648 431.872 s(KL)459.648 432 s 16 388(@)470.837 416 b %5/1 -1.8 435.644 486 412.865 486 m -1.8 435.644 483 412.865 483 m(J) 407.015 470 s(JL)407.015 466 s(J)418.204 470 s(JL)418.204 462 s(5) 429.394 470 s 1.883 460.798 463.995 441.333 458 m 1.883 460.798 466.995 455.798 465.455 m(6)440.583 470 s(?)448.983 472 s(K) 459.648 475.872 s(KL)459.648 476 s 16 432(@)470.837 460 b %6/4 (.)481.151 332 s 1.873 528.32 321.884 514.491 325.88 m(%)508.241 338 s(K) 513.741 337.88 s(KL)513.741 338 s(6)527.17 334 s(@)543.995 328 s %6/3 (.)481.151 376 s 1.884 528.32 371.876 514.491 376.162 m(=)513.741 390 s(=) 513.741 394 s(K)513.741 388.162 s(KL)513.741 394 s(%)522.17 384 s(6) 527.17 384 s 16 344(@)543.995 372 b %6/2 1.8 503.702 414 480.901 414 m 1.8 503.702 417 480.901 417 m(%) 475.151 430 s(K)480.151 426 s(KL)480.151 430 s(6)491.362 426 s(=) 502.552 434 s(K)502.552 426 s(KL)502.552 434 s 1.837 533.956 425.99 514.491 422 m 1.837 533.956 428.99 528.956 427.965 m(=)513.741 434 s(6)513.741 434 s(?) 522.141 436 s(=)532.806 434 s(=)532.806 438 s(K)532.806 437.908 s(KL) 532.806 438 s 16 388(@)543.995 416 b %6/1 1.8 503.702 458 480.901 458 m 1.8 503.702 461 480.901 461 m(%) 475.151 474 s(K)480.151 470 s(KL)480.151 474 s(6)491.362 470 s(=) 502.552 478 s(K)502.552 470 s(KL)502.552 478 s 1.837 533.956 469.99 514.491 466 m 1.837 533.956 472.99 528.956 471.965 m(=)513.741 478 s(6)513.741 478 s(?) 522.141 480 s(=)532.806 478 s(=)532.806 482 s(K)532.806 481.908 s(KL) 532.806 482 s 16 432(@)543.995 460 b (FFFFCCC)104.12 460 s (C)533.995 460 s (FFFFCCC)104.12 416 s (C)533.995 416 s (FFFFCCC)104.12 372 s (C)533.995 372 s (FFFFCCC)104.12 328 s (C)533.995 328 s (!)64 224 s(')80 230 s(')84.5 236 s(!)64 180 s(')80 186 s(')84.5 192 s(#) 64 136 s(')80 140 s(')84.5 146 s(")63.5 92 s(')80 94 s(')84.5 100 s 16 92(@)64 224 b 60.5 240 92 k %7/4 1.8 167.913 90 97.75 90 m(K)97 102 s(KL)97 104 s(%)126.381 102 s(6) 131.881 102 s(K)166.763 102 s(KL)166.763 104 s(@)201.644 92 s %7/3 1.8 167.913 138 97.75 138 m(6)97 150 s(K)131.881 150 s(KL)131.881 152 s(6) 166.763 150 s 16 108(@)201.644 136 b %7/2 1.8 121.404 184 97.75 184 m 1.8 121.404 187 97.75 187 m(=)97 198 s(K) 97 196 s(KL)97 200 s(6)108.627 196 s(=)120.254 198 s(=)120.254 202 s(K) 120.254 196 s(KL)120.254 204 s 1.825 156.285 184.003 132.631 188 m 1.825 156.285 187.003 132.631 191 m(=)131.881 198 s(=)131.881 202 s(K) 131.881 200 s(KL)131.881 202 s(=)143.508 198 s(K)143.508 198.036 s(KL) 143.508 200 s(=)155.135 198 s(K)155.135 196.071 s(KL)155.135 198 s 1.825 191.167 183.932 167.513 187.929 m 1.825 191.167 186.932 167.513 190.929 m(=)166.763 198 s(K) 166.763 199.929 s(KL)166.763 200 s(=)178.39 198 s(K)178.39 197.965 s(KL) 178.39 198 s(6)190.017 196 s 16 152(@)201.644 180 b %7/1 1.8 121.404 228 97.75 228 m 1.8 121.404 231 97.75 231 m(=)97 242 s(K) 97 240 s(KL)97 244 s(6)108.627 240 s(=)120.254 242 s(=)120.254 246 s(K) 120.254 240 s(KL)120.254 248 s 1.825 156.285 228.003 132.631 232 m 1.825 156.285 231.003 132.631 235 m(=)131.881 242 s(=)131.881 246 s(K) 131.881 244 s(KL)131.881 246 s(=)143.508 242 s(K)143.508 242.036 s(KL) 143.508 244 s(=)155.135 242 s(K)155.135 240.071 s(KL)155.135 242 s 1.825 191.167 227.932 167.513 231.929 m 1.825 191.167 230.932 167.513 234.929 m(=)166.763 242 s(K) 166.763 243.929 s(KL)166.763 244 s(=)178.39 242 s(K)178.39 241.965 s(KL) 178.39 242 s(6)190.017 240 s 16 196(@)201.644 224 b rm 10 ss(7)64 248 s 70.5 246 62 246 62 257 70.5 257 70.5 246 5 62 246 0.666 ll %8/4 -1.8 228.822 114 214.47 114 m mf 10 ss(5)208.62 98 s it 10 ss(C.B.) 216.682 117 s mf 10 ss(5)222.572 98 s(=)222.572 86 s(5)222.572 84 s(.) 237.525 96 s(@)250.477 92 s %8/3 1.817 223.722 139.945 209.37 141.939 m(=)208.62 154 s(K)208.62 153.939 s (KL)208.62 154 s(6)222.572 152 s(.)237.525 140 s 16 108(@)250.477 136 b %8/2 1.817 223.722 181.945 209.37 183.939 m(K)208.62 195.939 s(KL) 208.62 196 s(\210)208.62 204 s(%)217.572 194 s(6)222.572 194 s(.) 237.525 184 s 16 152(@)250.477 180 b %8/1 1.817 223.722 225.945 209.37 227.939 m(K)208.62 239.939 s(KL) 208.62 240 s(\210)208.62 248 s(%)217.572 238 s(6)222.572 238 s(.) 237.525 228 s 16 196(@)250.477 224 b %9/4 (.)258.453 96 s 1.811 307.437 95.955 272.155 99.941 m(=)271.405 110 s(K) 271.405 111.941 s(KL)271.405 112 s(6)306.287 108 s(@)341.168 92 s %9/3 (.)258.453 140 s 1.811 307.437 131.955 272.155 135.941 m(K) 271.405 147.941 s(KL)271.405 148 s(6)306.287 144 s 16 108(@)341.168 136 b %9/2 (=)257.453 198 s(8)257.453 200 s 1.8 295.809 186 272.155 186 m 1.8 295.809 189 272.155 189 m(=)271.405 198 s(K)271.405 198 s(KL) 271.405 200 s 260.453 206 274.405 206 3.185 cv(=)283.032 198 s(6) 283.032 198 s(=)294.659 198 s(K)294.659 198 s(KL)294.659 200 s 1.825 330.691 177.932 307.037 181.929 m 1.825 330.691 180.932 307.037 184.929 m(K)306.287 193.929 s(KL) 306.287 194 s(K)317.914 191.965 s(KL)317.914 192 s(6)329.541 190 s 16 152(@)341.168 180 b %9/1 (=)257.453 242 s(8)257.453 244 s 1.8 295.809 230 272.155 230 m 1.8 295.809 233 272.155 233 m(=)271.405 242 s(K)271.405 242 s(KL) 271.405 244 s 260.453 250 274.405 250 3.185 cv(=)283.032 242 s(6) 283.032 242 s(=)294.659 242 s(K)294.659 242 s(KL)294.659 244 s 1.825 330.691 221.932 307.037 225.929 m 1.825 330.691 224.932 307.037 228.929 m(K)306.287 237.929 s(KL) 306.287 238 s(K)317.914 235.965 s(KL)317.914 236 s(6)329.541 234 s 16 196(@)341.168 224 b %10/4 1.823 398.128 89.936 348.894 97.911 m(=)348.144 110 s(K) 348.144 109.911 s(KL)348.144 110 s(K)383.025 104.261 s(KL)383.025 106 s(6) 396.978 102 s(@)414.569 92 s %10/3 1.871 398.128 143.982 348.894 130 m(6)348.144 142 s(=)383.025 154 s(K) 383.025 151.906 s(KL)383.025 156 s(=)396.978 154 s(K)396.978 155.868 s(KL) 396.978 156 s 16 108(@)414.569 136 b %10/2 1.825 372.548 183.997 348.894 180 m 1.825 372.548 186.997 348.894 183 m(6) 348.144 192 s(K)359.771 193.964 s(KL)359.771 194 s(K)371.398 195.929 s(KL) 371.398 196 s 1.808 404.092 179.96 383.775 181.951 m 1.808 404.092 182.96 399.092 183.45 m(K)383.025 193.951 s(KL) 383.025 194 s(?)391.425 196 s(6)402.942 192 s 16 152(@)414.569 180 b %10/1 1.825 372.548 227.997 348.894 224 m 1.825 372.548 230.997 348.894 227 m(6) 348.144 236 s(K)359.771 237.964 s(KL)359.771 238 s(K)371.398 239.929 s(KL) 371.398 240 s 1.808 404.092 223.96 383.775 225.951 m 1.808 404.092 226.96 399.092 227.45 m(K)383.025 237.951 s(KL) 383.025 238 s(?)391.425 240 s(6)402.942 236 s 16 196(@)414.569 224 b %11/4 1.877 449.254 87.882 422.295 95.861 m 1.877 449.254 90.882 422.295 98.861 m 1.877 449.254 93.882 444.254 95.362 m(K)421.545 107.861 s(KL) 421.545 108 s(?)429.945 108 s(6)448.104 100 s -1.884 489.236 110.668 465.582 118 m(5)459.732 102 s(J)482.986 94.792 s(JL) 482.986 88 s(@)496.939 92 s %11/3 1.819 449.254 137.941 422.295 141.93 m 1.819 449.254 140.941 422.295 144.93 m 1.819 449.254 143.941 444.254 144.681 m(=)421.545 154 s(K) 421.545 153.93 s(KL)421.545 154 s(?)429.945 156 s(6)448.104 150 s 1.806 484.136 133.967 460.482 135.953 m(K)459.732 147.953 s(KL) 459.732 148 s(6)482.986 146 s 16 108(@)496.939 136 b %11/2 1.8 445.949 176 422.295 176 m 1.8 445.949 179 422.295 179 m(K) 421.545 188 s(KL)421.545 190 s(K)433.172 188 s(KL)433.172 192 s(6) 444.799 188 s 1.8 484.136 174 460.482 174 m 1.8 472.509 177 460.482 177 m(6)459.732 186 s(K)471.359 186 s(KL) 471.359 188 s(K)482.986 186 s(KL)482.986 188 s(\210)482.986 199 s 16 152(@)496.939 180 b %11/1 1.8 445.949 220 422.295 220 m 1.8 445.949 223 422.295 223 m(K) 421.545 232 s(KL)421.545 234 s(K)433.172 232 s(KL)433.172 236 s(6) 444.799 232 s 1.8 484.136 218 460.482 218 m 1.8 472.509 221 460.482 221 m(6)459.732 230 s(K)471.359 230 s(KL) 471.359 232 s(K)482.986 230 s(KL)482.986 232 s(\210)482.986 243 s 16 196(@)496.939 224 b %12/4 (5)503.915 94 s(.)523.519 96 s(B)542.196 92 s(@)540.296 92 s(I) 537.796 96 s %12/3 (6)503.915 144 s(.)523.519 140 s 16 108(B)542.196 136 b 16 108(@)540.296 136 b(I)537.796 140 s %12/2 (6)503.915 186 s(.)523.519 184 s 16 152(B)542.196 180 b 16 152(@)540.296 180 b(I)537.796 184 s %12/1 (6)503.915 230 s(.)523.519 228 s 16 196(B)542.196 224 b 16 196(@)540.296 224 b(I)537.796 228 s (FFFFCCCCCCC)64 224 s (C)533.996 224 s (FFFFCCCCCCC)64 180 s (C)533.996 180 s (FFFFCCCCCCC)64 136 s (C)533.996 136 s (FFFFCCCCCCC)64 92 s (C)533.996 92 s pagesave restore showpage %%Page: 5 5 %%BeginPageSetup /pagesave save def %%EndPageSetup rm 10 ss( )44.2 800 s( 5)553 800 s mf 10 ss(!)64 753 s(')80 759 s(') 84.5 765 s(!)64 709 s(')80 715 s(')84.5 721 s(#)64 665 s(')80 669 s(') 84.5 675 s(")63.5 621 s(')80 623 s(')84.5 629 s 16 621(@)64 753 b 60.5 769 621 k %13/4 (.)98 625 s 1.811 147.005 624.955 111.38 628.945 m(=)110.63 639 s(K) 110.63 640.945 s(KL)110.63 641 s(\()141.18 637 s(6)145.855 637 s (@)179.931 621 s %13/3 (.)98 669 s 1.811 147.005 660.955 111.38 664.945 m(K)110.63 676.945 s(KL) 110.63 677 s(6)145.855 673 s 16 637(@)179.931 665 b %13/2 (8)97 719 s 1.859 134.497 712.987 111.38 707 m 1.859 134.497 715.987 111.38 710 m(6)110.63 719 s 100 726 113.63 726 3.089 cv(K)121.988 721.941 s(KL)121.988 723 s(K)133.347 724.883 s(KL) 133.347 725 s 1.826 169.722 710.931 146.605 714.93 m 1.826 169.722 713.931 146.605 717.93 m(')141.355 727 s(=)145.855 727 s(K) 145.855 726.93 s(KL)145.855 727 s(K)157.214 724.965 s(KL)157.214 725 s(6) 168.572 723 s 16 681(@)179.931 709 b %13/1 (8)97 763 s 1.859 134.497 756.987 111.38 751 m 1.859 134.497 759.987 111.38 754 m(6)110.63 763 s 100 770 113.63 770 3.089 cv(K)121.988 765.941 s(KL)121.988 767 s(K)133.347 768.883 s(KL) 133.347 769 s 1.826 169.722 754.931 146.605 758.93 m 1.826 169.722 757.931 146.605 761.93 m(')141.355 771 s(=)145.855 771 s(K) 145.855 770.93 s(KL)145.855 771 s(K)157.214 768.965 s(KL)157.214 769 s(6) 168.572 767 s 16 725(@)179.931 753 b rm 10 ss(13)64 777 s 75.5 775 62 775 62 786 75.5 786 75.5 775 5 62 775 0.666 ll %14/4 -1.803 261.147 645.023 192.596 641.048 m mf 10 ss(J)186.746 625.048 s(JL) 186.746 625 s(J)220.821 627.024 s(JL)220.821 627 s(5)254.897 629 s (@)288.973 621 s %14/3 1.806 256.047 672.963 187.496 667 m(6)186.746 679 s(\()216.146 683 s(=) 220.821 683 s(K)220.821 681.964 s(KL)220.821 683 s(=)254.897 683 s(K) 254.897 684.929 s(KL)254.897 685 s 16 637(@)288.973 665 b %14/2 1.8 210.613 707 187.496 707 m 1.8 210.613 710 187.496 710 m(K) 186.746 719 s(KL)186.746 721 s(6)198.104 719 s(K)209.463 719 s(KL) 209.463 721 s 1.8 244.688 709 221.571 709 m 1.8 244.688 712 221.571 712 m(K)220.821 721 s(KL)220.821 723 s(6) 232.18 721 s(K)243.538 721 s(KL)243.538 723 s 1.894 278.764 704.868 255.647 712.473 m 1.894 278.764 707.868 255.647 715.473 m(K)254.897 724.473 s(KL) 254.897 725 s(K)266.256 720.736 s(KL)266.256 721 s(6)277.614 717 s 16 681(@)288.973 709 b %14/1 1.8 210.613 751 187.496 751 m 1.8 210.613 754 187.496 754 m(K) 186.746 763 s(KL)186.746 765 s(6)198.104 763 s(K)209.463 763 s(KL) 209.463 765 s 1.8 244.688 753 221.571 753 m 1.8 244.688 756 221.571 756 m(K)220.821 765 s(KL)220.821 767 s(6) 232.18 765 s(K)243.538 765 s(KL)243.538 767 s 1.894 278.764 748.868 255.647 756.473 m 1.894 278.764 751.868 255.647 759.473 m(K)254.897 768.473 s(KL) 254.897 769 s(K)266.256 764.736 s(KL)266.256 765 s(6)277.614 761 s 16 725(@)288.973 753 b %15/4 1.802 333.14 620.966 298.638 619 m(6)297.888 631 s(K)331.99 632.943 s(KL) 331.99 633 s(7)366.066 619 s(@)401.038 621 s %15/3 1.803 367.216 664.977 298.638 668.954 m(')293.388 681 s(K) 297.888 680.954 s(KL)297.888 681 s(K)331.99 678.977 s(KL)331.99 679 s(6) 366.066 677 s 16 637(@)401.038 665 b %15/2 1.826 321.782 710.98 298.638 707 m 1.826 321.782 713.98 298.638 710 m(6) 297.888 719 s(K)309.273 720.958 s(KL)309.273 721 s(K)320.632 722.911 s(KL) 320.632 723 s 1.8 355.857 705 332.74 705 m 1.8 355.857 708 332.74 708 m(K) 331.99 717 s(KL)331.99 721 s(6)343.349 717 s(K)354.707 717 s(KL) 354.707 721 s 1.824 390.829 702.899 366.816 706.885 m 1.824 390.829 705.899 366.816 709.885 m(K)366.066 718.885 s(KL) 366.066 719 s(6)377.425 717 s(\()385.429 715 s(K)389.679 714.966 s(KL) 389.679 715 s 16 681(@)401.038 709 b %15/1 1.826 321.782 754.98 298.638 751 m 1.826 321.782 757.98 298.638 754 m(6) 297.888 763 s(K)309.273 764.958 s(KL)309.273 765 s(K)320.632 766.911 s(KL) 320.632 767 s 1.8 355.857 749 332.74 749 m 1.8 355.857 752 332.74 752 m(K) 331.99 761 s(KL)331.99 765 s(6)343.349 761 s(K)354.707 761 s(KL) 354.707 765 s 1.824 390.829 746.899 366.816 750.885 m 1.824 390.829 749.899 366.816 753.885 m(K)366.066 762.885 s(KL) 366.066 763 s(6)377.425 761 s(\()385.429 759 s(K)389.679 758.966 s(KL) 389.679 759 s 16 725(@)401.038 753 b %16/4 (7)409.703 625 s 1.871 438.421 625.002 424.391 629 m(=)423.641 639 s(=) 423.641 643 s(K)423.641 641 s(KL)423.641 643 s(=)437.271 639 s(K) 437.271 637.116 s(KL)437.271 639 s(@)450.902 621 s %16/3 1.8 438.421 663 410.453 663 m(6)409.703 675 s(K)423.641 675 s(KL) 423.641 679 s(6)437.271 675 s 16 637(@)450.902 665 b %16/2 (\()405.453 715 s(8)409.703 715 s(6)423.641 717 s 16 681(@)450.902 709 b %16/1 (\()405.453 759 s(8)409.703 759 s(6)423.641 761 s 16 725(@)450.902 753 b %17/4 (.)458.717 625 s 1.812 511.071 618.953 476.596 622.952 m(\215\(\216) 465.796 635 s(K)475.846 634.952 s(KL)475.846 635 s(6)509.921 631 s (@)543.997 621 s %17/3 (.)458.717 669 s 1.812 511.071 668.953 476.596 672.952 m(=)475.846 683 s(K) 475.846 684.952 s(KL)475.846 685 s(\215\(\216)498.866 681 s(6) 509.921 681 s 16 637(@)543.997 665 b %17/2 (8)457.717 721 s 1.8 499.713 709 476.596 709 m 1.8 499.713 712 476.596 712 m(6)475.846 721 s 460.717 727 478.846 727 4.438 cv(K)487.204 721 s(KL)487.204 725 s(K)498.563 721 s(KL) 498.563 723 s 1.826 533.789 704.931 510.671 708.93 m 1.826 533.789 707.931 510.671 711.93 m(K)509.921 720.93 s(KL) 509.921 721 s(K)521.28 718.965 s(KL)521.28 719 s(6)532.639 717 s 16 681(@)543.997 709 b %17/1 (8)457.717 765 s 1.8 499.713 753 476.596 753 m 1.8 499.713 756 476.596 756 m(6)475.846 765 s 460.717 771 478.846 771 4.438 cv(K)487.204 765 s(KL)487.204 769 s(K)498.563 765 s(KL) 498.563 767 s 1.826 533.789 748.931 510.671 752.93 m 1.826 533.789 751.931 510.671 755.93 m(K)509.921 764.93 s(KL) 509.921 765 s(K)521.28 762.965 s(KL)521.28 763 s(6)532.639 761 s 16 725(@)543.997 753 b (FFFFCCCCCCC)64 753 s (C)533.997 753 s (FFFFCCCCCCC)64 709 s (C)533.997 709 s (FFFFCCCCCCC)64 665 s (C)533.997 665 s (FFFFCCCCCCC)64 621 s (C)533.997 621 s (!)64 566 s(')80 572 s(')84.5 578 s(!)64 522 s(')80 528 s(')84.5 534 s(#) 64 478 s(')80 482 s(')84.5 488 s(")63.5 434 s(')80 436 s(')84.5 442 s 16 434(@)64 566 b 60.5 582 434 k %18/4 -1.802 176.745 456.022 102.85 452.032 m(J)97 436.032 s(JL)97 436 s(J) 133.747 438.016 s(JL)133.747 438 s(5)170.495 440 s(@)207.243 434 s %18/3 1.805 171.645 483.985 97.75 478 m(6)97 490 s(K)133.747 492.976 s(KL) 133.747 494 s(=)170.495 496 s(K)170.495 495.953 s(KL)170.495 496 s 16 450(@)207.243 478 b %18/2 1.8 122.648 518 97.75 518 m 1.8 122.648 521 97.75 521 m(K)97 530 s(KL) 97 532 s(6)109.249 530 s(K)121.498 530 s(KL)121.498 532 s 1.8 159.396 520 134.497 520 m 1.8 159.396 523 134.497 523 m(K) 133.747 532 s(KL)133.747 534 s(6)145.997 532 s(K)158.246 532 s(KL) 158.246 534 s 1.8 196.144 516 171.245 516 m 1.8 196.144 519 171.245 519 m(K)170.495 528 s(KL)170.495 536 s(6) 182.745 528 s(=)194.994 540 s(K)194.994 528 s(K)194.994 538 s(KL) 194.994 542 s 16 494(@)207.243 522 b %18/1 1.8 122.648 562 97.75 562 m 1.8 122.648 565 97.75 565 m(K)97 574 s(KL) 97 576 s(6)109.249 574 s(K)121.498 574 s(KL)121.498 576 s 1.8 159.396 564 134.497 564 m 1.8 159.396 567 134.497 567 m(K) 133.747 576 s(KL)133.747 578 s(6)145.997 576 s(K)158.246 576 s(KL) 158.246 578 s 1.8 196.144 560 171.245 560 m 1.8 196.144 563 171.245 563 m(K)170.495 572 s(KL)170.495 580 s(6) 182.745 572 s(=)194.994 584 s(K)194.994 572 s(K)194.994 582 s(KL) 194.994 586 s 16 538(@)207.243 566 b rm 10 ss(18)64 590 s 75.5 588 62 588 62 599 75.5 599 75.5 588 5 62 588 0.666 ll %19/4 mf 10 ss(8)214.592 442 s -1.884 272.289 455.319 257.189 460 m(5) 251.339 444 s(J)266.039 439.443 s(JL)266.039 430 s(@)280.738 434 s %19/3 1.84 234.115 479.915 215.342 483.913 m 1.84 234.115 482.915 215.342 486.913 m(=)214.592 496 s(K) 214.592 495.913 s(KL)214.592 496 s 173.495 502 217.592 502 5 cv(6) 232.965 492 s 1.815 267.189 475.947 252.089 477.94 m(K)251.339 489.94 s(KL) 251.339 490 s(6)266.039 488 s 16 450(@)280.738 478 b %19/2 1.822 240.24 521.936 215.342 525.919 m 1.822 240.24 524.936 215.342 528.919 m(K)214.592 537.919 s(KL) 214.592 538 s(K)226.841 535.96 s(KL)226.841 536 s(6)239.09 534 s 1.815 267.189 517.947 252.089 519.94 m(K)251.339 531.94 s(KL) 251.339 532 s(6)266.039 530 s 16 494(@)280.738 522 b %19/1 1.822 240.24 565.936 215.342 569.919 m 1.822 240.24 568.936 215.342 572.919 m(K)214.592 581.919 s(KL) 214.592 582 s(K)226.841 579.96 s(KL)226.841 580 s(6)239.09 578 s 1.815 267.189 561.947 252.089 563.94 m(K)251.339 575.94 s(KL) 251.339 576 s(6)266.039 574 s 16 538(@)280.738 566 b %20/4 (7)288.087 436 s 1.861 318.942 433.894 303.843 437.88 m(K) 303.093 449.88 s(KL)303.093 450 s(6)317.792 446 s(@)348.695 434 s %20/3 1.894 318.942 482.968 288.837 473.064 m(K)288.087 485.064 s(KL) 288.087 486 s(6)303.093 490 s(=)317.792 496 s(K)317.792 494.836 s(KL) 317.792 496 s 16 450(@)348.695 478 b %20/2 (8)288.087 528 s 1.812 337.596 523.492 303.843 519.51 m 1.812 337.596 526.492 324.947 525 m 1.812 337.596 529.492 324.947 528 m(K) 303.093 531.51 s(KL)303.093 532 s(?)311.493 534 s(\()319.947 534 s(6) 324.197 534 s(K)336.446 535.445 s(KL)336.446 536 s 16 494(@)348.695 522 b %20/1 (8)288.087 572 s 1.812 337.596 567.492 303.843 563.51 m 1.812 337.596 570.492 324.947 569 m 1.812 337.596 573.492 324.947 572 m(K) 303.093 575.51 s(KL)303.093 576 s(?)311.493 578 s(\()319.947 578 s(6) 324.197 578 s(K)336.446 579.445 s(KL)336.446 580 s 16 538(@)348.695 566 b %21/4 1.81 413.633 433.019 358.644 439.012 m 1.81 373.754 440.366 358.644 442.012 m 1.81 373.754 443.366 368.754 443.911 m(=)357.894 452 s(K) 357.894 451.012 s(KL)357.894 452 s(?)366.294 454 s(K)372.604 449.409 s(KL) 372.604 450 s(6)385.534 448 s(K)412.483 445.062 s(KL)412.483 446 s (@)451.681 434 s %21/3 1.804 413.633 483.959 358.644 480 m(6)357.894 492 s(=)385.534 496 s(K) 385.534 493.99 s(KL)385.534 498 s(=)412.483 496 s(K)412.483 495.93 s(KL) 412.483 496 s 16 450(@)451.681 478 b %21/2 1.807 401.383 525.404 358.644 521.43 m 1.807 401.383 528.404 358.644 524.43 m 1.807 373.754 528.835 368.754 528.37 m 1.807 401.383 531.404 396.383 530.939 m(\()353.644 534 s(K) 357.894 533.43 s(KL)357.894 534 s(?)366.294 534 s(K)372.604 534.798 s(KL) 372.604 538 s(%)380.534 536 s(6)385.534 536 s(?)393.934 538 s(K) 400.233 537.367 s(KL)400.233 538 s 1.8 440.581 523 413.233 523 m 1.8 440.581 526 413.233 526 m 1.8 440.581 529 427.932 529 m 1.8 440.581 532 427.932 532 m(K)412.483 535 s(KL)412.483 538 s(?) 420.883 538 s(K)427.182 535 s(KL)427.182 536 s(K)439.431 535 s(KL) 439.431 538 s 16 494(@)451.681 522 b %21/1 1.807 401.383 569.404 358.644 565.43 m 1.807 401.383 572.404 358.644 568.43 m 1.807 373.754 572.835 368.754 572.37 m 1.807 401.383 575.404 396.383 574.939 m(\()353.644 578 s(K) 357.894 577.43 s(KL)357.894 578 s(?)366.294 578 s(K)372.604 578.798 s(KL) 372.604 582 s(%)380.534 580 s(6)385.534 580 s(?)393.934 582 s(K) 400.233 581.367 s(KL)400.233 582 s 1.8 440.581 567 413.233 567 m 1.8 440.581 570 413.233 570 m 1.8 440.581 573 427.932 573 m 1.8 440.581 576 427.932 576 m(K)412.483 579 s(KL)412.483 582 s(?) 420.883 582 s(K)427.182 579 s(KL)427.182 580 s(K)439.431 579 s(KL) 439.431 582 s 16 538(@)451.681 566 b %22/4 1.8 514.243 428 462.38 428 m(%)456.63 444 s(K)461.63 440 s(KL) 461.63 444 s(6)498.394 440 s(K)513.093 440 s(KL)513.093 444 s (@)543.996 434 s %22/3 1.8 514.243 478 462.38 478 m(K)461.63 490 s(KL)461.63 494 s(%) 492.894 490 s(6)498.394 490 s(K)513.093 490 s(KL)513.093 494 s 16 450(@)543.996 478 b %22/2 1.8 487.294 520 462.38 520 m 1.8 487.294 523 462.38 523 m(=)461.63 540 s(K) 461.63 532 s(KL)461.63 540 s(6)473.895 532 s(=)486.144 540 s(=) 486.144 544 s(K)486.144 532 s(K)486.144 542 s(KL)486.144 544 s 1.812 532.897 526.018 499.144 530 m 1.812 532.897 529.018 520.247 530.51 m 1.812 532.897 532.018 520.247 533.51 m(=)498.394 540 s(=)498.394 544 s(K) 498.394 542 s(KL)498.394 544 s(?)506.794 546 s(=)519.497 540 s(K) 519.497 539.51 s(KL)519.497 542 s(=)531.747 540 s(K)531.747 538.065 s(KL) 531.747 540 s 16 494(@)543.996 522 b %22/1 1.8 487.294 564 462.38 564 m 1.8 487.294 567 462.38 567 m(=)461.63 584 s(K) 461.63 576 s(KL)461.63 584 s(6)473.895 576 s(=)486.144 584 s(=) 486.144 588 s(K)486.144 576 s(K)486.144 586 s(KL)486.144 588 s 1.812 532.897 570.018 499.144 574 m 1.812 532.897 573.018 520.247 574.51 m 1.812 532.897 576.018 520.247 577.51 m(=)498.394 584 s(=)498.394 588 s(K) 498.394 586 s(KL)498.394 588 s(?)506.794 590 s(=)519.497 584 s(K) 519.497 583.51 s(KL)519.497 586 s(=)531.747 584 s(K)531.747 582.065 s(KL) 531.747 584 s 16 538(@)543.996 566 b (FFFFCCCCCCC)64 566 s (C)533.996 566 s (FFFFCCCCCCC)64 522 s (C)533.996 522 s (FFFFCCCCCCC)64 478 s (C)533.996 478 s (FFFFCCCCCCC)64 434 s (C)533.996 434 s (!)64 379 s(')80 385 s(')84.5 391 s(!)64 335 s(')80 341 s(')84.5 347 s(#) 64 291 s(')80 295 s(')84.5 301 s(")63.5 247 s(')80 249 s(')84.5 255 s 16 247(@)64 379 b 60.5 395 247 k %23/4 1.8 163.219 245 97.75 245 m(K)97 257 s(KL)97 259 s(%)125.336 257 s(6) 130.836 257 s(K)162.069 257 s(KL)162.069 259 s(@)193.302 247 s %23/3 1.884 121.574 294.385 97.75 287 m 1.884 121.574 297.385 97.75 290 m 1.884 121.574 300.385 116.574 298.835 m(6)97 299 s(?)105.4 299 s(=) 120.424 309 s(K)120.424 306.261 s(KL)120.424 309 s 1.803 163.219 292.975 131.586 294.967 m(K)130.836 306.967 s(KL) 130.836 307 s(6)162.069 305 s 16 263(@)193.302 291 b %23/2 1.8 118.972 339 97.75 339 m 1.8 118.972 342 97.75 342 m(=)97 353 s(K) 97 351 s(KL)97 355 s(6)107.411 351 s(=)117.822 353 s(=)117.822 357 s(K) 117.822 351 s(KL)117.822 359 s 1.831 152.808 339.011 131.586 343 m 1.831 152.808 342.011 131.586 346 m(=)130.836 353 s(=)130.836 357 s(K) 130.836 355 s(KL)130.836 357 s(=)141.247 353 s(K)141.247 353.043 s(KL) 141.247 355 s(=)151.658 353 s(K)151.658 351.086 s(KL)151.658 353 s 1.831 184.041 338.925 162.819 342.914 m 1.831 184.041 341.925 162.819 345.914 m(=)162.069 353 s(K) 162.069 354.914 s(KL)162.069 355 s(=)172.48 353 s(K)172.48 352.957 s(KL) 172.48 353 s(6)182.891 351 s 16 307(@)193.302 335 b %23/1 1.8 118.972 383 97.75 383 m 1.8 118.972 386 97.75 386 m(=)97 397 s(K) 97 395 s(KL)97 399 s(6)107.411 395 s(=)117.822 397 s(=)117.822 401 s(K) 117.822 395 s(KL)117.822 403 s 1.831 152.808 383.011 131.586 387 m 1.831 152.808 386.011 131.586 390 m(=)130.836 397 s(=)130.836 401 s(K) 130.836 399 s(KL)130.836 401 s(=)141.247 397 s(K)141.247 397.043 s(KL) 141.247 399 s(=)151.658 397 s(K)151.658 395.086 s(KL)151.658 397 s 1.831 184.041 382.925 162.819 386.914 m 1.831 184.041 385.925 162.819 389.914 m(=)162.069 397 s(K) 162.069 398.914 s(KL)162.069 399 s(=)172.48 397 s(K)172.48 396.957 s(KL) 172.48 397 s(6)182.891 395 s 16 351(@)193.302 379 b rm 10 ss(23)64 403 s 75.5 401 62 401 62 412 75.5 412 75.5 401 5 62 401 0.666 ll %24/4 mf 10 ss(8)199.548 253 s 1.818 227.454 252.942 213.676 254.939 m(=) 212.926 265 s(K)212.926 266.939 s(KL)212.926 267 s(=)226.304 265 s(6) 226.304 265 s(@)238.797 247 s %24/3 1.843 227.454 290.912 200.298 296.886 m(=)199.548 309 s(K) 199.548 308.886 s(KL)199.548 309 s(K)212.926 305.943 s(KL)212.926 307 s(%) 221.304 303 s(6)226.304 303 s 16 263(@)238.797 291 b %24/2 1.818 214.076 336.942 200.298 338.939 m(K)199.548 350.939 s(KL) 199.548 351 s(%)207.926 349 s(6)212.926 349 s(.)227.304 339 s 16 307(@)238.797 335 b %24/1 1.818 214.076 380.942 200.298 382.939 m(K)199.548 394.939 s(KL) 199.548 395 s(%)207.926 393 s(6)212.926 393 s(.)227.304 383 s 16 351(@)238.797 379 b %25/4 1.807 289.919 246.153 245.793 250.124 m(K)245.043 262.124 s(KL) 245.043 263 s(6)257.536 261 s(K)288.769 258.189 s(KL)288.769 259 s (@)320.002 247 s %25/3 1.8 289.919 285 245.793 285 m(K)245.043 297 s(KL)245.043 305 s(6) 257.536 297 s(K)288.769 297 s(KL)288.769 299 s 16 263(@)320.002 291 b %25/2 (8)245.043 345 s 1.894 279.508 339.982 258.286 333 m 1.894 279.508 342.982 258.286 336 m(6)257.536 345 s 248.043 352 260.536 352 2.747 cv(K)267.947 348.425 s(KL)267.947 351 s(=) 278.358 353 s(K)278.358 351.85 s(KL)278.358 353 s 1.8 310.741 341 289.519 341 m 1.8 310.741 344 289.519 344 m(=) 288.769 353 s(K)288.769 353 s(KL)288.769 355 s(=)299.18 353 s(6) 299.18 353 s(=)309.591 353 s(K)309.591 353 s(KL)309.591 355 s 16 307(@)320.002 335 b %25/1 (8)245.043 389 s 1.894 279.508 383.982 258.286 377 m 1.894 279.508 386.982 258.286 380 m(6)257.536 389 s 248.043 396 260.536 396 2.747 cv(K)267.947 392.425 s(KL)267.947 395 s(=) 278.358 397 s(K)278.358 395.85 s(KL)278.358 397 s 1.8 310.741 385 289.519 385 m 1.8 310.741 388 289.519 388 m(=) 288.769 397 s(K)288.769 397 s(KL)288.769 399 s(=)299.18 397 s(6) 299.18 397 s(=)309.591 397 s(K)309.591 397 s(KL)309.591 399 s 16 351(@)320.002 379 b %26/4 1.824 377.683 239.256 329.598 247.238 m(K)328.848 259.238 s(KL) 328.848 261 s(%)337.333 257 s(6)342.333 257 s(K)376.533 251.323 s(KL) 376.533 253 s(@)407.766 247 s %26/3 1.8 377.683 291 329.598 291 m(%)323.848 303 s(6)328.848 303 s(K) 342.333 303 s(KL)342.333 307 s(6)376.533 303 s 16 263(@)407.766 291 b %26/2 (8)328.848 343 s 1.894 367.272 338.958 343.083 331 m 1.894 367.272 341.958 343.083 334 m(6)342.333 343 s 331.848 349 345.333 349 3.045 cv(%)350.711 349 s(K)355.711 347.401 s(KL) 355.711 349 s(K)366.122 350.826 s(KL)366.122 351 s 1.8 398.505 339 377.283 339 m 1.8 398.505 342 377.283 342 m(=) 376.533 353 s(K)376.533 351 s(KL)376.533 353 s(6)386.944 351 s(=) 397.355 353 s(K)397.355 351 s(KL)397.355 353 s 16 307(@)407.766 335 b %26/1 (8)328.848 387 s 1.894 367.272 382.958 343.083 375 m 1.894 367.272 385.958 343.083 378 m(6)342.333 387 s 331.848 393 345.333 393 3.045 cv(%)350.711 393 s(K)355.711 391.401 s(KL) 355.711 393 s(K)366.122 394.826 s(KL)366.122 395 s 1.8 398.505 383 377.283 383 m 1.8 398.505 386 377.283 386 m(=) 376.533 397 s(K)376.533 395 s(KL)376.533 397 s(6)386.944 395 s(=) 397.355 397 s(K)397.355 395 s(KL)397.355 397 s 16 351(@)407.766 379 b %27/4 1.8 441.033 239 414.762 239 m(K)414.012 251 s(KL)414.012 259 s(6) 426.505 251 s(K)439.883 251 s(KL)439.883 253 s(@)452.376 247 s %27/3 1.8 441.033 291 414.762 291 m(K)414.012 303 s(KL)414.012 305 s(K) 426.505 303 s(KL)426.505 307 s(%)434.883 303 s(6)439.883 303 s 16 263(@)452.376 291 b %27/2 1.8 441.033 327 414.762 327 m(K)414.012 339 s(KL)414.012 341 s(K) 426.505 339 s(KL)426.505 343 s(6)439.883 339 s 16 307(@)452.376 335 b %27/1 1.8 441.033 371 414.762 371 m(K)414.012 383 s(KL)414.012 385 s(K) 426.505 383 s(KL)426.505 387 s(6)439.883 383 s 16 351(@)452.376 379 b %28/4 -1.8 519.009 265 464.472 265 m(5)458.622 249 s(J)481.526 249 s(JL) 481.526 245 s(J)512.759 249 s(JL)512.759 247 s(@)543.992 247 s %28/3 1.81 513.909 298.999 459.372 293 m(6)458.622 305 s(=)481.526 309 s(=) 481.526 313 s(K)481.526 307.519 s(KL)481.526 313 s(=)512.759 309 s(K) 512.759 310.955 s(KL)512.759 311 s 16 263(@)543.992 291 b %28/2 1.884 472.265 328.996 459.372 325 m 1.884 472.265 331.996 459.372 328 m 1.884 472.265 334.996 467.265 333.446 m(6)458.622 337 s(?)467.022 339 s(K) 471.115 340.872 s(K)471.115 350.872 s(KL)471.115 351 s 1.831 503.498 338.925 482.276 342.914 m 1.831 503.498 341.925 482.276 345.914 m(=)481.526 353 s(K) 481.526 354.914 s(KL)481.526 355 s(=)491.937 353 s(K)491.937 352.957 s(KL) 491.937 353 s(6)502.348 351 s 1.8 534.731 335 513.509 335 m 1.8 534.731 338 513.509 338 m(K)512.759 347 s(KL)512.759 349 s(K) 523.17 347 s(KL)523.17 351 s(6)533.581 347 s 16 307(@)543.992 335 b %28/1 1.884 472.265 372.996 459.372 369 m 1.884 472.265 375.996 459.372 372 m 1.884 472.265 378.996 467.265 377.446 m(6)458.622 381 s(?)467.022 383 s(K) 471.115 384.872 s(K)471.115 394.872 s(KL)471.115 395 s 1.831 503.498 382.925 482.276 386.914 m 1.831 503.498 385.925 482.276 389.914 m(=)481.526 397 s(K) 481.526 398.914 s(KL)481.526 399 s(=)491.937 397 s(K)491.937 396.957 s(KL) 491.937 397 s(6)502.348 395 s 1.8 534.731 379 513.509 379 m 1.8 534.731 382 513.509 382 m(K)512.759 391 s(KL)512.759 393 s(K) 523.17 391 s(KL)523.17 395 s(6)533.581 391 s 16 351(@)543.992 379 b (FFFFCCCCCCC)64 379 s (C)533.992 379 s (FFFFCCCCCCC)64 335 s (C)533.992 335 s (FFFFCCCCCCC)64 291 s (C)533.992 291 s (FFFFCCCCCCC)64 247 s (C)533.992 247 s (!)64 192 s(')80 198 s(')84.5 204 s(!)64 148 s(')80 154 s(')84.5 160 s(#) 64 104 s(')80 108 s(')84.5 114 s(")63.5 60 s(')80 62 s(')84.5 68 s 16 60(@)64 192 b 60.5 208 60 k %29/4 1.814 176.888 59.971 97.75 50 m(6)97 62 s(K)119.496 64.834 s(K) 119.496 74.834 s(KL)119.496 76 s(K)175.738 71.92 s(KL)175.738 72 s (@)231.98 60 s %29/3 1.8 176.888 106 97.75 106 m(=)97 122 s(K)97 118 s(KL)97 122 s(6) 119.496 118 s(=)175.738 122 s(=)175.738 126 s(K)175.738 118 s(KL) 175.738 126 s 16 76(@)231.98 104 b %29/2 (8)97 158 s 1.809 158.14 149.978 120.246 146 m 1.809 158.14 152.978 120.246 149 m(6)119.496 158 s 100 165 122.496 165 5 cv(\()133.993 160 s(K)138.243 159.968 s(KL)138.243 160 s(%) 151.99 162 s(K)156.99 161.936 s(KL)156.99 162 s 1.809 214.382 155.978 176.488 152 m 1.809 214.382 158.978 176.488 155 m(6) 175.738 164 s(=)194.485 166 s(K)194.485 165.968 s(KL)194.485 166 s(=) 213.232 166 s(K)213.232 167.936 s(KL)213.232 168 s 16 120(@)231.98 148 b %29/1 (8)97 202 s 1.809 158.14 193.978 120.246 190 m 1.809 158.14 196.978 120.246 193 m(6)119.496 202 s 100 209 122.496 209 5 cv(\()133.993 204 s(K)138.243 203.968 s(KL)138.243 204 s(%) 151.99 206 s(K)156.99 205.936 s(KL)156.99 206 s 1.809 214.382 199.978 176.488 196 m 1.809 214.382 202.978 176.488 199 m(6) 175.738 208 s(=)194.485 210 s(K)194.485 209.968 s(KL)194.485 210 s(=) 213.232 210 s(K)213.232 211.936 s(KL)213.232 212 s 16 164(@)231.98 192 b rm 10 ss(29)64 216 s 75.5 214 62 214 62 225 75.5 225 75.5 214 5 62 214 0.666 ll %30/4 1.813 310.779 53.951 246.578 61.911 m mf 10 ss(K)245.828 73.911 s(KL) 245.828 74 s(%)281.633 70 s(K)287.133 68.79 s(KL)287.133 70 s(6) 309.629 66 s(@)358.164 60 s %30/3 1.8 310.779 104 246.578 104 m(%)240.828 116 s(6)245.828 116 s(K) 287.133 116 s(KL)287.133 120 s(6)309.629 116 s 16 76(@)358.164 104 b %30/2 1.884 269.536 151.116 246.578 144 m 1.884 269.536 154.116 246.578 147 m 1.884 269.536 157.116 264.536 155.566 m(6)245.828 156 s(?)254.228 156 s(=) 268.386 166 s(=)268.386 170 s(K)268.386 162.992 s(KL)268.386 170 s 1.805 340.567 152.049 287.883 156 m 1.805 340.567 155.049 321.42 156.485 m 1.805 340.567 158.049 321.42 159.485 m(=)287.133 166 s(=)287.133 170 s(K) 287.133 168 s(KL)287.133 170 s(?)295.533 172 s(=)320.67 166 s(K) 320.67 165.485 s(KL)320.67 168 s(=)339.417 166 s(K)339.417 164.079 s(KL) 339.417 166 s 16 120(@)358.164 148 b %30/1 1.884 269.536 195.116 246.578 188 m 1.884 269.536 198.116 246.578 191 m 1.884 269.536 201.116 264.536 199.566 m(6)245.828 200 s(?)254.228 200 s(=) 268.386 210 s(=)268.386 214 s(K)268.386 206.992 s(KL)268.386 214 s 1.805 340.567 196.049 287.883 200 m 1.805 340.567 199.049 321.42 200.485 m 1.805 340.567 202.049 321.42 203.485 m(=)287.133 210 s(=)287.133 214 s(K) 287.133 212 s(KL)287.133 214 s(?)295.533 216 s(=)320.67 210 s(K) 320.67 209.485 s(KL)320.67 212 s(=)339.417 210 s(K)339.417 208.079 s(KL) 339.417 210 s 16 164(@)358.164 192 b %31/4 -1.803 438.718 82.025 375.262 78.028 m -1.803 419.97 77.844 375.262 75.028 m -1.803 419.97 74.844 414.97 74.529 m(J)369.412 62.028 s(JL)369.412 62 s(?) 377.812 64 s(J)413.72 64.819 s(JL)413.72 64 s(5)432.468 66 s it 10 ss(C.B.) 449.074 84 s mf 10 ss(7)454.964 66 s(=)454.964 54 s(5)454.964 52 s (@)478.211 60 s %31/3 1.8 456.114 104 370.162 104 m(K)369.412 116 s(KL)369.412 118 s(K) 432.468 116 s(KL)432.468 118 s(%)449.964 116 s(6)454.964 116 s 16 76(@)478.211 104 b %31/2 1.839 408.056 148.005 370.162 156 m 1.839 408.056 151.005 370.162 159 m(=) 369.412 166 s(=)369.412 170 s(K)369.412 168 s(KL)369.412 172 s(=) 388.159 166 s(K)388.159 164.045 s(KL)388.159 168 s(K)406.906 160.089 s(KL) 406.906 164 s 1.806 456.114 153.966 433.218 155.957 m(=)432.468 166 s(K) 432.468 167.957 s(KL)432.468 168 s(=)454.964 166 s(6)454.964 166 s(\210) 454.964 174 s 16 120(@)478.211 148 b %31/1 1.839 408.056 192.005 370.162 200 m 1.839 408.056 195.005 370.162 203 m(=) 369.412 210 s(=)369.412 214 s(K)369.412 212 s(KL)369.412 216 s(=) 388.159 210 s(K)388.159 208.045 s(KL)388.159 212 s(K)406.906 204.089 s(KL) 406.906 208 s 1.806 456.114 197.966 433.218 199.957 m(=)432.468 210 s(K) 432.468 211.957 s(KL)432.468 212 s(=)454.964 210 s(6)454.964 210 s(\210) 454.964 218 s 16 164(@)478.211 192 b %32/4 (5)489.459 58 s(.)520.454 64 s(B)542.498 60 s(@)540.498 60 s %32/3 (6)489.459 118 s(.)520.454 108 s 16 76(B)542.498 104 b 16 76(@)540.498 104 b %32/2 (6)489.459 164 s(.)520.454 152 s 16 120(B)542.498 148 b 16 120(@)540.498 148 b %32/1 (6)489.459 208 s(.)520.454 196 s 16 164(B)542.498 192 b 16 164(@)540.498 192 b (FFFFCCCCCCC)64 192 s (C)533.998 192 s (FFFFCCCCCCC)64 148 s (C)533.998 148 s (FFFFCCCCCCC)64 104 s (C)533.998 104 s (FFFFCCCCCCC)64 60 s (C)533.998 60 s pagesave restore showpage %%Page: 6 6 %%BeginPageSetup /pagesave save def %%EndPageSetup rm 10 ss(6 )44.2 800 s( )558 800 s rm 12 ss(III)298.006 773.5 s rm 10 ss (V)65.665 720.5 s(iolin I)-0.6 0 rs mf 10 ss(!)104.12 716.5 s(') 120.12 722.5 s(')124.62 728.5 s bf 11.8 ss(6)129.12 724.5 s(8) 129.12 716.65 s rm 10 ss(V)64 676.5 s(iolin II)-0.6 0 rs mf 10 ss(!) 104.12 672.5 s(')120.12 678.5 s(')124.62 684.5 s bf 11.8 ss(6) 129.12 680.5 s(8)129.12 672.65 s rm 10 ss(V)70.25 632.5 s(iola)-0.6 0 rs mf 10 ss(#)104.12 628.5 s(')120.12 632.5 s(')124.62 638.5 s bf 11.8 ss(6) 129.12 636.5 s(8)129.12 628.65 s rm 10 ss(Cello)70.225 593.5 s(Bass) 71.615 583.5 s mf 10 ss(")103.62 584.5 s(')120.12 586.5 s(') 124.62 592.5 s bf 11.8 ss(6)129.12 592.5 s(8)129.12 584.65 s mf 10 ss 16 584.5(@)104.12 716.5 b 100.62 732.5 584.5 k %1/4 bi 10 ss(f)143.02 574.5 s mf 10 ss(5)143.02 586.5 s(?)151.42 588.5 s(5) 174.05 588.5 s(?)182.45 588.5 s(@)213.947 584.5 s %1/3 bi 10 ss(f)143.02 618.5 s mf 10 ss(6)143.02 640.5 s(?)151.42 640.5 s(6) 174.05 644.5 s(?)182.45 644.5 s 16 600.5(@)213.947 628.5 b %1/2 bi 10 ss(f)143.02 662.5 s mf 10 ss(=)143.02 690.5 s(6)143.02 692.5 s(>) 143.02 692.5 s(8)160.751 682.5 s(>)160.751 684.5 s 1.819 201.798 668.441 174.8 672.436 m(K)174.05 684.436 s(KL) 174.05 684.5 s(K)187.349 682.468 s(KL)187.349 682.5 s(6)200.648 680.5 s 16 644.5(@)213.947 672.5 b %1/1 bi 10 ss(f)143.02 706.5 s mf 10 ss(=)143.02 734.5 s(6)143.02 736.5 s(>) 143.02 736.5 s(8)160.751 726.5 s(>)160.751 728.5 s 1.819 201.798 712.441 174.8 716.436 m(K)174.05 728.436 s(KL) 174.05 728.5 s(K)187.349 726.468 s(KL)187.349 726.5 s(6)200.648 724.5 s 16 688.5(@)213.947 716.5 b %1/0 bf 10 ss(Allegr)129.12 751.5 s(o)-0.18 0 rs %2/4 mf 10 ss(5)221.1 590.5 s(?)229.5 592.5 s(5)260.996 588.5 s(?) 269.396 588.5 s(@)300.893 584.5 s %2/3 (6)221.1 640.5 s(?)229.5 640.5 s(6)260.996 644.5 s(?)269.396 644.5 s 16 600.5(@)300.893 628.5 b %2/2 1.877 248.847 674.491 221.85 666.5 m(6)221.1 678.5 s(K)234.398 682.436 s (KL)234.398 682.5 s(K)247.697 686.372 s(KL)247.697 686.5 s 1.8 288.744 668.5 261.746 668.5 m(K)260.996 680.5 s(KL)260.996 684.5 s(6) 274.295 680.5 s(K)287.594 680.5 s(KL)287.594 688.5 s 16 644.5(@)300.893 672.5 b %2/1 1.877 248.847 718.491 221.85 710.5 m(6)221.1 722.5 s(K)234.398 726.436 s (KL)234.398 726.5 s(K)247.697 730.372 s(KL)247.697 730.5 s 1.8 288.744 712.5 261.746 712.5 m(K)260.996 724.5 s(KL)260.996 728.5 s(6) 274.295 724.5 s(K)287.594 724.5 s(KL)287.594 732.5 s 16 688.5(@)300.893 716.5 b %2/0 %3/4 (6)308.046 590.5 s(?)316.446 592.5 s(6)347.942 592.5 s(8)374.54 594.5 s (@)387.839 584.5 s %3/3 (=)308.046 646.5 s(6)308.046 646.5 s(8)334.643 640.5 s 1.819 375.69 626.441 348.692 630.436 m(K)347.942 642.436 s(KL) 347.942 642.5 s(K)361.241 640.468 s(KL)361.241 640.5 s(6)374.54 638.5 s 16 600.5(@)387.839 628.5 b %3/2 1.843 335.793 680.493 308.796 674.5 m(6)308.046 686.5 s(=) 321.344 690.5 s(K)321.344 689.452 s(KL)321.344 690.5 s(=)334.643 690.5 s(K) 334.643 692.404 s(KL)334.643 692.5 s 1.819 375.69 668.441 348.692 672.436 m(K)347.942 684.436 s(KL) 347.942 684.5 s(K)361.241 682.468 s(KL)361.241 682.5 s(6)374.54 680.5 s 16 644.5(@)387.839 672.5 b %3/1 1.843 335.793 724.493 308.796 718.5 m(6)308.046 730.5 s(=) 321.344 734.5 s(K)321.344 733.452 s(KL)321.344 734.5 s(=)334.643 734.5 s(K) 334.643 736.404 s(KL)334.643 736.5 s 1.819 375.69 712.441 348.692 716.436 m(K)347.942 728.436 s(KL) 347.942 728.5 s(K)361.241 726.468 s(KL)361.241 726.5 s(6)374.54 724.5 s 16 688.5(@)387.839 716.5 b %3/0 %4/4 (5)394.992 586.5 s(7)412.723 588.5 s -1.819 458.87 602.505 431.872 606.5 m(5)426.022 590.5 s(J) 439.321 588.532 s(JL)439.321 588.5 s(J)452.62 586.564 s(JL) 452.62 586.5 s(@)465.919 584.5 s %4/3 (6)394.992 636.5 s(8)412.723 638.5 s(6)426.022 640.5 s(=)452.62 646.5 s(8) 452.62 646.5 s 16 600.5(@)465.919 628.5 b %4/2 (6)394.992 678.5 s(?)403.392 680.5 s(.)427.022 676.5 s(.)440.321 676.5 s(8) 452.62 682.5 s 16 644.5(@)465.919 672.5 b %4/1 (6)394.992 722.5 s(?)403.392 724.5 s(.)427.022 720.5 s(.)440.321 720.5 s(8) 452.62 730.5 s 16 688.5(@)465.919 716.5 b %4/0 %5/4 (6)473.072 592.5 s(?)481.472 592.5 s(6)512.968 592.5 s 476.072 598.5 515.968 598.5 5 cv(8)530.7 596.5 s(@)543.999 584.5 s %5/3 (=)473.072 646.5 s(4)473.072 646.5 s(?)481.472 648.5 s 16 600.5(@)543.999 628.5 b %5/2 1.8 500.819 672.5 473.822 672.5 m(6)473.072 684.5 s(>)473.072 684.5 s(6) 486.37 684.5 s(>)486.37 684.5 s(6)499.669 684.5 s(>)499.669 684.5 s(6) 512.968 684.5 s(?)521.368 684.5 s 16 644.5(@)543.999 672.5 b %5/1 1.8 500.819 720.5 473.822 720.5 m(6)473.072 732.5 s(>)473.072 732.5 s(6) 486.37 732.5 s(>)486.37 732.5 s(6)499.669 732.5 s(>)499.669 732.5 s(6) 512.968 732.5 s(=)530.7 734.5 s(8)530.7 736.5 s 16 688.5(@)543.999 716.5 b %5/0 (FFFFCCC)104.12 716.5 s (C)533.999 716.5 s (FFFFCCC)104.12 672.5 s (C)533.999 672.5 s (FFFFCCC)104.12 628.5 s (C)533.999 628.5 s (FFFFCCC)104.12 584.5 s (C)533.999 584.5 s (!)64 540.5 s(')80 546.5 s(')84.5 552.5 s(!)64 496.5 s(')80 502.5 s(') 84.5 508.5 s(#)64 452.5 s(')80 456.5 s(')84.5 462.5 s(")63.5 408.5 s(') 80 410.5 s(')84.5 416.5 s 16 408.5(@)64 540.5 b 60.5 556.5 408.5 k %6/4 (6)97 424.5 s(?)105.4 424.5 s(6)142.481 424.5 s 100 430.5 145.481 430.5 5 cv(8)162.694 414.5 s(@)177.855 408.5 s %6/3 (5)97 456.5 s(?)105.4 456.5 s(5)142.481 456.5 s 100 454.5 145.481 454.5 -5 cv(.)163.694 456.5 s 16 424.5(@)177.855 452.5 b %6/2 1.8 128.47 494.5 97.75 494.5 m(6)97 506.5 s(>)97 508.5 s(6) 112.16 506.5 s(>)112.16 508.5 s(6)127.32 506.5 s(>)127.32 508.5 s(6) 142.481 506.5 s(?)150.881 508.5 s 16 468.5(@)177.855 496.5 b %6/1 1.8 128.47 542.5 97.75 542.5 m(6)97 554.5 s(>)97 554.5 s(6) 112.16 554.5 s(>)112.16 554.5 s(6)127.32 554.5 s(>)127.32 554.5 s(6) 142.481 554.5 s(=)162.694 558.5 s(8)162.694 560.5 s 16 512.5(@)177.855 540.5 b %6/0 rm 10 ss(6)64 564.5 s 70.5 562.5 62 562.5 62 573.5 70.5 573.5 70.5 562.5 5 62 562.5 0.666 ll %7/4 mf 10 ss(5)186.009 412.5 s(?)194.409 412.5 s(5)231.49 410.5 s(?) 239.89 412.5 s(@)276.971 408.5 s %7/3 (6)186.009 458.5 s(?)194.409 460.5 s(6)231.49 464.5 s(?)239.89 464.5 s 16 424.5(@)276.971 452.5 b %7/2 (5)186.009 500.5 s(?)194.409 500.5 s(5)231.49 502.5 s(8)261.811 504.5 s 16 468.5(@)276.971 496.5 b %7/1 1.815 217.479 536.448 186.759 540.441 m(K)186.009 552.441 s(KL) 186.009 552.5 s(K)201.169 550.471 s(KL)201.169 550.5 s(6)216.329 548.5 s 1.8 262.961 534.5 232.24 534.5 m(K)231.49 546.5 s(KL)231.49 550.5 s(6) 246.65 546.5 s(K)261.811 546.5 s(KL)261.811 554.5 s 16 512.5(@)276.971 540.5 b %7/0 %8/4 (5)285.125 404.5 s(8)305.338 418.5 s -1.815 357.069 426.507 326.348 430.5 m(5)320.498 414.5 s(J) 335.659 412.53 s(JL)335.659 412.5 s(J)350.819 410.559 s(JL) 350.819 410.5 s(@)365.98 408.5 s %8/3 (6)285.125 464.5 s(8)305.338 458.5 s(5)320.498 450.5 s(7)350.819 456.5 s 16 424.5(@)365.98 452.5 b %8/2 (5)285.125 502.5 s(7)305.338 500.5 s(.)321.498 500.5 s(.)336.659 500.5 s(7) 350.819 492.5 s 16 468.5(@)365.98 496.5 b %8/1 (6)285.125 550.5 s(8)305.338 548.5 s(.)321.498 544.5 s(.)336.659 544.5 s(7) 350.819 540.5 s 16 512.5(@)365.98 540.5 b %8/0 %9/4 (6)374.134 416.5 s(?)382.534 416.5 s(6)419.615 416.5 s 377.134 422.5 422.615 422.5 5 cv(8)439.828 420.5 s(@)454.989 408.5 s %9/3 (3)374.134 456.5 s(?)382.534 456.5 s 16 424.5(@)454.989 452.5 b %9/2 -1.8 410.704 510.5 379.984 510.5 m(5)374.134 494.5 s(>)374.134 486.5 s(5) 389.294 494.5 s(>)389.294 486.5 s(5)404.454 494.5 s(>)404.454 486.5 s(5) 419.615 494.5 s(?)428.015 496.5 s 16 468.5(@)454.989 496.5 b %9/1 -1.8 410.704 558.5 379.984 558.5 m(5)374.134 542.5 s(>)374.134 532.5 s(5) 389.294 542.5 s(>)389.294 532.5 s(5)404.454 542.5 s(>)404.454 532.5 s(5) 419.615 542.5 s(7)439.828 546.5 s 16 512.5(@)454.989 540.5 b %9/0 %10/4 (6)463.143 424.5 s(?)471.543 424.5 s(6)508.624 424.5 s 466.143 430.5 511.624 430.5 5 cv(8)528.837 414.5 s(@)543.998 408.5 s %10/3 (5)463.143 456.5 s(?)471.543 456.5 s(5)508.624 456.5 s 466.143 454.5 511.624 454.5 -5 cv(8)528.837 464.5 s 16 424.5(@)543.998 452.5 b %10/2 -1.8 499.713 508.5 468.993 508.5 m(5)463.143 492.5 s(>)463.143 484.5 s(5) 478.303 492.5 s(>)478.303 484.5 s(5)493.463 492.5 s(>)493.463 484.5 s(5) 508.624 492.5 s(?)517.024 492.5 s 16 468.5(@)543.998 496.5 b %10/1 -1.8 499.713 556.5 468.993 556.5 m(5)463.143 540.5 s(>)463.143 532.5 s(5) 478.303 540.5 s(>)478.303 532.5 s(5)493.463 540.5 s(>)493.463 532.5 s(5) 508.624 540.5 s(7)528.837 546.5 s 16 512.5(@)543.998 540.5 b %10/0 (FFFFCCCCCCC)64 540.5 s (C)533.998 540.5 s (FFFFCCCCCCC)64 496.5 s (C)533.998 496.5 s (FFFFCCCCCCC)64 452.5 s (C)533.998 452.5 s (FFFFCCCCCCC)64 408.5 s (C)533.998 408.5 s (!)64 364.5 s(')80 370.5 s(')84.5 376.5 s(!)64 320.5 s(')80 326.5 s(') 84.5 332.5 s(#)64 276.5 s(')80 280.5 s(')84.5 286.5 s(")63.5 232.5 s(') 80 234.5 s(')84.5 240.5 s 16 232.5(@)64 364.5 b 60.5 380.5 232.5 k %11/4 (5)97 236.5 s(?)105.4 236.5 s(5)139.591 234.5 s(?)147.991 236.5 s (@)182.183 232.5 s %11/3 (5)97 282.5 s(?)105.4 284.5 s(5)139.591 274.5 s(?)147.991 276.5 s 16 248.5(@)182.183 276.5 b %11/2 (=)97 314.5 s(=)97 310.5 s(J)97 312.5 s(JL)97 310.5 s(?)105.4 312.5 s(=) 139.591 314.5 s(5)139.591 312.5 s(7)167.986 316.5 s 16 292.5(@)182.183 320.5 b %11/1 -1.817 131.644 374.527 102.85 378.5 m(5)97 362.5 s(J)111.197 360.541 s(JL) 111.197 360.5 s(=)125.394 358.5 s(J)125.394 358.582 s(JL)125.394 358.5 s -1.894 174.236 386.632 145.441 377.159 m(J)139.591 361.159 s(JL) 139.591 360.5 s(J)153.789 365.83 s(JL)153.789 364.5 s(5)167.986 370.5 s 16 336.5(@)182.183 364.5 b %11/0 rm 10 ss(11)64 388.5 s 75.5 386.5 62 386.5 62 397.5 75.5 397.5 75.5 386.5 5 62 386.5 0.666 ll %12/4 mf 10 ss(6)189.819 242.5 s(7)208.748 228.5 s -1.817 257.59 244.527 228.796 248.5 m(5)222.946 232.5 s(J) 237.143 230.541 s(JL)237.143 230.5 s(J)251.34 228.582 s(JL) 251.34 228.5 s(@)265.537 232.5 s %12/3 (5)189.819 274.5 s(7)208.748 278.5 s -1.817 257.59 294.527 228.796 298.5 m(5)222.946 282.5 s(J) 237.143 280.541 s(JL)237.143 280.5 s(J)251.34 278.582 s(JL) 251.34 278.5 s 16 248.5(@)265.537 276.5 b %12/2 (=)189.819 314.5 s(5)189.819 312.5 s(=)208.748 314.5 s(=)208.748 310.5 s (EJ)208.748 312.5 s(JL)208.748 310.5 s(.)223.946 324.5 s(.) 238.143 324.5 s(8)251.34 328.5 s(>)251.34 328.5 s 16 292.5(@)265.537 320.5 b %12/1 (5)189.819 360.5 s(=)208.748 358.5 s(7)208.748 358.5 s(.)223.946 368.5 s(.) 238.143 368.5 s(8)251.34 372.5 s(>)251.34 372.5 s 16 336.5(@)265.537 364.5 b %12/0 %13/4 (5)273.173 234.5 s(?)281.573 236.5 s(5)315.764 236.5 s(?)324.164 236.5 s (@)358.356 232.5 s %13/3 (3)273.173 280.5 s(?)281.573 280.5 s 16 248.5(@)358.356 276.5 b %13/2 1.8 302.717 312.5 273.923 312.5 m(K)273.173 324.5 s(KL)273.173 330.5 s(>) 273.173 332.5 s(6)287.37 324.5 s(K)301.567 324.5 s(KL)301.567 326.5 s 1.8 345.309 312.5 316.514 312.5 m(\()311.514 332.5 s(K)315.764 324.5 s(KL) 315.764 332.5 s(>)315.764 332.5 s(6)329.962 324.5 s(K)344.159 324.5 s(KL) 344.159 326.5 s 16 292.5(@)358.356 320.5 b %13/1 1.8 302.717 356.5 273.923 356.5 m(K)273.173 368.5 s(KL)273.173 374.5 s(>) 273.173 376.5 s(6)287.37 368.5 s(K)301.567 368.5 s(KL)301.567 370.5 s 1.8 345.309 356.5 316.514 356.5 m(\()311.514 376.5 s(K)315.764 368.5 s(KL) 315.764 376.5 s(>)315.764 376.5 s(6)329.962 368.5 s(K)344.159 368.5 s(KL) 344.159 370.5 s 16 336.5(@)358.356 364.5 b %13/0 %14/4 (6)365.992 238.5 s(?)374.392 240.5 s(\()403.908 240.5 s(6) 408.583 240.5 s(?)416.983 240.5 s(@)451.175 232.5 s %14/3 (5)365.992 280.5 s(?)374.392 280.5 s(5)408.583 280.5 s 368.992 278.5 411.583 278.5 -5 cv(8)436.978 290.5 s 16 248.5(@)451.175 276.5 b %14/2 1.8 395.536 312.5 366.742 312.5 m(K)365.992 324.5 s(K)365.992 334.5 s(L) 365.992 334.5 s(>)365.992 334.5 s(6)380.189 324.5 s(K)394.386 324.5 s(KL) 394.386 326.5 s 1.8 438.128 312.5 409.333 312.5 m(K)408.583 324.5 s(K) 408.583 334.5 s(KL)408.583 336.5 s(>)408.583 336.5 s(6)422.781 324.5 s(K) 436.978 324.5 s(KL)436.978 326.5 s 16 292.5(@)451.175 320.5 b %14/1 1.8 395.536 356.5 366.742 356.5 m(K)365.992 368.5 s(K)365.992 378.5 s(L) 365.992 378.5 s(>)365.992 378.5 s(6)380.189 368.5 s(K)394.386 368.5 s(KL) 394.386 370.5 s 1.8 438.128 356.5 409.333 356.5 m(K)408.583 368.5 s(K) 408.583 378.5 s(KL)408.583 380.5 s(>)408.583 380.5 s(6)422.781 368.5 s(K) 436.978 368.5 s(KL)436.978 370.5 s 16 336.5(@)451.175 364.5 b %14/0 %15/4 (6)458.811 242.5 s(?)467.211 244.5 s(6)501.402 248.5 s(?)509.802 248.5 s (@)543.994 232.5 s %15/3 (5)458.811 282.5 s(?)467.211 284.5 s(5)501.402 280.5 s(8)529.797 284.5 s(>) 529.797 284.5 s 16 248.5(@)543.994 276.5 b %15/2 1.8 488.355 320.5 459.561 320.5 m(=)458.811 338.5 s(K)458.811 332.5 s(KL) 458.811 338.5 s(>)458.811 338.5 s(\()468.758 332.5 s(6)473.008 332.5 s(K) 487.205 332.5 s(KL)487.205 334.5 s(5)501.402 320.5 s(7)529.797 326.5 s 16 292.5(@)543.994 320.5 b %15/1 1.8 488.355 364.5 459.561 364.5 m(=)458.811 382.5 s(K)458.811 376.5 s(KL) 458.811 382.5 s(>)458.811 382.5 s(\()468.758 376.5 s(6)473.008 376.5 s(K) 487.205 376.5 s(KL)487.205 378.5 s 1.838 530.947 368.489 502.152 362.5 m(6) 501.402 374.5 s(=)515.6 382.5 s(K)515.6 377.453 s(KL)515.6 384.5 s(K) 529.797 380.406 s(KL)529.797 380.5 s 16 336.5(@)543.994 364.5 b %15/0 (FFFFCCCCCCC)64 364.5 s (C)533.994 364.5 s (FFFFCCCCCCC)64 320.5 s (C)533.994 320.5 s (FFFFCCCCCCC)64 276.5 s (C)533.994 276.5 s (FFFFCCCCCCC)64 232.5 s (C)533.994 232.5 s (!)64 188.5 s(')80 194.5 s(')84.5 200.5 s(!)64 144.5 s(')80 150.5 s(') 84.5 156.5 s(#)64 100.5 s(')80 104.5 s(')84.5 110.5 s(")63.5 56.5 s(') 80 58.5 s(')84.5 64.5 s 16 56.5(@)64 188.5 b 60.5 204.5 56.5 k %16/4 1.8 130.761 48.5 97.75 48.5 m(=)97 74.5 s(K)97 60.5 s(K)97 70.5 s(KL) 97 74.5 s(6)113.305 60.5 s(=)129.611 74.5 s(K)129.611 60.5 s(K) 129.611 70.5 s(KL)129.611 74.5 s 1.813 179.679 56.452 146.667 60.446 m(K) 145.917 72.446 s(KL)145.917 72.5 s(K)162.223 70.473 s(KL)162.223 70.5 s(6) 178.529 68.5 s(@)194.835 56.5 s %16/3 (6)97 106.5 s(\()124.936 110.5 s(8)129.611 110.5 s 1.813 179.679 98.452 146.667 102.446 m(K)145.917 114.446 s(KL) 145.917 114.5 s(K)162.223 112.473 s(KL)162.223 112.5 s(6)178.529 110.5 s 16 72.5(@)194.835 100.5 b %16/2 (5)97 148.5 s(7)129.611 146.5 s(.)146.917 148.5 s(.)163.223 148.5 s(8) 178.529 160.5 s 16 116.5(@)194.835 144.5 b %16/1 (6)97 202.5 s(\()124.936 200.5 s(8)129.611 200.5 s(.)146.917 192.5 s(.) 163.223 192.5 s(8)178.529 204.5 s 16 160.5(@)194.835 188.5 b %16/0 rm 10 ss(16)64 212.5 s 75.5 210.5 62 210.5 62 221.5 75.5 221.5 75.5 210.5 5 62 210.5 0.666 ll %17/4 mf 10 ss(6)203.605 70.5 s(?)212.005 72.5 s(6)252.522 68.5 s(?) 260.922 68.5 s(@)301.44 56.5 s %17/3 (6)203.605 116.5 s(=)236.216 118.5 s(8)236.216 120.5 s(6)252.522 108.5 s(7) 285.134 104.5 s 16 72.5(@)301.44 100.5 b %17/2 1.8 237.366 140.5 204.355 140.5 m(K)203.605 152.5 s(KL)203.605 160.5 s(6) 219.91 152.5 s(K)236.216 152.5 s(KL)236.216 158.5 s(6)252.522 158.5 s(\() 280.459 156.5 s(8)285.134 156.5 s 16 116.5(@)301.44 144.5 b %17/1 (=)203.605 206.5 s(=)203.605 210.5 s(K)203.605 208.5 s(KL) 203.605 210.5 s(=)236.216 206.5 s(8)236.216 206.5 s 1.813 286.284 192.452 253.272 196.446 m(=)252.522 206.5 s(K) 252.522 208.446 s(KL)252.522 208.5 s(=)268.828 206.5 s(K) 268.828 206.473 s(KL)268.828 206.5 s(6)285.134 204.5 s 16 160.5(@)301.44 188.5 b %17/0 %18/4 (6)310.21 66.5 s(8)342.821 68.5 s(6)359.127 70.5 s(8)391.739 72.5 s (@)408.045 56.5 s %18/3 (6)310.21 106.5 s(8)342.821 114.5 s(6)359.127 112.5 s(8)391.739 112.5 s 16 72.5(@)408.045 100.5 b %18/2 (6)310.21 158.5 s(8)342.821 150.5 s(6)359.127 152.5 s(7)391.739 144.5 s 16 116.5(@)408.045 144.5 b %18/1 1.829 343.971 187.477 310.96 193.451 m(=)310.21 206.5 s(K) 310.21 205.451 s(KL)310.21 206.5 s(6)326.515 202.5 s(\()338.571 200.5 s(K) 342.821 199.549 s(KL)342.821 200.5 s 1.8 392.889 184.5 359.877 184.5 m(K) 359.127 196.5 s(KL)359.127 202.5 s(6)375.433 196.5 s(K)391.739 196.5 s(KL) 391.739 198.5 s 16 160.5(@)408.045 188.5 b %18/0 %19/4 (=)416.815 74.5 s(6)416.815 74.5 s(?)425.215 76.5 s(5)465.732 60.5 s(?) 474.132 60.5 s(@)491.822 56.5 s %19/3 (6)416.815 106.5 s(?)425.215 108.5 s(6)465.732 106.5 s(?)474.132 108.5 s 16 72.5(@)491.822 100.5 b %19/2 (5)416.815 144.5 s(?)425.215 144.5 s(\()461.057 142.5 s(5) 465.732 142.5 s(?)474.132 144.5 s 16 116.5(@)491.822 144.5 b %19/1 -1.8 455.676 210.5 422.665 210.5 m(J)416.815 194.5 s(JL)416.815 192.5 s(5) 433.12 194.5 s(J)449.426 194.5 s(JL)449.426 192.5 s(5)465.732 190.5 s(?) 474.132 192.5 s 16 160.5(@)491.822 188.5 b %19/0 %20/4 (3)500.592 52.5 s(?)508.992 52.5 s(B)542.196 56.5 s(@)540.296 56.5 s(I) 537.796 60.5 s %20/3 (4)500.592 106.5 s(?)508.992 108.5 s 16 72.5(B)542.196 100.5 b 16 72.5(@)540.296 100.5 b(I)537.796 104.5 s %20/2 (3)500.592 144.5 s(?)508.992 144.5 s 16 116.5(B)542.196 144.5 b 16 116.5(@)540.296 144.5 b(I)537.796 148.5 s %20/1 (3)500.592 188.5 s(?)508.992 188.5 s 16 160.5(B)542.196 188.5 b 16 160.5(@)540.296 188.5 b(I)537.796 192.5 s %20/0 (FFFFCCCCCCC)64 188.5 s (C)533.996 188.5 s (FFFFCCCCCCC)64 144.5 s (C)533.996 144.5 s (FFFFCCCCCCC)64 100.5 s (C)533.996 100.5 s (FFFFCCCCCCC)64 56.5 s (C)533.996 56.5 s pagesave restore showpage %%Page: 7 7 %%BeginPageSetup /pagesave save def %%EndPageSetup rm 10 ss( )44.2 800 s( 7)553 800 s mf 10 ss(!)64 753 s(')80 759 s(') 84.5 765 s(!)64 709 s(')80 715 s(')84.5 721 s(#)64 665 s(')80 669 s(') 84.5 675 s(")63.5 621 s(')80 623 s(')84.5 629 s 16 621(@)64 753 b 60.5 769 621 k %21/4 (6)99 631 s(?)107.4 633 s(6)134.217 633 s(?)142.617 633 s (@)179.494 621 s %21/3 (6)99 671 s(?)107.4 673 s(\()129.542 675 s(6)134.217 675 s(?) 142.617 677 s 16 637(@)179.494 665 b %21/2 (6)99 723 s(>)99 723 s(7)119.125 713 s(>)119.125 705 s -1.815 170.652 727.024 140.067 731 m(5)134.217 715 s(J)149.31 713.038 s(JL) 149.31 713 s(J)164.402 711.076 s(JL)164.402 711 s 16 681(@)179.494 709 b %21/1 (6)99 767 s(>)99 767 s(7)119.125 757 s(>)119.125 749 s -1.815 170.652 771.024 140.067 775 m(5)134.217 759 s(J)149.31 757.038 s(JL) 149.31 757 s(J)164.402 755.076 s(JL)164.402 755 s 16 725(@)179.494 753 b %21/0 rm 10 ss(21)64 777 s 75.5 775 62 775 62 786 75.5 786 75.5 775 5 62 775 0.666 ll %22/4 mf 10 ss(6)187.611 635 s(?)196.011 637 s(6)232.888 633 s(?)241.288 633 s (@)278.165 621 s %22/3 (6)187.611 671 s(?)196.011 673 s(\()228.213 675 s(6)232.888 675 s(?) 241.288 677 s 16 637(@)278.165 665 b %22/2 -1.86 224.045 733.104 193.461 725.122 m(J)187.611 709.122 s(JL) 187.611 709 s(J)202.703 713.061 s(JL)202.703 713 s(5)217.795 717 s -1.8 269.322 735 238.738 735 m(J)232.888 719 s(JL)232.888 715 s(J) 247.98 719 s(JL)247.98 711 s(5)263.072 719 s 16 681(@)278.165 709 b %22/1 -1.86 224.045 777.104 193.461 769.122 m(J)187.611 753.122 s(JL) 187.611 753 s(J)202.703 757.061 s(JL)202.703 757 s(5)217.795 761 s -1.8 269.322 779 238.738 779 m(J)232.888 763 s(JL)232.888 759 s(J) 247.98 763 s(JL)247.98 755 s(5)263.072 763 s 16 725(@)278.165 753 b %22/0 %23/4 (6)286.282 635 s(?)294.682 637 s(6)331.559 637 s(=)361.743 639 s(8) 361.743 639 s(@)376.836 621 s %23/3 (6)286.282 677 s(8)316.466 671 s(6)331.559 673 s(\()357.068 675 s(8) 361.743 675 s 16 637(@)376.836 665 b %23/2 1.834 317.616 710.994 287.032 705 m(6)286.282 717 s(\()297.124 721 s(K) 301.374 719.958 s(KL)301.374 721 s(K)316.466 722.916 s(KL)316.466 723 s -1.815 367.993 727.025 337.409 731 m(5)331.559 715 s(J)346.651 713.039 s (JL)346.651 713 s(J)361.743 711.077 s(JL)361.743 711 s 16 681(@)376.836 709 b %23/1 1.834 317.616 754.994 287.032 749 m(6)286.282 761 s(\()297.124 765 s(K) 301.374 763.958 s(KL)301.374 765 s(K)316.466 766.916 s(KL)316.466 767 s -1.815 367.993 771.025 337.409 775 m(5)331.559 759 s(J)346.651 757.039 s (JL)346.651 757 s(J)361.743 755.077 s(JL)361.743 755 s 16 725(@)376.836 753 b %23/0 %24/4 (6)384.953 631 s(8)405.076 629 s(6)420.169 627 s(7)440.293 625 s (@)455.385 621 s %24/3 (6)384.953 677 s(7)405.076 667 s(5)420.169 669 s(7)440.293 671 s 16 637(@)455.385 665 b %24/2 (3)384.953 709 s(?)393.353 709 s 16 681(@)455.385 709 b %24/1 (3)384.953 753 s(?)393.353 753 s 16 725(@)455.385 753 b %24/0 %25/4 (5)463.502 623 s(?)471.902 625 s(5)498.718 625 s(?)507.118 625 s (@)543.995 621 s %25/3 (6)463.502 673 s(=)483.625 683 s(8)483.625 683 s(6)498.718 681 s(=) 528.903 683 s(8)528.903 685 s 16 637(@)543.995 665 b %25/2 (=)463.502 727 s(6)463.502 729 s(>)463.502 729 s(8)483.625 719 s(>) 483.625 721 s 1.815 530.053 704.948 499.468 708.924 m(K) 498.718 720.924 s(KL)498.718 721 s(K)513.81 718.963 s(KL)513.81 719 s(6) 528.903 717 s 16 681(@)543.995 709 b %25/1 (=)463.502 771 s(6)463.502 773 s(>)463.502 773 s(8)483.625 763 s(>) 483.625 765 s 1.815 530.053 748.948 499.468 752.924 m(K) 498.718 764.924 s(KL)498.718 765 s(K)513.81 762.963 s(KL)513.81 763 s(6) 528.903 761 s 16 725(@)543.995 753 b %25/0 (FFFFCCCCCCC)64 753 s (C)533.995 753 s (FFFFCCCCCCC)64 709 s (C)533.995 709 s (FFFFCCCCCCC)64 665 s (C)533.995 665 s (FFFFCCCCCCC)64 621 s (C)533.995 621 s (!)64 566 s(')80 572 s(')84.5 578 s(!)64 522 s(')80 528 s(')84.5 534 s(#) 64 478 s(')80 482 s(')84.5 488 s(")63.5 434 s(')80 436 s(')84.5 442 s 16 434(@)64 566 b 60.5 582 434 k %26/4 (5)97 440 s(?)105.4 442 s(5)139.438 438 s(?)147.838 438 s (@)181.877 434 s %26/3 (6)97 490 s(?)105.4 490 s(6)139.438 494 s(?)147.838 494 s 16 450(@)181.877 478 b %26/2 1.868 126.442 523.976 97.75 516 m(6)97 528 s(K)111.146 531.932 s(KL) 111.146 532 s(K)125.292 535.865 s(KL)125.292 536 s 1.8 168.881 518 140.188 518 m(K)139.438 530 s(KL)139.438 534 s(6) 153.584 530 s(K)167.731 530 s(KL)167.731 538 s 16 494(@)181.877 522 b %26/1 1.868 126.442 567.976 97.75 560 m(6)97 572 s(K)111.146 575.932 s(KL) 111.146 576 s(K)125.292 579.865 s(KL)125.292 580 s 1.8 168.881 562 140.188 562 m(K)139.438 574 s(KL)139.438 578 s(6) 153.584 574 s(K)167.731 574 s(KL)167.731 582 s 16 538(@)181.877 566 b %26/0 rm 10 ss(26)64 590 s 75.5 588 62 588 62 599 75.5 599 75.5 588 5 62 588 0.666 ll %27/4 mf 10 ss(6)189.485 440 s(?)197.885 442 s(6)231.923 442 s(8)260.216 444 s (@)274.362 434 s %27/3 (=)189.485 496 s(6)189.485 496 s(8)217.777 490 s 1.817 261.366 475.944 232.673 479.932 m(K)231.923 491.932 s(KL) 231.923 492 s(K)246.069 489.966 s(KL)246.069 490 s(6)260.216 488 s 16 450(@)274.362 478 b %27/2 1.838 218.927 529.996 190.235 524 m(6)189.485 536 s(=)203.631 540 s(K) 203.631 538.956 s(KL)203.631 540 s(=)217.777 540 s(K)217.777 541.913 s(KL) 217.777 542 s 1.817 261.366 517.944 232.673 521.932 m(K) 231.923 533.932 s(KL)231.923 534 s(K)246.069 531.966 s(KL)246.069 532 s(6) 260.216 530 s 16 494(@)274.362 522 b %27/1 1.838 218.927 573.996 190.235 568 m(6)189.485 580 s(=)203.631 584 s(K) 203.631 582.956 s(KL)203.631 584 s(=)217.777 584 s(K)217.777 585.913 s(KL) 217.777 586 s 1.817 261.366 561.944 232.673 565.932 m(K) 231.923 577.932 s(KL)231.923 578 s(K)246.069 575.966 s(KL)246.069 576 s(6) 260.216 574 s 16 538(@)274.362 566 b %27/0 %28/4 (5)281.97 436 s(7)300.831 438 s -1.817 349.52 452.012 320.827 456 m(5) 314.977 440 s(J)329.124 438.034 s(JL)329.124 438 s(J)343.27 436.068 s(JL) 343.27 436 s(@)357.416 434 s %28/3 (6)281.97 486 s(8)300.831 488 s 1.817 344.42 473.944 315.727 477.932 m(K) 314.977 489.932 s(KL)314.977 490 s(K)329.124 487.966 s(KL)329.124 488 s(6) 343.27 486 s 16 450(@)357.416 478 b %28/2 (6)281.97 528 s(?)290.37 530 s(6)314.977 528 s 284.97 535 317.977 535 5 cv(=)343.27 540 s(8)343.27 542 s 16 494(@)357.416 522 b %28/1 (6)281.97 572 s(?)290.37 574 s(6)314.977 572 s 284.97 579 317.977 579 5 cv(=)343.27 584 s(8)343.27 586 s 16 538(@)357.416 566 b %28/0 %29/4 (5)365.024 438 s(?)373.424 438 s(6)407.462 442 s(?)415.862 442 s (@)449.901 434 s %29/3 (6)365.024 488 s(?)373.424 490 s(=)407.462 496 s(6)407.462 498 s(?) 415.862 498 s 16 450(@)449.901 478 b %29/2 1.8 394.466 528 365.774 528 m(=)365.024 540 s(6)365.024 540 s(=) 379.17 540 s(K)379.17 540 s(KL)379.17 542 s(=)393.316 540 s(6) 393.316 540 s 1.8 436.905 524 408.212 524 m(K)407.462 536 s(KL) 407.462 538 s(%)416.608 536 s(6)421.608 536 s(K)435.755 536 s(KL) 435.755 538 s 16 494(@)449.901 522 b %29/1 1.8 394.466 572 365.774 572 m(=)365.024 584 s(6)365.024 584 s(=) 379.17 584 s(K)379.17 584 s(KL)379.17 586 s(=)393.316 584 s(6) 393.316 584 s 1.8 436.905 568 408.212 568 m(K)407.462 580 s(KL) 407.462 582 s(%)416.608 580 s(6)421.608 580 s(K)435.755 580 s(KL) 435.755 582 s 16 538(@)449.901 566 b %29/0 %30/4 (6)459.009 440 s(?)467.409 442 s 1.817 530.997 431.988 502.305 428 m(6) 501.555 440 s 462.009 447 504.555 447 5 cv(\()511.451 442 s(K) 515.701 441.966 s(KL)515.701 442 s(%)524.847 444 s(K)529.847 443.932 s(KL) 529.847 444 s(@)543.994 434 s %30/3 (6)459.009 494 s(?)467.409 494 s(6)501.555 494 s 462.009 500 504.555 500 5 cv(8)529.847 494 s 16 450(@)543.994 478 b %30/2 1.8 488.559 520 459.759 520 m(%)454.009 536 s(K)459.009 532 s(KL) 459.009 536 s(=)473.262 540 s(K)473.262 532 s(KL)473.262 540 s(6) 487.409 532 s(6)501.555 530 s(?)509.955 530 s 16 494(@)543.994 522 b %30/1 1.8 488.559 564 459.759 564 m(%)454.009 580 s(K)459.009 576 s(KL) 459.009 580 s(=)473.262 584 s(K)473.262 576 s(KL)473.262 584 s(6) 487.409 576 s(6)501.555 574 s(?)509.955 574 s 16 538(@)543.994 566 b %30/0 (FFFFCCCCCCC)64 566 s (C)533.994 566 s (FFFFCCCCCCC)64 522 s (C)533.994 522 s (FFFFCCCCCCC)64 478 s (C)533.994 478 s (FFFFCCCCCCC)64 434 s (C)533.994 434 s (!)64 379 s(')80 385 s(')84.5 391 s(!)64 335 s(')80 341 s(')84.5 347 s(#) 64 291 s(')80 295 s(')84.5 301 s(")63.5 247 s(')80 249 s(')84.5 255 s 16 247(@)64 379 b 60.5 395 247 k %31/4 (6)97 259 s(?)105.4 259 s(6)142.175 259 s 100 265 145.175 265 5 cv(8) 172.292 259 s(@)187.35 247 s %31/3 (6)97 299 s(?)105.4 299 s(6)142.175 305 s(?)150.575 307 s 16 263(@)187.35 291 b %31/2 (5)97 341 s(7)127.116 337 s(5)142.175 333 s(?)150.575 335 s 16 307(@)187.35 335 b %31/1 -1.815 133.366 397.003 102.85 401 m(5)97 385 s(J)112.058 383.028 s(JL) 112.058 383 s(J)127.116 381.055 s(JL)127.116 381 s 1.8 173.442 373 142.925 373 m(6)142.175 385 s(K)157.233 385 s(KL) 157.233 389 s(K)172.292 385 s(KL)172.292 387 s 16 351(@)187.35 379 b %31/0 rm 10 ss(31)64 403 s 75.5 401 62 401 62 412 75.5 412 75.5 401 5 62 401 0.666 ll %32/4 1.8 228.217 245 197.699 245 m mf 10 ss(%)191.949 257 s(6)196.949 257 s(K) 212.008 257 s(KL)212.008 261 s(K)227.067 257 s(KL)227.067 259 s 1.815 273.392 240.948 242.875 244.945 m(K)242.125 256.945 s(KL) 242.125 257 s(\()252.934 255 s(K)257.184 254.973 s(KL)257.184 255 s(6) 272.242 253 s(@)287.3 247 s %32/3 (4)196.949 307 s(?)205.349 307 s 16 263(@)287.3 291 b %32/2 (5)196.949 331 s(?)205.349 331 s(5)242.125 331 s 199.949 329 245.125 329 -5 cv(%)266.742 349 s(8)272.242 349 s(>)272.242 349 s 16 307(@)287.3 335 b %32/1 (6)196.949 389 s(?)205.349 391 s(6)242.125 389 s 199.949 396 245.125 396 5 cv(=)272.242 397 s(8)272.242 397 s(>)272.242 397 s 16 351(@)287.3 379 b %32/0 %33/4 (=)295.399 265 s(4)295.399 267 s(?)303.799 267 s(@)365.672 247 s %33/3 (4)295.399 299 s(?)303.799 299 s 16 263(@)365.672 291 b %33/2 (6)295.399 351 s(\()311.227 347 s(8)315.477 347 s(>)315.477 347 s(%) 325.535 349 s(6)330.535 349 s(>)330.535 349 s(8)350.613 345 s(>) 350.613 347 s 16 307(@)365.672 335 b %33/1 (=)295.399 397 s(6)295.399 399 s(8)315.477 395 s(>)315.477 395 s(=) 330.535 397 s(6)330.535 397 s(>)330.535 397 s(8)350.613 389 s(>) 350.613 391 s 16 351(@)365.672 379 b %33/0 rm 12 ss(A)287.3 410 s 297.364 408 285.3 408 285.3 421 297.364 421 297.364 408 5 285.3 408 0.8 ll %34/4 1.815 406.539 244.997 376.021 241 m mf 10 ss(6)375.271 253 s(\() 386.08 255 s(K)390.33 254.972 s(KL)390.33 255 s(%)400.389 257 s(K) 405.389 256.945 s(KL)405.389 257 s(6)420.447 259 s(?)428.847 259 s (@)455.584 247 s %34/3 (%)370.271 303 s(6)375.271 303 s(8)405.389 307 s(6)420.447 305 s(?) 428.847 307 s 16 263(@)455.584 291 b %34/2 (=)375.271 353 s(6)375.271 353 s(8)405.389 345 s(>)405.389 347 s(6) 420.447 345 s(>)420.447 347 s(8)440.525 341 s(>)440.525 343 s 16 307(@)455.584 335 b %34/1 (=)375.271 397 s(=)375.271 401 s(K)375.271 399 s(KL)375.271 401 s(=) 405.389 397 s(8)405.389 397 s(>)405.389 397 s(=)420.447 397 s(6) 420.447 399 s(>)420.447 399 s(8)440.525 389 s(>)440.525 391 s 16 351(@)455.584 379 b %34/0 %35/4 (-)464.683 251 s(?)470.583 255 s(.)499.819 251 s(.)514.878 251 s(8) 528.936 253 s(@)543.994 247 s %35/3 (-)464.683 295 s(?)470.583 299 s(.)499.819 295 s(.)514.878 295 s(=) 528.936 309 s(=)528.936 313 s(HK)528.936 311 s(KL)528.936 313 s 16 263(@)543.994 291 b %35/2 (=)463.683 353 s(6)463.683 355 s(8)483.761 351 s(>)483.761 351 s 1.815 530.086 336.948 499.569 340.945 m(=)498.819 353 s(K) 498.819 352.945 s(KL)498.819 353 s(K)513.878 350.973 s(KL)513.878 351 s(%) 523.936 349 s(6)528.936 349 s 16 307(@)543.994 335 b %35/1 (=)463.683 397 s(=)463.683 401 s(K)463.683 399 s(KL)463.683 403 s(=) 483.761 397 s(8)483.761 399 s(>)483.761 399 s 1.815 530.086 383.003 499.569 387 m(=)498.819 397 s(=)498.819 401 s(K) 498.819 399 s(KL)498.819 401 s(=)513.878 397 s(K)513.878 397.028 s(KL) 513.878 399 s(=)528.936 397 s(K)528.936 395.055 s(KL)528.936 397 s 16 351(@)543.994 379 b %35/0 (FFFFCCCCCCC)64 379 s (C)533.994 379 s (FFFFCCCCCCC)64 335 s (C)533.994 335 s (FFFFCCCCCCC)64 291 s (C)533.994 291 s (FFFFCCCCCCC)64 247 s (C)533.994 247 s (!)64 192 s(')80 198 s(')84.5 204 s(!)64 148 s(')80 154 s(')84.5 160 s(#) 64 104 s(')80 108 s(')84.5 114 s(")63.5 60 s(')80 62 s(')84.5 68 s 16 60(@)64 192 b 60.5 208 60 k %36/4 -1.894 133.265 77.994 102.85 88 m(5)97 72 s(J)112.007 67.063 s(JL) 112.007 58 s(J)127.015 62.126 s(JL)127.015 60 s(5)142.022 62 s(7) 175.033 64 s(@)190.04 60 s %36/3 (=)97 122 s(=)97 126 s(K)97 124 s(KL)97 126 s(?)105.4 128 s(=) 142.022 122 s(=)142.022 126 s(K)142.022 124 s(KL)142.022 126 s(8) 175.033 118 s 16 76(@)190.04 104 b %36/2 (6)97 164 s(?)105.4 164 s 1.812 176.183 147.953 142.772 151.928 m(K) 142.022 163.928 s(KL)142.022 164 s 100 170 145.022 170 5 cv(\215\(\216) 149.975 162 s(K)160.025 161.786 s(KL)160.025 162 s(6)175.033 160 s 16 120(@)190.04 148 b %36/1 (=)97 210 s(6)97 212 s(?)105.4 212 s 1.812 176.183 195.953 142.772 199.928 m(=)142.022 210 s(K) 142.022 211.928 s(KL)142.022 212 s 100 218 145.022 218 5 cv(=) 160.025 210 s(K)160.025 209.786 s(KL)160.025 210 s(6)175.033 208 s 16 164(@)190.04 192 b %36/0 rm 10 ss(36)64 216 s 75.5 214 62 214 62 225 75.5 225 75.5 214 5 62 214 0.666 ll %37/4 mf 10 ss(6)199.612 66 s(8)229.635 68 s(6)244.643 66 s it 10 ss(C.B.) 268.768 84 s mf 10 ss(7)274.658 66 s(=)274.658 54 s(5)274.658 52 s (@)289.666 60 s %37/3 (6)199.612 112 s(=)229.635 122 s(8)229.635 124 s(6)244.643 112 s(8) 274.658 112 s 16 76(@)289.666 104 b %37/2 (6)199.612 158 s(7)229.635 150 s(5)244.643 150 s(%)269.158 148 s(7) 274.658 148 s 16 120(@)289.666 148 b %37/1 1.8 230.785 190 200.362 190 m(%)194.612 206 s(K)199.612 202 s(KL) 199.612 206 s(6)214.628 202 s(K)229.635 202 s(KL)229.635 208 s 1.8 275.808 184 245.393 184 m(K)244.643 196 s(KL)244.643 198 s(K) 259.651 196 s(KL)259.651 200 s(6)274.658 196 s 16 164(@)289.666 192 b %37/0 %38/4 (5)297.738 58 s(7)317.748 66 s(6)332.755 72 s(8)352.765 70 s (@)367.773 60 s %38/3 (6)297.738 112 s(?)306.138 112 s(6)332.755 112 s 300.738 118 335.755 118 5 cv(7)352.765 108 s 16 76(@)367.773 104 b %38/2 (3)297.738 150 s(?)306.138 152 s 16 120(@)367.773 148 b %38/1 (3)297.738 194 s(?)306.138 196 s 16 164(@)367.773 192 b %38/0 %39/4 (6)375.845 68 s(?)384.245 68 s(6)420.867 68 s 378.845 74 423.867 74 5 cv(8) 440.877 72 s(@)455.885 60 s %39/3 (=)375.845 122 s(4)375.845 122 s(?)384.245 124 s 16 76(@)455.885 104 b %39/2 1.8 407.01 148 376.595 148 m(6)375.845 160 s(>)375.845 160 s(6) 390.852 160 s(>)390.852 160 s(6)405.86 160 s(>)405.86 160 s(6) 420.867 160 s(?)429.267 160 s 16 120(@)455.885 148 b %39/1 1.8 407.01 196 376.595 196 m(6)375.845 208 s(>)375.845 208 s(6) 390.852 208 s(>)390.852 208 s(6)405.86 208 s(>)405.86 208 s(6) 420.867 208 s(=)440.877 210 s(8)440.877 212 s 16 164(@)455.885 192 b %39/0 %40/4 (6)463.957 76 s(?)472.357 76 s(6)508.979 76 s 466.957 82 511.979 82 5 cv(8) 528.989 66 s(@)543.997 60 s %40/3 (5)463.957 108 s(?)472.357 108 s(5)508.979 108 s 466.957 106 511.979 106 -5 cv(8)528.989 116 s 16 76(@)543.997 104 b %40/2 1.8 495.122 146 464.707 146 m(6)463.957 158 s(>)463.957 160 s(6) 478.964 158 s(>)478.964 160 s(6)493.972 158 s(>)493.972 160 s(6) 508.979 158 s(?)517.379 160 s 16 120(@)543.997 148 b %40/1 1.8 495.122 194 464.707 194 m(6)463.957 206 s(>)463.957 206 s(6) 478.964 206 s(>)478.964 206 s(6)493.972 206 s(>)493.972 206 s(6) 508.979 206 s(=)528.989 210 s(8)528.989 212 s 16 164(@)543.997 192 b %40/0 (FFFFCCCCCCC)64 192 s (C)533.997 192 s (FFFFCCCCCCC)64 148 s (C)533.997 148 s (FFFFCCCCCCC)64 104 s (C)533.997 104 s (FFFFCCCCCCC)64 60 s (C)533.997 60 s pagesave restore showpage %%Page: 8 8 %%BeginPageSetup /pagesave save def %%EndPageSetup rm 10 ss(8 )44.2 800 s( )558 800 s mf 10 ss(!)64 753 s(')80 759 s(') 84.5 765 s(!)64 709 s(')80 715 s(')84.5 721 s(#)64 665 s(')80 669 s(') 84.5 675 s(")63.5 621 s(')80 623 s(')84.5 629 s 16 621(@)64 753 b 60.5 769 621 k %41/4 (5)97 625 s(?)105.4 625 s(5)143.641 623 s(?)152.041 625 s (@)190.282 621 s %41/3 (6)97 671 s(?)105.4 673 s(6)143.641 677 s(?)152.041 677 s 16 637(@)190.282 665 b %41/2 (5)97 713 s(?)105.4 713 s(5)143.641 715 s(8)174.735 719 s 16 681(@)190.282 709 b %41/1 1.814 129.244 748.949 97.75 752.948 m(K)97 764.948 s(KL)97 765 s(K) 112.547 762.974 s(KL)112.547 763 s(6)128.094 761 s 1.8 175.885 747 144.391 747 m(K)143.641 759 s(KL)143.641 763 s(6) 159.188 759 s(K)174.735 759 s(KL)174.735 767 s 16 725(@)190.282 753 b %41/0 rm 10 ss(41)64 777 s 75.5 775 62 775 62 786 75.5 786 75.5 775 5 62 775 0.666 ll %42/4 mf 10 ss(6)198.644 631 s(?)207.044 633 s(-)235.92 625 s(?)241.82 629 s (@)259.795 621 s %42/3 (6)198.644 677 s(?)207.044 677 s(-)235.92 669 s(?)241.82 673 s 16 637(@)259.795 665 b %42/2 (5)198.644 715 s(7)219.373 713 s(-)235.92 713 s(?)241.82 717 s 16 681(@)259.795 709 b %42/1 (6)198.644 763 s(8)219.373 761 s(-)235.92 757 s(?)241.82 761 s 16 725(@)259.795 753 b %42/0 %43/4 (6)268.157 629 s(?)276.557 629 s(6)314.798 629 s 271.157 635 317.798 635 5 cv(8)335.527 633 s(@)351.074 621 s %43/3 (3)268.157 669 s(?)276.557 669 s 16 637(@)351.074 665 b %43/2 -1.8 305.501 723 274.007 723 m(5)268.157 707 s(>)268.157 699 s(5) 283.704 707 s(>)283.704 699 s(5)299.251 707 s(>)299.251 699 s(5) 314.798 707 s(?)323.198 709 s 16 681(@)351.074 709 b %43/1 -1.8 305.501 771 274.007 771 m(5)268.157 755 s(>)268.157 745 s(5) 283.704 755 s(>)283.704 745 s(5)299.251 755 s(>)299.251 745 s(5) 314.798 755 s(7)335.527 759 s 16 725(@)351.074 753 b %43/0 %44/4 (6)359.436 637 s(?)367.836 637 s(6)406.077 637 s 362.436 643 409.077 643 5 cv(8)426.806 627 s(@)442.353 621 s %44/3 (5)359.436 669 s(?)367.836 669 s(5)406.077 669 s 362.436 667 409.077 667 -5 cv(8)426.806 677 s 16 637(@)442.353 665 b %44/2 -1.8 396.78 721 365.286 721 m(5)359.436 705 s(>)359.436 697 s(5) 374.983 705 s(>)374.983 697 s(5)390.53 705 s(>)390.53 697 s(5) 406.077 705 s(?)414.477 705 s 16 681(@)442.353 709 b %44/1 -1.8 396.78 769 365.286 769 m(5)359.436 753 s(>)359.436 745 s(5) 374.983 753 s(>)374.983 745 s(5)390.53 753 s(>)390.53 745 s(5) 406.077 753 s(7)426.806 759 s 16 725(@)442.353 753 b %44/0 %45/4 (5)450.715 625 s(?)459.115 625 s(5)497.356 623 s(?)505.756 625 s (@)543.997 621 s %45/3 (5)450.715 671 s(?)459.115 673 s(5)497.356 663 s(?)505.756 665 s 16 637(@)543.997 665 b %45/2 (=)450.715 703 s(=)450.715 699 s(J)450.715 701 s(JL)450.715 699 s(?) 459.115 701 s(=)497.356 703 s(5)497.356 701 s(7)528.45 705 s 16 681(@)543.997 709 b %45/1 -1.814 488.059 763.001 456.565 767 m(5)450.715 751 s(J)466.262 749.026 s (JL)466.262 749 s(=)481.809 747 s(J)481.809 747.052 s(JL)481.809 747 s -1.888 534.7 775.127 503.206 765.144 m(J)497.356 749.144 s(JL) 497.356 749 s(J)512.903 754.072 s(JL)512.903 753 s(5)528.45 759 s 16 725(@)543.997 753 b %45/0 (FFFFCCCCCCC)64 753 s (C)533.997 753 s (FFFFCCCCCCC)64 709 s (C)533.997 709 s (FFFFCCCCCCC)64 665 s (C)533.997 665 s (FFFFCCCCCCC)64 621 s (C)533.997 621 s (!)64 566 s(')80 572 s(')84.5 578 s(!)64 522 s(')80 528 s(')84.5 534 s(#) 64 478 s(')80 482 s(')84.5 488 s(")63.5 434 s(')80 436 s(')84.5 442 s 16 434(@)64 566 b 60.5 582 434 k %46/4 (5)97 430 s(8)116.766 444 s 1.815 162.391 425.947 132.341 429.943 m(K) 131.591 441.943 s(KL)131.591 442 s(K)146.416 439.972 s(KL)146.416 440 s(6) 161.241 438 s(@)176.067 434 s %46/3 (5)97 476 s(7)116.766 480 s -1.815 167.491 496.004 137.441 500 m(5) 131.591 484 s(J)146.416 482.029 s(JL)146.416 482 s(J)161.241 480.057 s(JL) 161.241 480 s 16 450(@)176.067 478 b %46/2 (=)97 516 s(5)97 514 s(=)116.766 516 s(=)116.766 512 s(EJ)116.766 514 s(JL) 116.766 512 s(-)132.591 526 s(?)138.491 530 s 16 494(@)176.067 522 b %46/1 (5)97 562 s(=)116.766 560 s(7)116.766 560 s(-)132.591 570 s(?) 138.491 574 s 16 538(@)176.067 566 b %46/0 rm 10 ss(46)64 590 s 75.5 588 62 588 62 599 75.5 599 75.5 588 5 62 588 0.666 ll %47/4 mf 10 ss(5)184.041 436 s(?)192.441 438 s(5)218.632 438 s(?)227.032 438 s (@)263.108 434 s %47/3 (6)184.041 486 s(=)203.807 496 s(8)203.807 496 s(6)218.632 494 s(=) 248.282 496 s(8)248.282 498 s 16 450(@)263.108 478 b %47/2 (=)184.041 540 s(6)184.041 542 s(>)184.041 542 s(8)203.807 532 s(>) 203.807 534 s 1.815 249.432 517.947 219.382 521.943 m(K) 218.632 533.943 s(KL)218.632 534 s(K)233.457 531.972 s(KL)233.457 532 s(6) 248.282 530 s 16 494(@)263.108 522 b %47/1 (=)184.041 584 s(6)184.041 586 s(>)184.041 586 s(8)203.807 576 s(>) 203.807 578 s 1.815 249.432 561.947 219.382 565.943 m(K) 218.632 577.943 s(KL)218.632 578 s(K)233.457 575.972 s(KL)233.457 576 s(6) 248.282 574 s 16 538(@)263.108 566 b %47/0 rm 12 ss(B)176.067 597 s 185.471 595 174.067 595 174.067 608 185.471 608 185.471 595 5 174.067 595 0.8 ll %48/4 mf 10 ss(5)271.082 440 s(?)279.482 442 s(5)315.557 438 s(?)323.957 438 s (@)360.033 434 s %48/3 (6)271.082 490 s(?)279.482 490 s(6)315.557 494 s(?)323.957 494 s 16 450(@)360.033 478 b %48/2 1.862 301.882 523.993 271.832 516 m(6)271.082 528 s(K)285.907 531.943 s(KL) 285.907 532 s(K)300.732 535.886 s(KL)300.732 536 s 1.8 346.357 518 316.307 518 m(K)315.557 530 s(KL)315.557 534 s(6) 330.382 530 s(K)345.207 530 s(KL)345.207 538 s 16 494(@)360.033 522 b %48/1 1.862 301.882 567.993 271.832 560 m(6)271.082 572 s(K)285.907 575.943 s(KL) 285.907 576 s(K)300.732 579.886 s(KL)300.732 580 s 1.8 346.357 562 316.307 562 m(K)315.557 574 s(KL)315.557 578 s(6) 330.382 574 s(K)345.207 574 s(KL)345.207 582 s 16 538(@)360.033 566 b %49/4 (6)368.007 440 s(?)376.407 442 s(6)412.482 442 s(?)420.882 442 s (@)447.074 434 s %49/3 (=)368.007 496 s(6)368.007 496 s(?)376.407 498 s(=)412.482 496 s(6) 412.482 496 s(8)432.248 492 s 16 450(@)447.074 478 b %49/2 1.835 398.807 529.979 368.757 524 m(6)368.007 536 s(=)382.832 540 s(K) 382.832 538.95 s(KL)382.832 540 s(=)397.657 540 s(K)397.657 541.9 s(KL) 397.657 542 s(6)412.482 538 s(>)412.482 538 s(8)432.248 534 s(>) 432.248 534 s 16 494(@)447.074 522 b %49/1 1.835 398.807 573.979 368.757 568 m(6)368.007 580 s(=)382.832 584 s(K) 382.832 582.95 s(KL)382.832 584 s(=)397.657 584 s(K)397.657 585.9 s(KL) 397.657 586 s(6)412.482 582 s(>)412.482 582 s(=)432.248 584 s(=) 432.248 588 s(HK)432.248 586 s(KL)432.248 588 s(>)432.248 588 s 16 538(@)447.074 566 b %50/4 (6)455.048 444 s(?)463.448 446 s(-)500.523 438 s(8)529.173 440 s (@)543.999 434 s %50/3 (6)455.048 490 s(?)463.448 490 s(.)500.523 482 s(.)515.348 482 s(8) 529.173 490 s 16 450(@)543.999 478 b %50/2 (6)455.048 530 s(?)463.448 530 s(.)500.523 526 s(.)515.348 526 s(8) 529.173 536 s 16 494(@)543.999 522 b %50/1 1.815 485.848 569.947 455.798 573.943 m(=)455.048 584 s(K) 455.048 585.943 s(KL)455.048 586 s(=)469.873 584 s(K)469.873 583.972 s(KL) 469.873 584 s(6)484.698 582 s(>)484.698 582 s(6)499.523 580 s(') 524.223 584 s(=)529.173 584 s(8)529.173 584 s 16 538(@)543.999 566 b (FFFFCCCCCCC)64 566 s (C)533.999 566 s (FFFFCCCCCCC)64 522 s (C)533.999 522 s (FFFFCCCCCCC)64 478 s (C)533.999 478 s (FFFFCCCCCCC)64 434 s (C)533.999 434 s (!)64 379 s(')80 385 s(')84.5 391 s(!)64 335 s(')80 341 s(')84.5 347 s(#) 64 291 s(')80 295 s(')84.5 301 s(")63.5 247 s(')80 249 s(')84.5 255 s 16 247(@)64 379 b 60.5 395 247 k %51/4 (6)97 255 s(?)105.4 255 s(6)152.229 253 s(?)160.629 255 s (@)207.459 247 s %51/3 (6)97 301 s(?)105.4 303 s(=)152.229 309 s(6)152.229 309 s(?) 160.629 311 s 16 263(@)207.459 291 b %51/2 (6)97 341 s(8)133.819 351 s 1.8 190.199 333 152.979 333 m(K) 152.229 345 s(KL)152.229 349 s(6)170.639 345 s(K)189.049 345 s(KL) 189.049 349 s(>)189.049 349 s 16 307(@)207.459 335 b %51/1 1.8 134.969 379 97.75 379 m(K)97 391 s(KL)97 395 s(6)115.409 391 s(K) 133.819 391 s(KL)133.819 395 s(>)133.819 395 s 1.8 190.199 377 152.979 377 m(K)152.229 389 s(KL)152.229 393 s(6) 170.639 389 s(K)189.049 389 s(KL)189.049 393 s(>)189.049 393 s 16 351(@)207.459 379 b rm 10 ss(51)64 403 s 75.5 401 62 401 62 412 75.5 412 75.5 401 5 62 401 0.666 ll %52/4 mf 10 ss(5)217.361 251 s(?)225.761 251 s(5)272.59 249 s(?)280.99 251 s (@)315.547 247 s %52/3 (6)217.361 307 s(?)225.761 307 s(=)272.59 309 s(6)272.59 309 s(8) 297.137 299 s 16 263(@)315.547 291 b %52/2 1.8 255.33 331 218.111 331 m(K)217.361 343 s(KL)217.361 347 s(6) 235.77 343 s(K)254.18 343 s(KL)254.18 347 s(>)254.18 347 s(6) 272.59 345 s(>)272.59 347 s(8)297.137 349 s(>)297.137 349 s 16 307(@)315.547 335 b %52/1 1.8 255.33 375 218.111 375 m(K)217.361 387 s(KL)217.361 391 s(6) 235.77 387 s(K)254.18 387 s(KL)254.18 391 s(>)254.18 391 s(6) 272.59 389 s(>)272.59 391 s(8)297.137 393 s(>)297.137 393 s 16 351(@)315.547 379 b %53/4 (6)325.449 255 s(?)333.849 255 s(6)380.678 257 s(?)389.078 259 s (@)435.908 247 s %53/3 1.84 363.418 290.964 326.199 283 m(6)325.449 295 s(K)343.858 298.939 s(KL) 343.858 305 s(K)362.268 302.879 s(KL)362.268 303 s 1.81 418.648 284.957 381.428 288.939 m(K)380.678 300.939 s(KL) 380.678 301 s(K)399.088 298.97 s(KL)399.088 299 s(6)417.498 297 s 16 263(@)435.908 291 b %53/2 1.84 363.418 332.964 326.199 325 m(6)325.449 337 s(K)343.858 340.939 s(KL) 343.858 347 s(K)362.268 344.879 s(KL)362.268 345 s 1.81 418.648 326.957 381.428 330.939 m(K)380.678 342.939 s(KL) 380.678 343 s(K)399.088 340.97 s(KL)399.088 341 s(6)417.498 339 s 16 307(@)435.908 335 b %53/1 1.84 363.418 376.964 326.199 369 m(6)325.449 381 s(K)343.858 384.939 s(KL) 343.858 391 s(K)362.268 388.879 s(KL)362.268 389 s 1.81 418.648 370.957 381.428 374.939 m(K)380.678 386.939 s(KL) 380.678 387 s(K)399.088 384.97 s(KL)399.088 385 s(6)417.498 383 s 16 351(@)435.908 379 b %54/4 (5)445.81 249 s(?)454.21 251 s(-)489.767 251 s(7)525.586 253 s (@)543.996 247 s %54/3 (6)445.81 299 s(?)454.21 299 s(.)489.767 295 s(.)508.177 295 s(8) 525.586 303 s 16 263(@)543.996 291 b %54/2 (6)445.81 341 s(>)445.81 343 s(8)470.357 345 s(>)470.357 347 s 1.8 526.736 323 489.517 323 m(K)488.767 335 s(K)488.767 345 s(KL) 488.767 349 s(6)507.177 335 s(')521.086 339 s(K)525.586 335 s(KL) 525.586 339 s 16 307(@)543.996 335 b %54/1 (6)445.81 385 s(>)445.81 387 s(8)470.357 389 s(>)470.357 391 s 1.8 526.736 367 489.517 367 m(K)488.767 379 s(K)488.767 389 s(KL) 488.767 393 s(6)507.177 379 s(')521.086 383 s(K)525.586 379 s(KL) 525.586 383 s 16 351(@)543.996 379 b (FFFFCCCCCCC)64 379 s (C)533.996 379 s (FFFFCCCCCCC)64 335 s (C)533.996 335 s (FFFFCCCCCCC)64 291 s (C)533.996 291 s (FFFFCCCCCCC)64 247 s (C)533.996 247 s (!)64 192 s(')80 198 s(')84.5 204 s(!)64 148 s(')80 154 s(')84.5 160 s(#) 64 104 s(')80 108 s(')84.5 114 s(")63.5 60 s(')80 62 s(')84.5 68 s 16 60(@)64 192 b 60.5 208 60 k %55/4 (6)97 68 s(?)105.4 68 s(6)158.199 70 s(?)166.599 72 s(@)219.399 60 s %55/3 (5)97 108 s(?)105.4 108 s(5)158.199 106 s(8)198.999 114 s 16 76(@)219.399 104 b %55/2 1.874 138.949 149.988 97.75 138 m(6)97 150 s(K)117.399 155.936 s(KL) 117.399 164 s(K)137.799 161.872 s(KL)137.799 162 s 1.808 200.149 143.961 158.949 147.957 m(K)158.199 159.957 s(KL) 158.199 160 s(K)178.599 157.979 s(KL)178.599 158 s(6)198.999 156 s 16 120(@)219.399 148 b %55/1 1.874 138.949 193.988 97.75 182 m(6)97 194 s(K)117.399 199.936 s(KL) 117.399 208 s(K)137.799 205.872 s(KL)137.799 206 s 1.808 200.149 187.961 158.949 191.957 m(K)158.199 203.957 s(KL) 158.199 204 s(K)178.599 201.979 s(KL)178.599 202 s(6)198.999 200 s 16 164(@)219.399 192 b rm 10 ss(55)64 216 s 75.5 214 62 214 62 225 75.5 225 75.5 214 5 62 214 0.666 ll %56/4 mf 10 ss(6)230.371 72 s(?)238.771 72 s(6)291.57 66 s(8)332.37 68 s (@)352.77 60 s %56/3 (6)230.371 112 s(?)238.771 112 s(6)291.57 116 s(7)332.37 108 s 16 76(@)352.77 104 b %56/2 1.8 272.32 142 231.121 142 m(6)230.371 154 s(K)250.77 154 s(KL) 250.77 158 s(K)271.17 154 s(KL)271.17 156 s -1.808 338.62 166.004 297.42 170 m(5)291.57 154 s(J)311.97 152.022 s(JL) 311.97 152 s(J)332.37 150.043 s(JL)332.37 150 s 16 120(@)352.77 148 b %56/1 1.8 272.32 186 231.121 186 m(6)230.371 198 s(K)250.77 198 s(KL) 250.77 202 s(K)271.17 198 s(KL)271.17 200 s -1.808 338.62 210.004 297.42 214 m(5)291.57 198 s(J)311.97 196.022 s(JL) 311.97 196 s(J)332.37 194.043 s(JL)332.37 194 s 16 164(@)352.77 192 b %57/4 (6)363.742 70 s(?)372.142 72 s(5)424.941 56 s(?)433.341 56 s (@)486.141 60 s %57/3 (5)363.742 108 s(?)372.142 108 s(5)424.941 106 s(?)433.341 108 s 16 76(@)486.141 104 b %57/2 -1.808 410.791 160.004 369.592 164 m(5)363.742 148 s(J)384.141 146.022 s (JL)384.141 146 s(J)404.541 144.043 s(JL)404.541 144 s -1.808 471.991 158.004 430.791 162 m(5)424.941 146 s(J)445.341 144.022 s (JL)445.341 144 s(=)465.741 142 s(J)465.741 142.043 s(JL)465.741 142 s 16 120(@)486.141 148 b %57/1 -1.808 410.791 204.004 369.592 208 m(5)363.742 192 s(J)384.141 190.022 s (JL)384.141 190 s(J)404.541 188.043 s(JL)404.541 188 s -1.808 471.991 202.004 430.791 206 m(5)424.941 190 s(J)445.341 188.022 s (JL)445.341 188 s(=)465.741 186 s(J)465.741 186.043 s(JL)465.741 186 s 16 164(@)486.141 192 b %58/4 (3)497.113 62 s(?)505.513 64 s(B)542.497 60 s(@)540.497 60 s %58/3 (3)497.113 108 s(?)505.513 108 s 16 76(B)542.497 104 b 16 76(@)540.497 104 b %58/2 (=)497.113 142 s(3)497.113 140 s(?)505.513 140 s 16 120(B)542.497 148 b 16 120(@)540.497 148 b %58/1 (=)497.113 186 s(3)497.113 184 s(?)505.513 184 s 16 164(B)542.497 192 b 16 164(@)540.497 192 b (FFFFCCCCCCC)64 192 s (C)533.997 192 s (FFFFCCCCCCC)64 148 s (C)533.997 148 s (FFFFCCCCCCC)64 104 s (C)533.997 104 s (FFFFCCCCCCC)64 60 s (C)533.997 60 s pagesave restore showpage %%Trailer %%Pages: 8 pmw-5.22/testdist/outfiles/Test05.ps0000644000222100022210000002456414541067540015501 0ustar ph10ph10%%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol %%+ font PMW-Music %%Requirements: numcopies(1) %%EndComments %%BeginPaperSize: a4 a4 %%EndPaperSize %%BeginProlog %%Standard Header Omitted (testing) %%EndProlog %%BeginSetup %%IncludeResource: font Times-Roman /rm /rmX /Times-Roman inf %%IncludeResource: font Times-Italic /it /itX /Times-Italic inf %%IncludeResource: font Times-Bold /bf /bfX /Times-Bold inf %%IncludeResource: font Times-BoldItalic /bi /biX /Times-BoldItalic inf %%IncludeResource: font Symbol /sy /syX /Symbol inf %%IncludeResource: font PMW-Music /mf /mfX /PMW-Music inf %%EndSetup %%Page: 1 1 %%BeginPageSetup /pagesave save def %%EndPageSetup rm 16 ss(#2. Da)243.048 760 s(vid Chaitkin)-0.32 0 rs(Prelude) 279.56 742 s mf 10 ss(!)66 655 s(!)66 655 s(!)66 605 s 16 605(@)64 655 b 0.126 57 638 br2 %27/3 (.)191.359 593 s(7)117.286 611 s(%)112.286 605 s(5)117.286 605 s(-) 133.744 609 s mf 8 ss(")143.355 607.4 s bi 12 ss(pp)140.43 591 s mf 10 ss(=)156.43 599 s(8)156.43 599 s(>)156.43 579 s(6)156.43 607 s 163.43 600 170.43 600 -2.1 cv 163.43 607 170.43 607 -2.1 cv mf 8 ss(!) 172.996 605.8 s mf 10 ss(7)190.359 611 s(%)185.359 605 s(5)190.359 605 s 198.359 610 205.359 610 2.1 cv 198.359 614 205.359 614 2.1 cv -10 40 -15 0 cA 117.286 627 191.359 631 36 cv 198.359 640.5 162.43 637 0.2 l 198.359 633.5 162.43 637 0.2 l (@)210.274 605 s %27/2 (-)88 655 s(?)93.9 659 s(6)132.744 657 s(?)141.144 659 s(6)132.744 665 s(?) 141.144 667 s 16 621(@)210.274 655 b %27/1 (=)87 673 s(=)87 677 s(=)87 681 s(=)87 685 s(=)87 689 s(=)87 693 s(5) 87 693 s(>)87 705 s(=)87 673 s(=)87 677 s(5)87 679 s(%)102.19 683 s(=) 107.19 673 s(=)107.19 677 s(=)107.19 681 s(5)107.19 683 s(>)107.19 695 s(%) 102.19 669 s(5)107.19 669 s 0 0 0 0 cA 115.19 685 122.19 685 2.1 cv 115.19 672 122.19 672 2.1 cv 75 713 110.19 711 6 cv(@)210.274 655 s it 9 ss(27)64 679 s %28/3 mf 10 ss(7)295.969 611 s(%)290.969 605 s(5)295.969 605 s(@)311.617 605 s %28/2 (6)217.845 657 s(6)217.845 665 s 224.845 665 231.845 665 -2.1 cv 224.845 657 231.845 657 -2.1 cv(-)246.492 655 s(-)266.683 655 s(?) 272.583 659 s 16 621(@)311.617 655 b %28/1 (-)218.845 675 s(%)233.937 683 s(=)238.937 673 s(=)238.937 677 s(=) 238.937 681 s(3)238.937 683 s(>)238.937 695 s(%)233.937 669 s(3) 238.937 669 s it 8 ss(3)230.141 705 s 228.641 707.8 218.345 707.8 2 218.345 705.8 0.3 ll 245.937 705.8 245.937 707.8 2 235.641 707.8 0.3 ll mf 10 ss(=)265.683 673 s(=)265.683 677 s(=) 265.683 681 s(=)265.683 685 s(=)265.683 689 s(=)265.683 693 s(5) 265.683 693 s(>)265.683 705 s(=)265.683 673 s(=)265.683 677 s(5) 265.683 679 s(%)280.874 683 s(=)285.874 673 s(=)285.874 677 s(=) 285.874 681 s(5)285.874 683 s(>)285.874 695 s(%)280.874 669 s(5) 285.874 669 s 293.874 685 300.874 685 2.1 cv 293.874 672 300.874 672 2.1 cv 246.937 711 288.874 711 12 cv(@)311.617 655 s %29/3 (.)373.535 593 s it 12 ss(m)316.188 635 s bi 12 ss(p)324.852 635 s it 12 ss(\()324.188 587 s bi 12 ss(pp)328.184 587 s it 12 ss(\)) 340.184 587 s mf 10 ss(-)320.188 609 s mf 8 ss(")329.799 607.4 s mf 10 ss(=)342.874 599 s(=)342.874 595 s(8)342.874 595 s(>)342.874 575 s(6) 342.874 603 s 349.874 595 356.874 595 -2.1 cv 349.874 603 356.874 603 -2.1 cv mf 8 ss(!)355.172 605.8 s mf 10 ss(7)372.535 611 s(%) 367.535 605 s(5)372.535 605 s 366.535 638 334.188 641.5 0.2 l 366.535 638 334.188 634.5 0.2 l 380.535 615 387.535 615 2.1 cv 380.535 610 387.535 610 2.1 cv 0 40 -10 0 cA 295.969 627 373.535 631 36 cv(-)391.126 609 s(?)397.026 613 s 408.812 631.4 Mt 414.812 635.4 Lt 0.2 Slw S mf 7 ss(=)407.812 623.6 s(=)407.812 627.6 s(7)407.812 629.6 s(J) 407.812 620.6 s(JL)407.812 615.6 s mf 10 ss(%)413.624 619 s(8) 418.624 619 s 0 0 0 0 cA 421.624 625 433.624 625 3.6 cv 410.812 614 416.624 615 -1.743 cv(@)435.901 605 s %29/2 (6)319.188 657 s(?)327.588 659 s(6)319.188 665 s(?)327.588 667 s 16 621(@)435.901 655 b %29/1 (-)391.126 659 s(?)397.026 663 s it 12 ss(s)399.024 645 s bi 12 ss(f) 403.692 645 s(f)-0.216 0 rs it 7 ss(8va - - )407.024 701.4 s mf 7 ss(\237) 427.044 701.4 s 408.624 689.4 Mt 414.624 693.4 Lt 0.2 Slw S(=) 407.624 673.6 s(=)407.624 677.6 s(=)407.624 681.6 s(=)407.624 685.6 s(7) 407.624 687.6 s(=)407.624 673.6 s(J)407.624 678.6 s(JL)407.624 673.6 s mf 10 ss(=)418.624 673 s(=)418.624 677 s(HK)418.624 675 s(KL) 418.624 679 s 421.624 685 433.624 685 3.6 cv 410.624 672 416.624 674 -1.8 cv(@)435.901 655 s %30/3 (.)444.472 609 s mf 8 ss(")454.083 607.4 s it 12 ss(m)456.498 632 s bi 12 ss(f)465.162 632 s mf 10 ss(6)467.158 621 s(?)475.558 621 s(8) 491.387 621 s 470.158 627 494.387 627 5 cv(=)506.53 623 s(6)506.53 623 s(') 522.221 607 s(8)526.721 607 s(=)526.721 623 s(K)526.721 621 s(KL) 526.721 623 s(\221)522.221 607 s(\221)522.221 611 s(\221)522.221 615 s(\221) 522.221 619 s(\221)522.221 623 s(\221)522.221 627 s(\221)522.221 631 s(\221) 522.221 635 s(\221)522.221 639 s(\221)522.221 643 s(\221)522.221 647 s(\221) 522.221 651 s(\221)522.221 655 s(\221)522.221 659 s(\221)522.221 663 s(\221) 522.221 667 s 157.43 571 77.286 571 0.3 l 161.43 571 Mt 159.43 577 Lt 157.43 571 Lt 0.3 Slw S 343.874 571 161.43 571 0.3 l 347.874 571 Mt 345.874 577 Lt 343.874 571 Lt 0.3 Slw S 508.28 571 347.874 571 0.3 l 510.78 571 Mt 509.53 574.75 Lt 508.28 571 Lt 0.3 Slw S 527.721 571 510.78 571 0.3 l 531.721 571 Mt 529.721 577 Lt 527.721 571 Lt 0.3 Slw S 544.998 571 531.721 571 0.3 l(@)543.998 605 s %30/2 16 621(@)543.998 655 b %30/1 (,)444.472 663 s(-)492.387 659 s(?)498.287 663 s it 12 ss(s) 526.721 632 s bi 12 ss(f)531.389 632 s mf 10 ss(8)526.721 651 s(K) 526.721 665 s(KL)526.721 667 s(U)527.721 671 s 533.721 651 540.721 651 -2.1 cv 532.721 671 541.721 671 2.7 cv(@)543.998 655 s (FFFFCCCCCCC)64 655 s (C)533.998 655 s (FFFFCCCCCCC)64 605 s (C)533.998 605 s (!)66 505 s(")65.5 455 s 16 455(@)64 505 b 0.126 57 488 br2 %31/3 (.)91 459 s mf 8 ss(!)101.647 455.8 s 114.842 481.4 Mt 120.842 485.4 Lt 0.2 Slw S mf 7 ss(=)113.842 473.6 s(=)113.842 477.6 s(7)113.842 479.6 s(J) 113.842 470.6 s(JL)113.842 465.6 s mf 10 ss(\()119.771 469 s(6) 124.021 469 s 116.842 464 122.021 465 -1.553 cv(8)143.912 471 s(8) 158.831 471 s 146.912 477 161.831 477 3.475 cv it 10 ss(dim.) 167.999 491 s mf 10 ss(6)173.749 463 s(7)192.61 455 s(@)208.026 455 s %31/2 16 471(@)208.026 505 b %31/1 (.)91 509 s it 12 ss(s)109.171 495 s bi 12 ss(f)113.839 495 s 115.021 539.4 Mt 121.021 543.4 Lt 0.2 Slw S mf 7 ss(=)114.021 523.6 s(=) 114.021 527.6 s(=)114.021 531.6 s(=)114.021 535.6 s(7)114.021 537.6 s(=) 114.021 523.6 s(J)114.021 528.6 s(JL)114.021 523.6 s it 7 ss(8va) 113.967 552 s mf 10 ss(=)124.021 523 s(=)124.021 527 s(K)124.021 525 s(KL) 124.021 529 s 117.021 520 122.021 520 -1.5 cv rm 7 ss( - - - - - -) 124.075 552 s( )148.561 552 s mf 7 ss(\237)150.311 552 s rm 10 ss( ) 153.662 535 s mf 10 ss(8)143.912 517 s 146.912 523 158.912 523 3.6 cv -2 0 0 0 cA 127.021 536 145.912 525 4.667 cv bi 10 ss(allarg.) 159.831 529 s mf 10 ss(,)159.831 513 s(@)208.026 505 s it 9 ss(31) 64 529 s %32/3 mf 10 ss(7)215.485 455 s 0 0 0 0 cA 195.61 453 218.485 453 -5 cv(5) 230.713 453 s(7)250.605 451 s(5)265.834 451 s 253.605 449 268.834 449 -3.568 cv bi 10 ss(p)282.409 490 s rm 10 ss ( - - - - - - - -)185.499 491 s( )280.159 477 s mf 10 ss(5) 282.409 457 s(=)298.985 449 s(=)298.985 445 s(J)298.985 447 s(JL) 298.985 445 s it 8 ss(3)283.659 475 s 282.159 477.8 265.334 477.8 2 265.334 475.8 0.3 ll 305.985 475.8 305.985 477.8 2 289.159 477.8 0.3 ll 146.912 481 301.985 480 8 cv mf 8 ss(") 309.072 457.4 s 320.985 476 292.409 495.5 0.2 l 320.985 476 292.409 488.5 0.2 l mf 10 ss(@)321.837 455 s %32/2 16 471(@)321.837 505 b %32/1 (+)261.931 513 s(@)321.837 505 s %33/3 (2)329.296 471 s 145.662 432 79.5 432 0.3 l 148.162 432 Mt 146.912 435.75 Lt 145.662 432 Lt 0.3 Slw S 194.36 432 148.162 432 0.3 l 196.86 432 Mt 195.61 435.75 Lt 194.36 432 Lt 0.3 Slw S 222.834 432 196.86 432 0.3 l(`````````````````````````)221.834 428.9 s it 7 ss(\(flutter\))226.834 435 s 330.296 432 322.834 432 0.3 l mf 7 ss($) 333.296 432 s mf 10 ss(-)330.296 451 s(r)345.871 444 s(r)345.871 445 s(r) 345.871 446 s(r)345.871 447 s(r)345.871 448 s(r)345.871 449 s(r) 345.871 450 s(r)345.871 451 s(r)345.871 452 s(r)345.871 453 s(rM) 345.871 453 s it 8 ss(3)339.333 440 s 337.833 442.8 329.796 442.8 2 329.796 444.8 0.3 ll 352.871 444.8 352.871 442.8 2 344.833 442.8 0.3 ll mf 10 ss(r)379.022 444 s(r)379.022 445 s(r) 379.022 446 s(r)379.022 447 s(r)379.022 448 s(r)379.022 449 s(r) 379.022 450 s(r)379.022 451 s(r)379.022 452 s(r)379.022 453 s(rM) 379.022 453 s 348.871 451 378.022 451 -5 cv(@)428.748 455 s %33/2 16 471(@)428.748 505 b %33/1 bi 12 ss(p)330.296 531 s bf 10 ss(A tempo)330.296 541 s mf 10 ss(-) 330.296 509 s it 9 ss(cantabile)353.871 529 s mf 10 ss(%)340.871 499 s(=) 345.871 499 s(5)345.871 499 s(5)362.446 503 s it 8 ss(3)347.621 523 s 346.121 525.8 329.796 525.8 2 329.796 523.8 0.3 ll 369.446 523.8 369.446 525.8 2 353.121 525.8 0.3 ll mf 10 ss(5)379.022 509 s(%) 390.597 519 s(6)395.597 519 s(6)412.173 521 s it 8 ss(3)396.847 497 s 395.347 499.8 378.522 499.8 2 378.522 501.8 0.3 ll 419.173 501.8 419.173 499.8 2 402.347 499.8 0.3 ll mf 10 ss(@)428.748 505 s %34/3 (\221)439.807 453 s(\221)439.807 457 s(\221)439.807 461 s(\221) 439.807 465 s(\221)439.807 469 s(\221)439.807 473 s(\221)439.807 477 s(\221) 439.807 481 s(\221)439.807 485 s(\221)439.807 489 s(\221)439.807 493 s(\221) 439.807 497 s(\221)439.807 501 s(\221)439.807 505 s(\221)439.807 509 s(\221) 439.807 513 s(\221)439.807 517 s(2)444.307 455 s(')439.807 471 s(2) 444.307 471 s(\243)344.871 431.5 s rm 10 ss( )358.871 431.5 s 445.307 431.5 362.871 431.5 0.3 l 449.307 431.5 Mt 447.307 437.5 Lt 445.307 431.5 Lt 0.3 Slw S 462.87 431.5 449.307 431.5 0.3 l 465.37 431.5 Mt 464.12 435.25 Lt 462.87 431.5 Lt 0.3 Slw S 479.446 431.5 465.37 431.5 0.3 l 481.946 431.5 Mt 480.696 435.25 Lt 479.446 431.5 Lt 0.3 Slw S 495.271 431.5 481.946 431.5 0.3 l mf 7 ss($) 498.271 431.5 s mf 10 ss(@)543.997 455 s %34/2 16 471(@)543.997 505 b %34/1 (5)444.307 517 s(5)461.12 507 s(%)472.696 505 s(5)477.696 505 s 461.589 535.722 444.307 540 0.3 l 444.307 537 444.307 540.15 0.3 l it 8 ss(3)462.501 532.002 s 484.696 530 467.413 534.281 0.3 l 484.696 527 484.696 530.15 0.3 l mf 10 ss(5)494.271 503 s(5) 510.847 509 s(5)527.422 507 s it 8 ss(3)512.096 527 s 510.596 529.8 493.771 529.8 2 493.771 527.8 0.3 ll 534.422 527.8 534.422 529.8 2 517.596 529.8 0.3 ll 345.871 531 530.422 533 18 cv mf 10 ss(=) 444.307 499 s(2)444.307 499 s(@)543.997 505 s (FFFFCCCCCCC)64 505 s (C)533.997 505 s (FFFFCCCCCCC)64 455 s (C)533.997 455 s pagesave restore showpage %%Trailer %%Pages: 1 pmw-5.22/src/0000755000222100022210000000000014541067540011130 5ustar ph10ph10pmw-5.22/src/debug.c0000644000222100022210000012543214541067540012371 0ustar ph10ph10/************************************************* * PMW debugging functions * *************************************************/ /* Copyright Philip Hazel 2022 */ /* This file created: December 2020 */ /* This file last modified: December 2023 */ #include "pmw.h" static const char *acnames[] = { "", "%", "#-", "#", "##", "$-", "$", "$$" }; static const char *absnamess = "C\0..C#-\0C#\0.D$-\0" "D\0..D#-\0D#\0.E$-\0" "E\0..E#-\0" "F\0..F#-\0F#\0.G$-\0" "G\0..G#-\0G#\0.A$-\0" "A\0..A#-\0A#\0.B$-\0" "B\0..B#-"; static const char *absnamesf = "C\0..C#-\0D$\0.D$-\0" "D\0..D#-\0E$\0.E$-\0" "E\0..F$-\0" "F\0..F#-\0G$\0.G$-\0" "G\0..G#-\0A$\0.A$-\0" "A\0..A#-\0B$\0.B$-\0" "B\0..C$-"; static const char *noteflags[] = { "++", "+", "", "", "-", "=", "=-", "==", "==-", "===" }; static const char *fonttype_names[] = { "roman", "italic", "bold", "bold italic", "symbol", "music" }; static const char *stemswaptype[] = { "default", "up", "down", "left", "right" }; #define fp (void)fprintf #define sfk string_format_key /************************************************* * Output a set of slashed flags * *************************************************/ static void debug_flags(uint32_t flags, const char *s) { while (*s != 0 && flags != 0) { const char *ss = s; while (*s != 0 && *s != ',') s++; if ((flags & 1) != 0) eprintf("/%.*s", (int)(s - ss), ss); if (*s == ',') s++; flags >>= 1; } if (flags != 0) eprintf("/LEFTOVER=0x%x", flags); } /************************************************* * Output font size information * *************************************************/ /* Note that string_format_fixed() aka sff() allows up to 5 simultaneous outputs to exist. The reconstituted stretch and shear often end up as x.y99 when the original had just one decimal place, so we round them up. */ static void debug_fontsize(const char *s, fontinststr *fdata) { eprintf(" %s %s", s, sff(fdata->size)); if (fdata->matrix != NULL) { int32_t stretch = mac_muldiv(fdata->matrix[0], 1000, 65536); int32_t shear = (int32_t)( atan((double)(fdata->matrix[2])/65536.0)/atan(1.0)*45000); if ((stretch + 1) % 100 == 0) stretch++; if ((shear + 1) % 100 == 0) shear++; eprintf("/%s/%s", sff(stretch), sff(shear)); eprintf(" %s %s", sff(fdata->matrix[0]), sff(fdata->matrix[2])); } eprintf("\n"); } /************************************************* * Output font type information * *************************************************/ static void debug_fonttype(const char *s, uint8_t type) { if (type < font_xx) eprintf(" %s = %s\n", s, fonttype_names[type]); else eprintf(" %s = extra %d\n", s, type - font_xx + 1); } /************************************************* * Output a PMW string * *************************************************/ /* This is global so that it can be called from debugging code in other modules. */ void debug_string(uint32_t *p) { uint32_t sfont = font_unknown; eprintf("\""); for (uint32_t c = *p; c != 0; c = *(++p)) { uint32_t font = PFONT(c); c = PCHAR(c); if (font != sfont) { sfont = font; if (font >= font_small) { font -= font_small; if (font == font_mf) eprintf("\\mu\\"); else eprintf("\\%s\\\\sc\\", font_IdStrings[font]); } else eprintf("\\%s\\", font_IdStrings[font]); } if (c <= MAX_UNICODE) { if (c == '|' || c == '"') eprintf("\\%c", c); else if (c >= ' ' && c <= 126) eprintf("%c", c); else eprintf("\\x%x\\", c); } else switch(c) { case ss_page: eprintf("\\p\\"); break; case ss_pageeven: eprintf("\\pe\\"); break; case ss_pageodd: eprintf("\\po\\"); break; case ss_skipeven: eprintf("\\se\\"); break; case ss_skipodd: eprintf("\\so\\"); break; case ss_repeatnumber: eprintf("\\r\\"); break; case ss_repeatnumber2: eprintf("\\r2\\"); break; case ss_verticalbar: eprintf("|"); break; case ss_escapedhyphen: eprintf("\\-"); break; case ss_escapedequals: eprintf("\\="); break; case ss_escapedsharp: eprintf("\\#"); break; default: eprintf("\\UNKNOWN %06x\\", c); break; } } eprintf("\""); } /************************************************* * Output a draw call * *************************************************/ static void debug_draw(tree_node *drawing, drawitem *drawargs, const char *s) { eprintf("%sdraw", s); if (drawargs != NULL) { int i; drawitem *d = drawargs; for (i = 1; i <= d->d.val; i++) { drawitem *dd = d + i; if (dd->dtype == dd_number) { eprintf(" %s", sff(dd->d.val)); } else { drawtextstr *dt = dd->d.ptr; eprintf(" "); debug_string(dt->text); if (dt->rotate != 0) eprintf("/rot%s", sff(dt->rotate)); if (dt->xdelta != 0) eprintf("/r%s", sff(dt->xdelta)); if (dt->ydelta != 0) eprintf("/u%s", sff(dt->ydelta)); if (dt->size != 0) eprintf("/s%d", dt->size); if (dt->flags != 0) eprintf("/flags=0x%x", dt->flags); } } } eprintf(" %s", drawing->name); } /************************************************* * Output heading/footing * *************************************************/ static void debug_heading(const char *name, headstr *hd) { if (hd == NULL) return; for (; hd != NULL; hd = hd->next) { if (hd->drawing != NULL) { eprintf(" %s", name); debug_draw(hd->drawing, hd->drawargs, " "); eprintf(" %s", sff(hd->space)); } else { const char *sep = ""; eprintf(" %s = %s", name, sff(hd->fdata.size)); if (hd->fdata.matrix != NULL) { int32_t stretch = mac_muldiv(hd->fdata.matrix[0], 1000, 65536); int32_t shear = (int32_t)( atan((double)(hd->fdata.matrix[2])/65536.0)/atan(1.0)*45000); eprintf("/%s/%s", sff(stretch), sff(shear)); } eprintf(" "); for (int i = 0; i < 3; i++) { if (hd->string[i] != NULL) { eprintf("%s", sep); debug_string(hd->string[i]); sep = " | "; } } eprintf(" %s", sff(hd->space)); if (hd->fdata.spacestretch != 0) eprintf(" spacestretch=%s", sff(hd->fdata.spacestretch)); if (hd->spaceabove != 0) eprintf(" above=%s", sff(hd->spaceabove)); } eprintf("\n"); } } /************************************************* * Output a moving dimension * *************************************************/ static void debug_move(int32_t x, const char *p, const char *m) { if (x != 0) eprintf("/%s%s", (x >= 0)? p : m, sff(abs(x))); } /************************************************* * Output text flags * *************************************************/ typedef struct { uint32_t bit; const char *name; } textflag_name; static textflag_name textflags[] = { { text_above, "above" }, { text_absolute, "absolute" }, { text_atulevel, "atulevel" }, { text_baralign, "baralign" }, { text_barcentre, "barcentre" }, { text_boxed, "boxed" }, { text_boxrounded,"boxrounded" }, { text_centre, "centre" }, { text_endalign, "endalign" }, { text_fb, "fb" }, { text_followon, "followon" }, { text_middle, "middle" }, { text_rehearse, "rehearse" }, { text_ringed, "ringed" }, { text_timealign, "timealign" }, { text_ul, "ul" } }; static void debug_textflags(uint32_t flags) { usint i; if (flags == 0) eprintf(" none"); else for (i = 0; i < sizeof(textflags)/sizeof(textflag_name); i++) { textflag_name *n = textflags + i; if ((flags & n->bit) != 0) eprintf(" %s", n->name); } } /************************************************* * Output a stave string * *************************************************/ static void debug_stavestring(b_textstr *t) { eprintf(" "); debug_string(t->string); debug_move(t->x, "r", "l"); debug_move(t->offset, "rc", "lc"); debug_move(t->y, "u", "d"); if (t->rotate != 0) eprintf("/rot%s", sff(t->rotate)); if (t->halfway != 0) eprintf("/h%s", sff(t->halfway)); if (t->size > 0) eprintf("/s%d", t->size + 1); if (t->htype != 0) eprintf(" htype=%d", t->htype); if (t->laylevel != 0) eprintf(" laylevel=%d", t->laylevel); if (t->laylen != 0) eprintf(" laylen=%d", t->laylen); eprintf(" flags ="); debug_textflags(t->flags); eprintf("\n"); } /************************************************* * Output stave bitmap * *************************************************/ static void debug_stavemap(const char *s, uint64_t bits) { eprintf(" %s =", s); if (bits == 0) eprintf(" none"); else if (bits == ~0ul) eprintf(" all"); else { usint start, first, last; for (start = 0;; start = last + 1) { if (!misc_get_range(bits, start, &first, &last)) break; eprintf(" %d", first); if (last != first) eprintf("-%d", last); } } eprintf("\n"); } /************************************************* * Output stave list * *************************************************/ static void debug_stavelist(const char *s, stavelist *sl) { eprintf(" %s =", s); if (sl == NULL) eprintf(" none"); else do { eprintf(" %d", sl->first); if (sl->last != sl->first) eprintf("-%d", sl->last); sl = sl->next; } while (sl != NULL); eprintf("\n"); } /************************************************* * Output time signature * *************************************************/ static void debug_time(const char *s, uint32_t ts, const char *t) { if (s != NULL) eprintf(" %s = ", s); eprintf("%d * ", ts >> 16); ts &= 0x0000ffffu; if (ts == time_common) eprintf("C"); else if (ts == time_cut) eprintf("A"); else eprintf("%d/%d", (ts >> 8) & 0xff, ts & 0xff); eprintf("%s", t); } /************************************************* * Output layout information * *************************************************/ static void debug_layout(uint16_t *p) { const char *sp = " "; eprintf(" layout ="); if (p == NULL) { eprintf(" none\n"); return; } for (;;) { switch (*p++) { case lv_barcount: eprintf("%s%d", sp, *p++); sp = ", "; break; case lv_repeatcount: eprintf(" %d(", *p++); sp = ""; break; case lv_repeatptr: if (*p++ == 0) { eprintf("\n"); return; } eprintf(")"); sp = " "; break; case lv_newpage: eprintf(";"); sp = " "; break; default: error(ERR47); /* Hard */ break; } } } /************************************************* * Output header information * *************************************************/ void debug_header(void) { usint i; sheetstr *sh; pkeystr *pk; ptimestr *pt; keytransstr *kt; trkeystr *tk; eprintf("\nGLOBAL VALUES\n"); for (i = 0; i < font_count; i++) eprintf(" font %d: %s\n", i, font_list[i].name); for (i = 0; i < font_xx; i++) eprintf(" %s = %d\n", font_IdStrings[i], font_table[i]); for (i = font_xx; i < font_tablen; i++) if (font_table[i] != 0) eprintf(" %s = %d\n", font_IdStrings[i], font_table[i]); for (i = 0; i < MAX_XKEYS; i++) { uint8_t *kp = &(keysigtable[key_X + i][0]); if (*kp == ks_end) continue; eprintf(" custom key X%d =", i+1); while (*kp != ks_end) { uint8_t k = *kp++; eprintf(" %s%d", acnames[k>>4], (k & 0x0f) - 1); } eprintf("\n"); } eprintf(" kerning = %s\n", main_kerning? "true" : "false"); for (kt = main_keytranspose; kt != NULL; kt = kt->next) { eprintf(" keytranspose (quarter tones) %s", sfk(kt->oldkey)); for (i = 0; i < 24; i++) { if (kt->newkeys[i] != KEY_UNSET) { int j = i; eprintf(" %d=%s/%d", j, sfk(kt->newkeys[i]), kt->letterchanges[i]); } } eprintf("\n"); } eprintf(" landscape = %s\n", main_landscape? "true" : "false"); eprintf(" magnification = %s\n", sff(main_magnification)); eprintf(" maxvertjustify = %s\n", sff(main_maxvertjustify)); eprintf(" midifornotesoff = %s\n", main_midifornotesoff? "true" : "false"); eprintf(" note spacing ="); for (i = 0; i < NOTETYPE_COUNT; i++) eprintf(" %s", sff(read_absnotespacing[i])); eprintf("\n"); eprintf(" page = %d %d\n", page_firstnumber, page_increment); eprintf(" pagelength = %s\n", sff(main_pagelength)); eprintf(" righttoleft = %s\n", main_righttoleft? "true" : "false"); eprintf(" sheetdepth = %s\n", sff(main_sheetdepth)); for (i = 0; i < sheets_count; i++) { sh = sheets_list + i; if (main_sheetsize == sh->sheetsize) break; } if (i < sheets_count) eprintf(" sheetsize = %s\n", sh->name); else eprintf(" sheetsize = unknown\n"); eprintf(" sheetwidth = %s\n", sff(main_sheetwidth)); eprintf(" transposedacc = %s\n", main_transposedaccforce? "force" : "noforce"); for (tk = main_transposedkeys; tk != NULL; tk = tk->next) { eprintf(" transposed key %s use ", sfk(tk->oldkey)); eprintf("%s\n", sfk(tk->newkey)); } DEBUG(D_header_glob) return; /* Just want globals */ /* Show header information for each movement */ for (i = 0; i < movement_count; i++) { usint j, k, spptr, spmax; int32_t spmost; uint32_t splist[2*(MAX_STAVE+1)]; int8_t lvlist[2*(MAX_STAVE+1)]; int8_t lvmost; uint8_t lvmax; BOOL found; const char *w; fontsizestr *f; zerocopystr *z; movtstr *m = movements[i]; eprintf("\nMOVEMENT %d\n", m->number); found = FALSE; k = 0; eprintf(" accadjusts ="); for (j = 0; j < NOTETYPE_COUNT; j++) { if (m->accadjusts[j] != 0) { while (k++ < j) eprintf(" 0.0"); eprintf(" %s", sff(m->accadjusts[j])); k = j + 1; found = TRUE; } } if (!found) eprintf(" none"); eprintf("\n"); eprintf(" accspacing ="); for (j = 0; j < ACCSPACE_COUNT; j++) eprintf(" %s", sff(m->accspacing[j])); eprintf("\n"); eprintf(" barlinesize = %s\n", sff(m->barlinesize)); eprintf(" barlinespace = "); if (m->barlinespace == FIXED_UNSET) eprintf("default\n"); else eprintf("%s\n", sff(m->barlinespace)); eprintf(" barlinestyle = %d\n", m->barlinestyle); eprintf(" barnumberlevel = %s\n", sff(m->barnumber_level)); eprintf(" barnumbers ="); if (m->barnumber_interval == 0) eprintf(" none"); else { debug_textflags(m->barnumber_textflags); if (m->barnumber_interval < 0) eprintf(" line"); else eprintf(" %d", m->barnumber_interval); } eprintf("\n"); eprintf(" baroffset = %d\n", m->baroffset); eprintf(" beamflaglength = %s\n", sff(m->beamflaglength)); eprintf(" beamthickness = %s\n", sff(m->beamthickness)); eprintf(" bottommargin = %s\n", sff(m->bottommargin)); debug_stavelist("bracelist", m->bracelist); eprintf(" bracestyle = %d\n", m->bracestyle); debug_stavelist("bracketlist", m->bracketlist); debug_stavemap("breakbarlines", m->breakbarlines); eprintf(" breveledgerextra = %s\n", sff(m->breveledgerextra)); eprintf(" caesurastyle = %d\n", m->caesurastyle); eprintf(" clefstyle = %d\n", m->clefstyle); /* Clef widths are a whole number of points, no fractions. */ eprintf(" clefwidths ="); for (j = 0; j < CLEF_COUNT; j++) eprintf(" %d", m->clefwidths[j]); eprintf("\n"); eprintf(" copyzero ="); for (z = m->zerocopy; z != NULL; z = z->next) eprintf(" %d/%s", z->stavenumber, sff(z->adjust)); eprintf("\n"); eprintf(" dotspacefactor = %s\n", sff(m->dotspacefactor)); eprintf(" endlinesluradjust = %s\n", sff(m->endlinesluradjust)); eprintf(" endlineslurstyle = %d\n", m->endlineslurstyle); eprintf(" endlinetieadjust = %s\n", sff(m->endlinetieadjust)); eprintf(" endlinetiestyle = %d\n", m->endlinetiestyle); eprintf(" extenderlevel = %s\n", sff(m->extenderlevel)); eprintf(" flags = 0x%08x\n", m->flags); f = m->fontsizes; if (i > 0 && f == movements[i-1]->fontsizes) eprintf(" fontsizes unchanged\n"); else { eprintf(" fontsizes\n"); debug_fontsize("barnumber", &(f->fontsize_barnumber)); debug_fontsize("cue", &(f->fontsize_cue)); debug_fontsize("cuegrace", &(f->fontsize_cuegrace)); debug_fontsize("fbass", &(f->fontsize_text[ff_offset_fbass])); debug_fontsize("footnotes", &(f->fontsize_footnote)); debug_fontsize("grace", &(f->fontsize_grace)); debug_fontsize("init", &(f->fontsize_text[ff_offset_init])); debug_fontsize("midclefs", &(f->fontsize_midclefs)); debug_fontsize("music", &(f->fontsize_music)); debug_fontsize("olay", &(f->fontsize_text[ff_offset_olay])); debug_fontsize("rehearse", &(f->fontsize_rehearse)); debug_fontsize("repno", &(f->fontsize_repno)); debug_fontsize("restct", &(f->fontsize_restct)); debug_fontsize("time", &(f->fontsize_text[ff_offset_ts])); debug_fontsize("trill", &(f->fontsize_trill)); debug_fontsize("triplet", &(f->fontsize_triplet)); debug_fontsize("ulay", &(f->fontsize_text[ff_offset_ulay])); debug_fontsize("vertacc", &(f->fontsize_vertacc)); for (j = 0; j < AllFontSizes; j++) { char buffer[24]; (void)sprintf(buffer, "text %d", j+1); debug_fontsize(buffer, &(f->fontsize_text[j])); } } debug_fonttype("fonttype_barnumber", m->fonttype_barnumber); debug_fonttype("fonttype_longrest", m->fonttype_longrest); debug_fonttype("fonttype_rehearse", m->fonttype_rehearse); debug_fonttype("fonttype_repeatbar", m->fonttype_repeatbar); debug_fonttype("fonttype_time", m->fonttype_time); debug_fonttype("fonttype_triplet", m->fonttype_triplet); debug_heading("footing", m->footing); eprintf(" footnotesep = %s\n", sff(m->footnotesep)); eprintf(" gracespacing = %s %s\n", sff(m->gracespacing[0]), sff(m->gracespacing[1])); eprintf(" gracestyle = %d\n", m->gracestyle); eprintf(" hairpinlinewidth = %s\n", sff(m->hairpinlinewidth)); eprintf(" hairpinwidth = %s\n", sff(m->hairpinwidth)); eprintf(" halfflatstyle = %d\n", m->halfflatstyle); eprintf(" halfsharpstyle = %d\n", m->halfsharpstyle); debug_heading("heading", m->heading); eprintf(" hyphenstring = "); debug_string(m->hyphenstring); eprintf("\n"); eprintf(" hyphenthreshold = %s\n", sff(m->hyphenthreshold)); j = 1; for (htypestr *h = main_htypes; h != NULL; h = h->next, j++) { eprintf(" hyphentype %d ", j); debug_string(h->string1); eprintf("/s%d", h->size1 + 1); if (h->string3 != NULL) { eprintf(" END="); debug_string(h->string3); debug_move(h->adjust, "u", "d"); } if (h->string2 != NULL) { eprintf(" NL="); debug_string(h->string2); eprintf("/s%d", h->size2 + 1); } eprintf("\n"); } debug_stavelist("joinlist", m->joinlist); debug_stavelist("joindottedlist", m->joindottedlist); eprintf(" justify ="); if (m->justify == just_all) eprintf(" all"); else { if ((m->justify & just_top) != 0) eprintf(" top"); if ((m->justify & just_bottom) != 0) eprintf(" bottom"); if ((m->justify & just_left) != 0) eprintf(" left"); if ((m->justify & just_right) != 0) eprintf(" right"); } eprintf("\n"); eprintf(" key = %s\n", sfk(m->key)); debug_heading("lastfooting", m->lastfooting); debug_layout(m->layout); eprintf(" ledgerstyle = %d\n", m->ledgerstyle); eprintf(" leftmargin = %s\n", (m->leftmargin < 0)? "unset" : sff(m->leftmargin)); eprintf(" linelength = %s\n", sff(m->linelength)); eprintf(" maxbeamslope = %s %s\n", sff(m->maxbeamslope[0]), sff(m->maxbeamslope[1])); /* Show only those MIDI channels that were set for this movement. */ for (j = 1, k = 0; j <= MIDI_MAXCHANNEL; j++, k++) { usint s, t; if (mac_notbit(m->midichanset, j)) continue; eprintf(" midichannel %d ", j); if (m->midivoice[k] >= 128) eprintf("\"\""); else eprintf("\"#%d\"", m->midivoice[k] + 1); eprintf("/%d", m->midichannelvolume[k]); t = 0; /* Not set for any stave */ for (s = 1; s <= MAX_STAVE; s++) { if (m->midichannel[s] != j) continue; for (t = s + 1; t <= MAX_STAVE; t++) { if (m->midichannel[t] != j) break; } eprintf(" %d", s); if (--t > s) eprintf("-%d", t); s = t; } if (t > 0 && m->midinote[t] != 0) eprintf(" \"#%d\"", m->midinote[t]); eprintf("\n"); } eprintf(" midistart ="); if (m->midistart == NULL) eprintf(" unset"); else { for (j = 1; j <= m->midistart[0]; j++) eprintf(" %d", m->midistart[j]); } eprintf("\n"); eprintf(" miditempo = %d", m->miditempo); if (m->miditempochanges != NULL) { uint32_t *p = m->miditempochanges; while (*p != UINT32_MAX) { eprintf(" %s/%d", sfb(p[0]), p[1]); p += 2; } } eprintf("\n"); w = " miditranspose ="; for (j = 0; j <= MAX_STAVE; j++) { if ((m->miditranspose)[j] != 0) { eprintf("%s %d/%d", w, j, m->miditranspose[j]); w = ""; } } if (w[0] == 0) eprintf("\n"); w = " midivolume ="; for (j = 0; j <= MAX_STAVE; j++) { if ((m->midistavevolume)[j] != 15) { eprintf("%s %d/%d", w, j, m->midistavevolume[j]); w = ""; } } if (w[0] == 0) eprintf("\n"); eprintf(" midkeyspacing = %s\n", sff(m->midkeyspacing)); eprintf(" midtimespacing = %s\n", sff(m->midtimespacing)); eprintf(" note scaling = %d/%d\n", m->notenum, m->noteden); eprintf(" note spacing ="); for (j = 0; j < NOTETYPE_COUNT; j++) eprintf(" %s", sff(m->note_spacing[j])); eprintf("\n"); eprintf(" overlaydepth = %s\n", sff(m->overlaydepth)); debug_heading("pagefooting", m->pagefooting); debug_heading("pageheading", m->pageheading); for (pk = main_printkey; pk != NULL; pk = pk->next) { if (i + 1 >= pk->movt_number) { eprintf(" printkey = %s %s ", sfk(pk->key), clef_names[pk->clef]); debug_string(pk->string); if (pk->cstring != NULL) { eprintf(" "); debug_string(pk->cstring); } eprintf("\n"); } } for (pt = main_printtime; pt != NULL; pt = pt->next) { if (i + 1 >= pt->movt_number) { debug_time("printtime", pt->time, " "); debug_string(pt->top); eprintf("/s%d ", pt->sizetop+1); debug_string(pt->bot); eprintf("/s%d\n", pt->sizebot+1); } } eprintf(" rehearsalstyle = %s\n", ((m->rehearsalstyle & text_boxed) != 0)? "boxed" : ((m->rehearsalstyle & text_ringed) != 0)? "ringed" : "plain"); eprintf(" repeatstyle = %d\n", m->repeatstyle); eprintf(" smallcapsize = %s\n", sff(m->smallcapsize)); debug_stavemap("select_staves", m->select_staves); eprintf(" shortenstems = %s\n", sff(m->shortenstems)); eprintf(" startbracketbar = %d\n", m->startbracketbar); eprintf(" startlinespacing ="); for (j = 0; j < 4; j++) eprintf(" %s", sff(m->startspace[j])); eprintf("\n"); found = FALSE; eprintf(" stavesizes (varied) ="); for (j = 0; j <= MAX_STAVE; j++) { if (m->stavesizes[j] != 1000) { eprintf(" %d/%s", j, sff(m->stavesizes[j])); found = TRUE; } } if (!found) eprintf(" none"); eprintf("\n"); /* Scan the stave spacing list and find which spacing is the most common. This can be output first, as for the stavespacing directive, followed by the exceptions. */ eprintf(" stavespacing ="); spptr = 0; spmost = 0; spmax = 0; for (j = 1; j <= MAX_STAVE; j++) { uint32_t space = m->stave_spacing[j]; for (k = 0; k < spptr; k += 2) { if (splist[k] == space) { splist[k+1] += 1; break; } } if (k >= spptr) { splist[k] = space; splist[k+1] = 1; spptr += 2; } if (splist[k+1] > spmax) { spmax = splist[k+1]; spmost = splist[k]; } } eprintf(" %s", sff(spmost)); for (j = 1; j <= MAX_STAVE; j++) { if (m->stave_spacing[j] == spmost) continue; eprintf(" %d/", j); if (m->stave_ensure[j] > 0) eprintf("%s/", sff(m->stave_ensure[j])); eprintf("%s", sff(m->stave_spacing[j])); } eprintf("\n"); eprintf(" stemlengths ="); for (j = 2; j < NOTETYPE_COUNT; j++) eprintf(" %s", sff(m->stemadjusts[j])); eprintf("\n"); eprintf(" stemswap = %s\n", stemswaptype[m->stemswaptype]); /* Scan the stemswaplevel list and find which is the most common. This can be output first, as for the directive, followed by the exceptions. We can't make this a common function with stavespacing because (a) the data types are different and (b) stavespacing has the ensure addition. */ eprintf(" stemswaplevel ="); spptr = 0; lvmost = 0; lvmax = 0; for (j = 1; j <= MAX_STAVE; j++) { int8_t level = m->stemswaplevel[j]; for (k = 0; k < spptr; k += 2) { if (lvlist[k] == level) { lvlist[k+1] += 1; break; } } if (k >= spptr) { lvlist[k] = level; lvlist[k+1] = 1; spptr += 2; } if (lvlist[k+1] > lvmax) { lvmax = lvlist[k+1]; lvmost = lvlist[k]; } } eprintf(" %d", lvmost); for (j = 1; j <= MAX_STAVE; j++) { if (m->stemswaplevel[j] == lvmost) continue; eprintf(" %d/%d", j, m->stemswaplevel[j]); } eprintf("\n"); debug_stavemap("suspend_staves", m->suspend_staves); eprintf(" systemgap = %s\n", sff(m->systemgap)); eprintf(" systemsepangle = %s\n", sff(m->systemsepangle)); eprintf(" systemseplength = %s\n", sff(m->systemseplength)); eprintf(" systemsepwidth = %s\n", sff(m->systemsepwidth)); eprintf(" systemsepposx = %s\n", sff(m->systemsepposx)); eprintf(" systemsepposy = %s\n", sff(m->systemsepposy)); debug_stavelist("thinbracketlist", m->thinbracketlist); eprintf(" topmargin = %s\n", sff(m->topmargin)); eprintf(" transpose = "); if (m->transpose == NO_TRANSPOSE) eprintf("none\n"); else eprintf("%d (quarter tones)\n", m->transpose); eprintf(" trillstring = "); debug_string(m->trillstring); eprintf("\n"); eprintf(" tripletlinewidth = %s\n", sff(m->tripletlinewidth)); debug_time("time", m->time, "\n"); debug_time("time_unscaled", m->time_unscaled, "\n"); eprintf(" underlaydepth = %s\n", sff(m->underlaydepth)); eprintf(" underlaystyle = %d\n", m->underlaystyle); } } /************************************************* * Output a stave name structure * *************************************************/ static void debug_stave_name(snamestr *sn, BOOL isextra) { snamestr *sn2; if (sn->text != NULL) { eprintf("%s", isextra? "/" : " "); debug_string(sn->text); if ((sn->flags & snf_hcentre) != 0) eprintf("/c"); if ((sn->flags & snf_rightjust) != 0) eprintf("/e"); if ((sn->flags & snf_vcentre) != 0) eprintf("/m"); if ((sn->flags & snf_vertical) != 0) eprintf("/v"); eprintf("/s%d", sn->size); if (sn->adjustx != 0) debug_move(sn->adjustx, "r", "l"); if (sn->adjusty != 0) debug_move(sn->adjusty, "u", "d"); if (sn->linecount != 1) eprintf(" (COUNT=%d)", sn->linecount); for (sn2 = sn->extra; sn2 != NULL; sn2 = sn2->next) debug_stave_name(sn2, TRUE); } if (sn->drawing != NULL) debug_draw(sn->drawing, sn->drawargs, " "); } /************************************************* * Output one bar's information * *************************************************/ static void debug_one_bar(movtstr *m, usint n, barstr *bar) { int i; int stl; bstr *b; b_accentmovestr *am; b_barlinestr *bs; b_barnumstr *bn; b_clefstr *clef; b_drawstr *dr; b_hairpinstr *hp; b_justifystr *jf; b_keystr *key; b_midichangestr *mcs; b_movestr *mv; b_nbarstr *nb; b_notestr *nt; b_nsstr *ns; b_ornamentstr *orn; b_pletstr *pl; b_sgstr *syg; b_slurgapstr *sg; b_slurstr *sl; b_slurmodstr *sm; b_spacestr *sp; b_ssstr *ss; b_tiestr *ti; b_timestr *time; b_tremolostr *tr; eprintf("BAR %d (%s)", n, sfb(m->barvector[n])); if (bar->repeatnumber != 0) eprintf(" [%d]", bar->repeatnumber); eprintf("\n"); for (b = (bstr *)(bar->next); b != NULL; b = b->next) { switch (b->type) { case b_all: eprintf(" [all]\n"); break; case b_barline: bs = (b_barlinestr *)b; eprintf(" barline type=%d style=%d\n", bs->bartype, bs->barstyle); break; case b_barnum: bn = (b_barnumstr *)b; eprintf(" [barnumber"); if (!bn->flag) eprintf(" off"); else { debug_move(bn->x, "r", "l"); debug_move(bn->y, "u", "d"); } eprintf("]\n"); break; case b_beamacc: eprintf(" [beamacc %d]\n", ((b_beamaccritstr *)b)->value); break; case b_beambreak: eprintf(" break beam %d\n", ((b_bytevaluestr *)b)->value); break; case b_beammove: eprintf(" [beammove %s]\n", sff(((b_intvaluestr *)b)->value)); break; case b_beamrit: eprintf(" [beamrit %d]\n", ((b_beamaccritstr *)b)->value); break; case b_beamslope: eprintf(" [beamslope %s]\n", sff(((b_intvaluestr *)b)->value)); break; case b_breakbarline: eprintf(" [breakbarline]\n"); break; case b_bowing: eprintf(" [bowing %s]\n", ((b_bowingstr *)b)->value? "above" : "below"); break; case b_caesura: eprintf(" //\n"); break; case b_clef: clef = (b_clefstr *)b; eprintf(" %s%s%s\n", (clef->assume)? "assume " : "", clef_names[clef->clef], (clef->suppress)? " (suppress)" : ""); break; case b_comma: eprintf(" [comma]\n"); break; case b_dotbar: eprintf(" :\n"); break; case b_dotright: eprintf(" dotright %s\n", sff(((b_dotrightstr *)b)->value)); break; case b_draw: dr = (b_drawstr *)b; debug_draw(dr->drawing, dr->drawargs, (dr->overflag)? " [over" : " ["); eprintf("]\n"); break; case b_accentmove: am = (b_accentmovestr *)b; eprintf(" accentmove %d x=%s y=%s flags=0x%02x\n", am->accent, sff(am->x), sff(am->y), am->bflags); break; case b_endline: eprintf(" [endline"); if (((b_bytevaluestr *)b)->value != 0) eprintf("/=%c", ((b_bytevaluestr *)b)->value); eprintf("]\n"); break; case b_endslur: eprintf(" [endslur"); if (((b_bytevaluestr *)b)->value != 0) eprintf("/=%c", ((b_bytevaluestr *)b)->value); eprintf("]\n"); break; case b_endplet: eprintf(" }\n"); break; case b_ens: eprintf(" [ns]\n"); break; case b_ensure: eprintf(" [ensure %s]\n", sff(((b_intvaluestr *)b)->value)); break; case b_footnote: debug_heading("footnote", (&((b_footnotestr *)b)->h)); break; case b_hairpin: hp = (b_hairpinstr *)b; eprintf(" %c", ((hp->flags & hp_cresc) == 0)? '>' : '<'); debug_move(hp->x, "r", "l"); debug_move(hp->y, "u", "d"); if (hp->halfway != 0) eprintf("/h%s", sff(hp->halfway)); debug_move(hp->offset, "rc", "lc"); if (hp->width != 0) eprintf("/w%s", sff(hp->width)); if (hp->su != 0) eprintf(" SU=%s", sff(hp->su)); eprintf(" flags=0x%04x\n", hp->flags); break; case b_justify: jf = (b_justifystr *)b; eprintf(" [justify %c", ((jf->value & just_add) == 0)? '-' : '+'); if ((jf->value & just_top) != 0) eprintf("top"); if ((jf->value & just_bottom) != 0) eprintf("bottom"); if ((jf->value & just_left) != 0) eprintf("left"); if ((jf->value & just_right) != 0) eprintf("right"); eprintf("]\n"); break; case b_key: key = (b_keystr *)b; eprintf(" [%skey %s", (key->assume)? "assume " : "", sfk(key->key)); if (!key->warn) eprintf(" nowarn"); eprintf("]\n"); break; case b_lrepeat: eprintf(" (:\n"); break; case b_midichange: mcs = (b_midichangestr *)b; eprintf(" midichange channel=%d voice=%d volume=%d note=%d transpose=%d\n", mcs->channel, mcs->voice, mcs->volume, mcs->note, mcs->transpose); break; case b_move: mv = (b_movestr *)b; eprintf(" [%smove %s", (mv->relative)? "r" : "", sff(mv->x)); if (mv->y != 0) eprintf(",%s", sff(mv->y)); eprintf("]\n"); break; case b_name: eprintf(" name %d\n", ((b_namestr *)b)->value); break; case b_nbar: nb = (b_nbarstr *)b; eprintf(" nbar %d", nb->n); if (nb->x != 0) eprintf(" x=%s", sff(nb->x)); if (nb->y != 0) eprintf(" y=%s", sff(nb->y)); if (nb->s != NULL) debug_string(nb->s); eprintf("\n"); break; case b_newline: eprintf(" [newline]\n"); break; case b_newpage: eprintf(" [newpage]\n"); break; case b_note: if ((((b_notestr *)b)->flags & nf_chord) != 0) eprintf(" (\n"); /* Fall through */ case b_chord: nt = (b_notestr *)b; eprintf(" %s", acnames[nt->acc]); if (nt->acc != ac_no && nt->accleft != (int32_t)(m->accspacing[nt->acc])) eprintf("<%s", sff(nt->accleft)); eprintf("%c%s", (nt->notetype < crotchet)? toupper(nt->char_orig) : nt->char_orig, noteflags[nt->notetype]); if ((nt->flags & nf_dot2) != 0) eprintf(".."); else if ((nt->flags & nf_dot) != 0) eprintf("."); if (nt->acc != ac_no && nt->acc_orig != nt->acc) eprintf(" orig=%s", acnames[nt->acc_orig]); if (nt->masq != MASQ_UNSET) eprintf(" masq=%d", nt->masq); if (nt->acflags != 0) eprintf(" acflags=0x%08x", nt->acflags); eprintf(" flags=0x%08x", nt->flags); if (nt->noteheadstyle != 0) eprintf(" nhstyle=0x%02x", nt->noteheadstyle); eprintf(" length=%d", nt->length); if (nt->yextra != 0) eprintf(" yextra=%s", sff(nt->yextra)); /* Skip this for rests */ if (nt->spitch != 0) { stl = ((int)(nt->spitch) - P_0L)/4; eprintf(" P_%d%c", stl/2, ((stl & 1) != 0)? 'S':'L'); eprintf(" %d%s", nt->abspitch/OCTAVE - 3, ((nt->acc >= ac_hf)? absnamesf:absnamess) + 4*(nt->abspitch % OCTAVE)); } eprintf("\n"); if (b->type == b_chord && b->next != NULL && b->next->type != b_chord) eprintf(" )\n"); break; case b_notes: eprintf(" [notes %s]\n", (((b_notesstr *)b)->value)? "on" : "off"); break; case b_ns: ns = (b_nsstr *)b; eprintf(" [ns"); for (i = 0; i < NOTETYPE_COUNT; i++) eprintf(" %s", sff(ns->ns[i])); eprintf("]\n"); break; case b_nsm: eprintf(" [ns *%s]\n", sff(((b_nsmstr *)b)->value)); break; case b_olevel: eprintf(" [olevel "); if (((b_uolevelstr *)b)->value == FIXED_UNSET) eprintf("*]\n"); else eprintf("%s]\n", sff(((b_uolevelstr *)b)->value)); break; case b_olhere: eprintf(" [olhere %s]\n", sff(((b_intvaluestr *)b)->value)); break; case b_ornament: orn = (b_ornamentstr *)b; eprintf(" ornament %d flags=0x%02x x=%s y=%s\n", orn->ornament, orn->bflags, sff(orn->x), sff(orn->y)); break; case b_overbeam: eprintf(" overbeam\n"); break; case b_page: eprintf(" [page %s%d]\n", ((b_pagestr *)b)->relative? "+" : "", ((b_pagestr *)b)->value); break; case b_pagebotmargin: eprintf(" [bottommargin %s]\n", sff(((b_intvaluestr *)b)->value)); break; case b_pagetopmargin: eprintf(" [topmargin %s]\n", sff(((b_intvaluestr *)b)->value)); break; case b_plet: pl = (b_pletstr *)b; eprintf(" {%d x=%d yl=%d yr=%d flags=0x%0x\n", pl->pletlen, pl->x, pl->yleft, pl->yright, pl->flags); break; case b_reset: if (((b_resetstr *)b)->moff == 0) eprintf(" [reset]\n"); else eprintf(" [backup %d]\n", ((b_resetstr *)b)->moff); break; case b_resume: eprintf(" [resume]\n"); break; case b_rrepeat: eprintf(" :)\n"); break; case b_sgabove: case b_sghere: case b_sgnext: syg = (b_sgstr *)b; eprintf(" [sg%s ", (b->type == b_sgabove)? "above" : (b->type == b_sghere)? "here" : "next"); if (syg->relative && syg->value >= 0) eprintf("+"); eprintf("%s]\n", sff(syg->value)); break; case b_slur: sl = (b_slurstr *)b; eprintf(" [%s%s", ((sl->flags & sflag_x) != 0)? "x" : "", ((sl->flags & sflag_l) == 0)? "slur" : "line"); if (sl->id != 0) eprintf("/=%c", sl->id); if (sl->ally != 0) debug_move(sl->ally, "u", "d"); debug_flags(sl->flags, "w,b,l,h,ol,or,i,e,x,abs,lay,ip,cx"); for (sm = sl->mods; sm!= NULL; sm = sm->next) { if (sm->sequence != 0) eprintf("/%d", sm->sequence); if (sm->lxoffset != 0) debug_move(sm->lxoffset, "lrc", "llc"); if (sm->lx != 0) debug_move(sm->lx, "lr", "ll"); if (sm->ly != 0) debug_move(sm->ly, "lu", "ld"); if (sm->rxoffset != 0) debug_move(sm->rxoffset, "rrc", "rlc"); if (sm->rx != 0) debug_move(sm->rx, "rr", "rl"); if (sm->ry != 0) debug_move(sm->ry, "ru", "rd"); if (sm->c != 0) debug_move(sm->c, "co", "ci"); if (sm->clx != 0) debug_move(sm->clx, "clr", "cll"); if (sm->cly != 0) debug_move(sm->cly, "clu", "cld"); if (sm->crx != 0) debug_move(sm->crx, "crr", "crl"); if (sm->cry != 0) debug_move(sm->cry, "cru", "crd"); } eprintf("]\n"); break; case b_slurgap: case b_linegap: sg = (b_slurgapstr *)b; eprintf(" [%sgap", (sg->type == b_slurgap)? "slur" : "line"); if (sg->id != 0) eprintf("/=%c", sg->id); eprintf("/w%s", sff(sg->width)); if (sg->hfraction >= 0) eprintf("/h%s", sff(sg->hfraction)); if (sg->xadjust != 0) debug_move(sg->xadjust, "r" , "l"); if (sg->drawing != NULL) debug_draw(sg->drawing, sg->drawargs, "/"); if (sg->gaptext != NULL) { eprintf("/"); debug_string(sg->gaptext); if (sg->textsize != 0) eprintf("/%d", sg->textsize); if ((sg->textflags & text_boxed) != 0) eprintf("/box"); if ((sg->textflags & text_ringed) != 0) eprintf("/ring"); } eprintf("]\n"); break; case b_space: sp = (b_spacestr *)b; eprintf(" [%sspace %s]\n", (sp->relative)? "r" : "", sff(sp->x)); break; case b_ssabove: case b_sshere: case b_ssnext: ss = (b_ssstr *)b; eprintf(" [ss%s ", (b->type == b_ssabove)? "above" : (b->type == b_sshere)? "here" : "next"); if (ss->relative && ss->value >= 0) eprintf("+"); eprintf("%s]\n", sff(ss->value)); break; case b_suspend: eprintf(" [suspend]\n"); break; case b_text: debug_stavestring((b_textstr *)b); break; case b_tick: eprintf(" [tick]\n"); break; case b_tie: ti = (b_tiestr *)b; eprintf(" tie flags=0x%02x above=%d below=%d\n", ti->flags, ti->abovecount, ti->belowcount); break; case b_time: time = (b_timestr *)b; eprintf(" [%stime ", (time->assume)? "assume " : ""); debug_time(NULL, time->time, ""); if (!time->warn) eprintf(" nowarn"); eprintf("]\n"); break; case b_tremolo: tr = (b_tremolostr *)b; eprintf(" [tremolo/x%d/j%d]\n", tr->count, tr->join); break; case b_tripsw: eprintf(" [triplets %s]\n", ((b_tripswstr *)b)->value? "on" : "off"); break; case b_ulevel: eprintf(" [ulevel "); if (((b_uolevelstr *)b)->value == FIXED_UNSET) eprintf("*]\n"); else eprintf("%s]\n", sff(((b_uolevelstr *)b)->value)); break; case b_ulhere: eprintf(" [ulhere %s]\n", sff(((b_intvaluestr *)b)->value)); break; case b_unbreakbarline: eprintf(" [unbreakbarline]\n"); break; case b_zerocopy: eprintf(" [copyzero %s]\n", sff(((b_intvaluestr *)b)->value)); break; default: eprintf("*** Unknown b_type: %d\n", b->type); break; } } } /************************************************* * Output bar information * *************************************************/ void debug_bar(void) { if (dbd_bar >= 0) { movtstr *m; if (dbd_movement > (int)movement_count) error(ERR163, "movement", dbd_movement); /* Hard */ m = movements[dbd_movement - 1]; st = m->stavetable[dbd_stave]; if (dbd_stave > MAX_STAVE || st == NULL) error(ERR163, "stave", dbd_stave); /* Hard */ if (dbd_bar >= m->barcount) error(ERR163, "absolute bar", dbd_bar); /* Hard */ eprintf("\nMOVEMENT %d STAVE %d ", dbd_movement, dbd_stave); debug_one_bar(m, dbd_bar, st->barindex[dbd_bar]); } else for (usint i = 0; i < movement_count; i++) { int j; movtstr *m = movements[i]; eprintf("\nMOVEMENT %d\n", i+1); for (j = 0; j <= m->laststave; j++) { int k; snamestr *sn; st = m->stavetable[j]; eprintf("\nSTAVE %d", j); if (st->omitempty) eprintf(" omitempty"); for (sn = st->stave_name; sn != NULL; sn = sn->next) debug_stave_name(sn, FALSE); eprintf("\n"); if (st->stavelines != 5) eprintf(" [stavelines %d]\n", st->stavelines); for (k = 0; k < st->barcount; k++) if (st->barindex[k]->next != NULL) break; if (k >= st->barcount) eprintf(" All bars are empty\n"); else for (k = 0; k < st->barcount; k++) { eprintf("\n"); debug_one_bar(m, k, st->barindex[k]); } } } } /************************************************* * Output memory usage * *************************************************/ void debug_memory_usage(void) { usint i; usint chunk_count; size_t available, independent_total; size_t total = 0; eprintf("\nMEMORY USAGE\n"); eprintf(" Read buffers: 3*%zd = %zd\n", main_readbuffer_size, 3 * main_readbuffer_size); total += 3 * main_readbuffer_size; for (i = 0; i < MAX_MACRODEPTH; i++) { if (main_argbuffer[i] == NULL) break; eprintf(" Macro arg buffer %d: %zd\n", i, main_argbuffer_size[i]); total += main_argbuffer_size[i]; } if (i == 0) eprintf(" Macro arg buffers: 0\n"); eprintf(" String buffer: %zd\n", read_stringbuffer_size); total += read_stringbuffer_size; eprintf(" Text queue: %zd", out_textqueue_size * sizeof(b_textstr *)); total += out_textqueue_size * sizeof(b_textstr *); eprintf(" Font list vector: %zd\n", font_list_size * sizeof(fontstr)); total += font_list_size * sizeof(fontstr); #if SUPPORT_XML if (xml_layout_list_size > 0) { eprintf(" MusicXML layout size: %zd\n", xml_layout_list_size); total += xml_layout_list_size; } #endif eprintf(" Movements vector: %zd\n", movements_size * sizeof(movtstr *)); total += movements_size * sizeof(movtstr *); /* Expandable items in movements */ for (i = 0; i < movement_count; i++) { int j; movtstr *m = movements[i]; if ((m->flags & mf_midistart) != 0) { size_t x = m->midistart[0] + MIDI_START_CHUNKSIZE; x -= x % MIDI_START_CHUNKSIZE; eprintf(" MIDI start bytes: %zd\n", x); total += x; } for (j = 0; j <= m->laststave; j++) { size_t x = m->stavetable[j]->barindex_size * sizeof(barstr *); if (x != 0) { eprintf(" Barvector %d/%d: %zd\n", i+1, j, x); total += x; } } } /* General non-expandable memory items */ chunk_count = mem_get_info(&available, &independent_total); eprintf(" Fixed memory: independent blocks = %zd\n", independent_total); total += independent_total; eprintf(" Fixed memory: %d chunk%s = %zd (%zd still available)\n", chunk_count, (chunk_count != 1)? "s" : "", chunk_count * (size_t)MEMORY_CHUNKSIZE, available); total += chunk_count * MEMORY_CHUNKSIZE; eprintf("Grand total: %zd\n", total); } /* End of debug.c */ pmw-5.22/src/out.c0000644000222100022210000022734314541067540012116 0ustar ph10ph10/************************************************* * PMW main output control functions * *************************************************/ /* Copyright Philip Hazel 2022 */ /* This file created: May 2021 */ /* This file last modified: December 2023 */ #include "pmw.h" /* Clef style can currently take values 0, 1, 2, or 3; the columns below correspond to this. */ static usint clef_chars[] = { mc_altoclef, mc_altoclef, mc_oldaltoclef, mc_oldaltoclef, mc_baritoneclef, mc_oldbaritoneclef, mc_baritoneclef, mc_oldbaritoneclef, mc_bassclef, mc_oldbassclef, mc_bassclef, mc_oldbassclef, mc_cbaritoneclef, mc_oldcbaritoneclef, mc_cbaritoneclef, mc_oldcbaritoneclef, mc_Cbassclef, mc_oldCbassclef, mc_Cbassclef, mc_oldCbassclef, mc_deepbassclef, mc_olddeepbassclef, mc_deepbassclef, mc_olddeepbassclef, mc_hclef, mc_hclef, mc_hclef, mc_hclef, mc_mezzoclef, mc_mezzoclef, mc_oldmezzoclef, mc_oldmezzoclef, 0, 0, 0, 0, mc_Sbassclef, mc_oldSbassclef, mc_Sbassclef, mc_oldSbassclef, mc_sopranoclef, mc_sopranoclef, mc_oldsopranoclef, mc_oldsopranoclef, mc_tenorclef, mc_tenorclef, mc_oldtenorclef, mc_oldtenorclef, mc_trebleclef, mc_trebleclef, mc_trebleclef, mc_trebleclef, mc_trebleDclef, mc_trebleDclef, mc_trebleDclef, mc_trebleDclef, mc_trebleTclef, mc_trebleTclef, mc_trebleTclef, mc_trebleTclef, mc_trebleTBclef, mc_trebleTBclef, mc_trebleTBclef, mc_trebleTBclef }; /* These are vertical adjustments, in points, for positioning the musical characters on the stave. */ static uint8_t clef_adjusts[] = { 8, /* Alto */ 12, /* Baritone */ 12, /* Bass */ 16, /* Cbaritone */ 12, /* Contrabass */ 16, /* Deepbass */ 0, /* Hclef */ 4, /* Mezzo */ 0, /* None */ 12, /* Soprabass */ 0, /* Soprano */ 12, /* Tenor */ 4, /* Treble */ 4, /* Trebledescant */ 4, /* Trebletenor */ 4 }; /* TrebletenorB */ /* Virtual accidental characters in the music font. This table sets the default half accidentals - for the alternate set there is a check in the code. */ static uint8_t ac_chars[] = { 0, mc_natural, mc_hsharp1, mc_sharp, mc_dsharp, mc_hflat1, mc_flat, mc_dflat }; /* Underlay extension string */ static uint32_t extension[] = { (font_rm << 24) | '_', 0 }; /************************************************ * Static variables * ************************************************/ static fontinststr out_fdata1 = { NULL, 0, 0 }; static fontinststr out_fdata2 = { NULL, 0, 0 }; static int32_t out_joinxposition; /************************************************* * Output vocal underlay extension * *************************************************/ /* Currently, an underline in the roman font is forced. There is a global flag that suppresses extenders. Arguments: x0 x coordinate of start of extension x1 x coordinate of end of extension y y coordinate of the extension fdata font size etc Returns: nothing */ void out_extension(int32_t x0, int32_t x1, int32_t y, fontinststr *fdata) { int32_t uwidth; int32_t length; int count, remain; uint32_t s[256]; if (!MFLAG(mf_underlayextenders)) return; length = x1 - x0; uwidth = string_width(extension, fdata, NULL); count = length/uwidth; remain = length - count*uwidth; if (count <= 0) { if (length > (uwidth*3)/4) { count = 1; remain = 0; } else return; } y = out_ystave - ((y + curmovt->extenderlevel) * out_stavemagn)/1000; x0 += out_stavemagn; for (int i = 0; i < count; i++) s[i] = extension[0]; s[count] = 0; ps_string(s, fdata, &x0, &y, TRUE, FALSE); /* Deal with a final part-line */ if (remain >= uwidth/5) { x1 -= uwidth; ps_string(extension, fdata, &x1, &y, TRUE, FALSE); } } /************************************************* * Output vocal underlay hyphens * *************************************************/ /* This is very heuristic. If the width is very small, output nothing. If less than the threshold, output a single, centred hyphen. Otherwise output hyphens spaced at 1/3 of the threshold, centred in the space. Take care not to have spaces that are too small at the ends. Ensure that a continuation hyphen at the start of a line is always printed, moving it left if necessary. Arguments: x0 x coordinate of start of extension x1 x coordinate of end of extension y y coordinate of the extension fdata font size etc contflag TRUE if continuing from the previous line Returns: nothing */ void out_hyphens(int32_t x0, int32_t x1, int32_t y, fontinststr *fdata, BOOL contflag) { uint32_t *hyphen = curmovt->hyphenstring; int32_t unit = curmovt->hyphenthreshold/3; int32_t hwidth = string_width(hyphen, fdata, NULL); int32_t width = x1 - x0; int32_t minwidth = 800 + (hwidth - string_width(default_hyphen, fdata, NULL)); TRACE("out_hyphens() start\n"); if (contflag) minwidth += 3200; if (width < minwidth) { if (!contflag) return; width = minwidth; x0 = x1 - width; } y = out_ystave - (y * out_stavemagn)/1000; /* Deal with the case when the width is less than the threshold */ if (width < curmovt->hyphenthreshold) { if (contflag) out_string(hyphen, fdata, x0, y, 0); if (!contflag || width > unit) { out_string(hyphen, fdata, (x0 + x1 - hwidth)/2, y, 0); } } /* Deal with widths greater than the threshold */ else { int32_t count = width/unit; /* count is the number of gaps */ if (width - count*unit < unit/2) count -= 2; else count--; if (width - count*unit > unit) unit += unit/(3*count); if (contflag) { if (width - count*unit > (3*unit)/2) count++; } else x0 += (width - count*unit - hwidth)/2; /* We have special code that generates a "widthshow" command to do the whole thing with one string. However, we can do this only if all characters are in the same font. For the moment, just do it if the hyphen string is a single character. */ if (PCHAR(hyphen[1]) == 0) { uint32_t s[256]; uint32_t *pp = s; uint32_t hchar = hyphen[0]; uint32_t space = PFTOP(hchar) | ' '; uint32_t swidth = font_charwidth(' ', 0, PFONT(hchar), fdata->size, NULL); fontinststr local_fdata = *fdata; while (count-- >= 0) { *pp++ = hchar; *pp++ = space; } *pp = 0; local_fdata.spacestretch = unit - hwidth - swidth; ps_string(s, &local_fdata, &x0, &y, TRUE, FALSE); } /* Otherwise we have to output each hyphen individually */ else for (int i = 0; i <= count; i++) { ps_string(hyphen, fdata, &x0, &y, TRUE, FALSE); x0 += unit; } } TRACE("out_hyphens() end\n"); } /************************************************* * Output repeating string * *************************************************/ /* This function fills up the space with repeat copies of the string from the htypestr. These are customized hyphen fillers, specified as extra strings for "underlay" or "overlay" that is in reality something else, such as a 8va marking. Arguments: x0 x coordinate of start of extension x1 x coordinate of end of extension y y coordinate of the extension contflag TRUE if continuing from the previous line eolflag TRUE if continuing on to the next line htype the number of the htypestr that has the relevant strings Returns: nothing */ void out_repeatstring(int32_t x0, int32_t x1, int32_t y, BOOL contflag, BOOL eolflag, int htype) { htypestr *h = main_htypes; int32_t width = x1 - x0; int32_t swidth; TRACE("out_repeatstring() start htype=%d\n", htype); while (--htype > 0 && h != NULL) h = h->next; if (h == NULL) error(ERR146); /* Hard error */ /* Deal with special string at continuation line start */ if (contflag && h->string2 != NULL) { int32_t xw; out_fdata2.size = mac_muldiv(curmovt->fontsizes->fontsize_text[h->size2].size, out_stavemagn, 1000); xw = string_width(h->string2, &out_fdata2, NULL); out_string(h->string2, &out_fdata2, x0, out_ystave - (y * out_stavemagn)/1000, 0); width -= xw; x0 += xw; } /* Set up size for main and terminating string. */ out_fdata1.size = mac_muldiv(curmovt->fontsizes->fontsize_text[h->size1].size, out_stavemagn, 1000); /* Adjust width for special terminating string (but not at eol) */ if (!eolflag && h->string3 != NULL) width -= string_width(h->string3, &out_fdata1, NULL); /* Handle main string */ swidth = string_width(h->string1, &out_fdata1, NULL); if (swidth > 0) { int scount; int count = width/swidth; /* Max needed for the width */ int slen = 0; for (uint32_t *p = h->string1; *p != 0; p++) slen++; scount = 255/slen; /* Max in 256 buffer, just to stop overflow */ y = out_ystave - ((y + h->adjust) * out_stavemagn)/1000; /* Loop for the count, outputting whenever the buffer fills up. */ while (count > 0) { uint32_t buff[256]; uint32_t *p = buff; int32_t nx0 = x0; for (int i = 0; i < scount; i++) { memcpy(p, h->string1, slen * sizeof(uint32_t)); p += slen; nx0 += swidth; if (--count <= 0) break; } *p = 0; out_string(buff, &out_fdata1, x0, y, 0); x0 = nx0; } } /* Output special final string, but not at end of line */ if (!eolflag && h->string3 != NULL) out_string(h->string3, &out_fdata1, x0, y, 0); TRACE("out_repeatstring() end\n"); } /************************************************* * Handle a text item * *************************************************/ /* This function is called after a note has been set up for output, so the max & min pitches etc. are known. It must be called before out_moff is reset. It is also called for text at the end of a bar, in which case "atbar" is true. Arguments: p the text item atbar TRUE if at end of a bar Returns: nothing */ void out_text(b_textstr *p, BOOL atbar) { fontinststr local_fdata, *fdata; uint16_t flags = p->flags; BOOL above = (flags & text_above) != 0; BOOL endalign = (flags & text_endalign) != 0; BOOL rehearse = (flags & text_rehearse) != 0; int32_t stringwidth; int32_t unscaled_fontsize; int32_t six = 6*out_stavemagn; int32_t x = n_x - out_Xadjustment; int32_t y = above? 20000 : -10000; uint32_t *s = p->string; uint32_t ss[256]; /* For building continuation strings */ TRACE("out_text()%s\n", ((flags & text_ul) != 0)? " underlay" :""); /* Make a local copy of the relevant font data, and keep a copy of the unscaled size before scaling the font. */ local_fdata = rehearse? curmovt->fontsizes->fontsize_rehearse : curmovt->fontsizes->fontsize_text[p->size]; unscaled_fontsize = local_fdata.size; local_fdata.size = mac_muldiv(local_fdata.size, out_stavemagn, 1000); /* Point working fdata at the local copy - this will change if there's rotation. */ fdata = &local_fdata; /* Find the string width before any rotation (used for centring and right- aligning). */ stringwidth = string_width(s, fdata, NULL); /* Handle special positioning. If the "halfway" value is set, adjust the x coordinate if there is a note that follows in the bar. Otherwise, if a note-related offset is set, adjust the x coordinate by looking for the relevant musical offset. */ if (p->halfway != 0) { if (out_moff < out_poslast->moff) x += (endalign? 0 : ((flags & text_centre) != 0)? six/2 : six) + mac_muldiv(out_barx + out_findXoffset(out_moff + n_length) - n_x - six, p->halfway, 1000); } /* The offset value units are crotchets. */ else if (p->offset != 0) x = out_barx + out_findAoffset(out_moff + mac_muldiv(len_crotchet, p->offset, 1000)); /* Handle rotation, but not for underlay or overlay */ if ((flags & text_ul) == 0 && p->rotate != 0) fdata = font_rotate(fdata, p->rotate); /* ======================= Underlay and Overlay ======================= */ /* Underlay and overlay text is centred. If it ends in '=' the position is remembered for starting the extender; if it ends in '-' the position is remembered for starting the row of hyphens. Note that an underlay/overlay string is represented as a pointer and a count, not as a PMW string, because the pointer may point into the longer, original input string. If the string consists solely of '=' and an extender is outstanding, an extender is drawn to the current position and the start extender position is updated. If we are at the start of a line (indicated by a zero xstart value), draw the line at the current level, not the saved one. Note that # characters in underlay and overlay strings must be converted to spaces. */ if ((flags & text_ul) != 0) { int i; uint32_t *pp, *qq, *cc; uolaystr **uu = &bar_cont->uolay; uolaystr *u = *uu; BOOL overlay = (flags & text_above) != 0; /* Find pending extension or hyphen data at the correct (verse) level. */ while (u != NULL && (overlay != u->above || u->level != p->laylevel)) { uu = &u->next; u = *uu; } /* Compute vertical level for this syllable */ y = (!overlay)? out_sysblock->ulevel[curstave] - p->laylevel * curmovt->underlaydepth : out_sysblock->olevel[curstave] + p->laylevel * curmovt->overlaydepth; /* Deal with an extension line. There should always be an extension block, but we check, just in case. */ if (PCHAR(s[0]) == '=' && p->laylen == 1) { if (u != NULL && u->type == '=') { int32_t xx, yy; if (u->x == 0) { xx = out_sysblock->firstnoteposition + out_sysblock->xjustify - 4000; yy = y; } else { xx = u->x; yy = u->y; } out_extension(xx, x + 5*out_stavemagn, yy, fdata); if (x > u->x) u->x = x; /* Set up for next part */ u->y = yy; } return; } /* Not an extension line - there is text to be output. Copy it into a working string, turning # characters into spaces, and stopping at the character '^', which indicates the end of the text to be centred, or the start of it, if there are two '^' characters in the string. In the latter case, find the length of the left hang, set the start of the centering bit, and read to the next '^'. */ pp = s; cc = qq = ss; i = 0; for (int j = 0; j < 2; j++) { int k; uint32_t c; /* Search for next '^' in string while copying into a temporary buffer and turning # into space. */ for (; i < p->laylen && (c = PCHAR(*pp)) != '^'; i++) *qq++ = (c == '#')? (' ' | PFTOP(*pp++)) : *pp++; *qq = 0; /* If hit end of string or the second '^', break */ if (i >= p->laylen || j == 1) break; /* See if there's another '^' in the string; if not, break */ for (k = i+1; k < p->laylen; k++) if (PCHAR(s[k]) == '^') break; if (k >= p->laylen) break; /* Left shift by the left hand width, adjust the start of the centred string, and continue on to the second '^'. */ x -= string_width(ss, fdata, NULL); cc = qq; pp++; i++; } /* There are two underlay styles. In style 0, all syllables are centred, with ^ indicating the end of the centred text. In style 1, syllables that extend over more than one note are left-justified, unless they contain ^, which indicates centring. At present a single style applies to both underlay and overlay. */ if (curmovt->underlaystyle == 0 || (PCHAR(*pp) != '=' && (PCHAR(*pp) != '-' || PCHAR(pp[1]) != '='))) { int32_t xorig = x; x -= string_width(cc, fdata, NULL)/2; /* We have calculated a centring position for the string based on the normal position, which is the left-hand edge of the note. If in fact there has been no change to the position, (i.e. the centred part of the string has zero width), leave the position as it is, for left-alignment. If there has been a change, however, we must add 3 points to make the centring relative to the middle of the notehead. However, if this is a grace note in default format, always left-align. */ if (x != xorig && (n_length != 0 || curmovt->gracestyle != 0)) x += 3*out_stavemagn; /* Copy the rest of the string if stopped at '^'; else leave pp pointing at the following character. */ if (PCHAR(*pp) == '^') { pp++; for (i++; i < p->laylen; i++) *qq++ = (PCHAR(*pp) == '#')? (' ' | PFTOP(*pp++)) : *pp++; *qq = 0; } } /* Deal with printing a row of hyphens up to this syllable. If continuing at the start of a new line, use the current level rather than the saved level. Remember to take note of any leading spaces at the start of the current text. */ if (u != NULL && u->type == '-') { BOOL contflag; int32_t x1 = x; int32_t xx, yy; if (PCHAR(ss[0]) == ' ') { int k; uint32_t spaces[80]; for (k = 0; PCHAR(ss[k]) == ' '; k++) spaces[k] = ss[k]; spaces[k] = 0; x1 += string_width(spaces, fdata, NULL); } if (u->x == 0) { xx = out_sysblock->firstnoteposition + out_sysblock->xjustify - 4000; yy = y + p-> y; contflag = TRUE; } else { xx = u->x; yy = u->y; contflag = FALSE; } if (u->htype == 0) out_hyphens(xx, x1 + p->x, yy, fdata, contflag); else out_repeatstring(xx, x1 + p->x, yy, contflag, FALSE, u->htype); } /* Free up the hyphen or extender block. Extender blocks live till the next non "=" syllable, but are not drawn that far. */ if (u != NULL) { *uu = u->next; mem_free_cached((void **)&main_freeuolayblocks, u); } /* Set up a new hyphen or extender block if required. We need to find the end of the current syllable, excluding any trailing spaces. There is no harm in just removing the trailing spaces now - if they are not printed, it won't be noticed! */ if (PCHAR(*pp) == '=' || PCHAR(*pp) == '-') { u = mem_get_cached((void **)&main_freeuolayblocks, sizeof(uolaystr)); u->next = bar_cont->uolay; bar_cont->uolay = u; while (qq > ss && PCHAR(qq[-1]) == ' ') qq--; /* Find first trailing space */ *qq = 0; /* Terminate the string there */ /* Set up the data values */ u->x = x + p->x + string_width(ss, fdata, NULL); u->y = y + p->y; u->type = *pp; u->level = p->laylevel; u->htype = p->htype; u->above = overlay; } /* The string to be printed has been built in ss */ s = ss; } /* ======================= General text ======================= */ /* Deal with non-underlay, non-followon text. Adjust the x position if end or bar alignment is required, and adjust level according to the pitch of the just printed note/chord, if any, for the first text for any given note. Otherwise, the position is above or below the previous. Non-underlay text can be rotated; this was handled above, but we retained the string width before rotating the font so that centring and end-alignment can be done first. */ else if ((flags & text_followon) == 0) { BOOL baralign = (flags & text_baralign) != 0; BOOL barcentre = (flags & text_barcentre) != 0; BOOL timealign = (flags & text_timealign) != 0; /* Align with start of bar */ if (baralign) x = out_startlinebar? (out_sysblock->startxposition + out_sysblock->xjustify) : out_lastbarlinex; /* Centre in the bar */ else if (barcentre) x = (out_lastbarlinex + out_barlinex - stringwidth)/2; /* Time signature alignment. If not found, use the first musical event in the bar. */ else if (timealign) { if (out_startlinebar && out_sysblock->showtimes != 0) x = out_sysblock->timexposition + out_sysblock->xjustify; /* In mid-line, or if no stave is printing a time signature, search for an appropriate position, defaulting to the first thing in the bar that can follow a time signature. There must be something! */ else { for (posstr *pt = out_postable; pt < out_poslast; pt++) { if (pt->moff >= posx_timefirst) { x = out_barx + pt->xoff; break; } } } } /* Handle /e and /c which will never be set with barcentre. Note that stringwidth is the horizontal width, ignoring any font rotation. This means that rotation occurs after the text is positioned. */ if (endalign) x += ((atbar || baralign || timealign)? 1000 : six) - stringwidth; else if ((flags & text_centre) != 0) x += ((atbar || baralign || timealign)? 500 : six/2) - stringwidth/2; /* At the bar end, we adjust as for the last note or rest if end-aligned, because usually such text sticks back as far as the last note. Don't adjust for the next note when printing a rehearsal mark at the left of the stave. */ if (above) /* text above */ { if (out_textnextabove != 0) y = out_textnextabove; else if ((!atbar || endalign) && (!rehearse || !MFLAG(mf_rehearsallsleft))) { int32_t pt = misc_ybound(FALSE, n_nexttie, TRUE, TRUE); /* ties going out */ int32_t ppt = misc_ybound(FALSE, n_prevtie, TRUE, TRUE); /* ties coming in */ if (ppt > pt) pt = ppt; if (pt + 2000 > y) y = pt + 2000; } /* Deal with above at overlay level */ if ((flags & text_atulevel) != 0) y = out_sysblock->olevel[curstave]; /* Deal with text at absolute position above the stave */ else if ((flags & text_absolute) != 0) y = 16000; /* Save for another immediately following text. */ out_textnextabove = y + p->y + unscaled_fontsize; } else /* text below */ { if (out_textnextbelow != 0) y = out_textnextbelow; else if (!atbar || endalign) { int32_t pb = misc_ybound(TRUE, n_nexttie, TRUE, TRUE); int32_t ppb = misc_ybound(TRUE, n_prevtie, TRUE, TRUE); if (ppb < pb) pb = ppb; if (pb - fdata->size + 1000 < y) y = pb - fdata->size + 1000; } /* Deal with "middle" text */ if ((flags & text_middle) != 0 && curstave < out_laststave) { int32_t my; int32_t gap = out_sysblock->stavespacing[curstave]; int stt = curstave; while (gap == 0 && ++stt < out_laststave) { if (mac_isbit(out_sysblock->notsuspend, stt)) gap = out_sysblock->stavespacing[stt]; } my = - (gap/2 - 6000); if (my < y) y = my; } /* Deal with below at underlay level */ else if ((flags & text_atulevel) != 0) y = out_sysblock->ulevel[curstave]; /* Deal with text at absolute position below the stave */ else if ((flags & text_absolute) != 0) y = 0; /* Save value for an immediately following text. */ out_textnextbelow = y + p->y - unscaled_fontsize; } } /* ======================= Follow-on text ======================= */ /* This outputs at the ending point of the previous text string, which has already been through the stave magnification, though any adjustment must be so scaled. */ else { out_string(s, fdata, out_string_endx + p->x, out_string_endy - (p->y * out_stavemagn)/1000, 0); s = NULL; /* Stops normal output */ } /* ======================= Generate output ======================= */ /* Parameters are now set up -- omit empty strings (to keep the PostScript smaller). */ if (s != NULL && *s != 0) { /* Deal with rehearsal letters */ if (rehearse) { usint style = flags; // usint style = curmovt->rehearsalstyle; int32_t yextra = ((style & text_boxed) != 0)? 2000 : ((style & text_ringed) != 0)? 4000 : 0; /* At the start of a bar, unless an offset is provided, if we are at the start of a line, align with the very start if rehearsallsleft is set or else with the first note. If not the start of a line, align with the previous bar line. Relative p->x is then added. */ if (out_moff == 0 && p->offset == 0) { if (out_startlinebar) { if (MFLAG(mf_rehearsallsleft)) { x = out_sysblock->startxposition + out_sysblock->xjustify; switch (bar_cont->clef) { case clef_trebledescant: x += 15000; /* Fall through */ case clef_trebletenor: case clef_trebletenorB: case clef_treble: yextra += 3000; if (style == text_boxed) yextra += 1000; break; case clef_soprabass: x += 9000; yextra += 1000; break; default: break; } } else x = out_sysblock->firstnoteposition + out_sysblock->xjustify; } else x = out_lastbarlinex; } out_string(s, fdata, x + p->x, out_ystave - ((y + yextra + p->y)*out_stavemagn)/1000, style); } /* Deal with normal text */ else { if ((flags & (text_boxed | text_ringed)) != 0) y += (above? 2 : (-2))*out_stavemagn; out_string(s, fdata, x + p->x, out_ystave - ((y + p->y)*out_stavemagn)/1000, flags); } } TRACE("out_text() end\n"); } /************************************************* * Draw an nth time marking * *************************************************/ /* The yield is the unmagnified y level, which is set as a minimum for a subsequent marking. We don't free the data here, as sometimes nothing is drawn (e.g. when bar lines descend), so the freeing happens elsewhere. Arguments: rightjog TRUE if a right jog is required x1 the x coordinate of the end of the mark Returns: the y level */ int32_t out_drawnbar(BOOL rightjog, int32_t x1) { int32_t x[4], y[4]; int n = 0; nbarstr *nb = bar_cont->nbar; b_nbarstr *b = nb->nbar; int32_t yield; int32_t x0 = nb->x; int32_t yy = (nb->maxy > 18000)? nb->maxy + 11000 : 29000; /* Minimum y keeps it aligned with previous if this is not the first */ if (yy < nb->miny) yy = nb->miny; /* Add in manual adjustment and scale to stave */ yield = yy + b->y; yy = (yield * out_stavemagn)/1000; /* Sort out the left hand end at the start of a system for a continued line. */ if (x0 == 0) x0 = out_sysblock->firstnoteposition - 2000 + out_sysblock->xjustify; /* Start of a new iteration; set up for a jog and output the numbers and/or texts. */ else { int32_t xt, yt; uint32_t *comma = NULL; uint32_t commaspace[3]; x0 += 1500 + b->x; x[n] = x0; y[n++] = yy - 10*out_stavemagn; xt = x0 + 4000; yt = out_ystave - yy + 9*out_stavemagn; out_fdata1.size = mac_muldiv(curmovt->fontsizes->fontsize_repno.size, out_stavemagn, 1000); for (;;) { uint32_t commafont; b = nb->nbar; if (comma != NULL) ps_string(comma, &out_fdata1, &xt, &yt, TRUE, TRUE); if (b->s != NULL) { ps_string(b->s, &out_fdata1, &xt, &yt, TRUE, TRUE); commafont = PFTOP(b->s[0]); } else { uint32_t *pmws; uschar buff[24]; (void)sprintf(CS buff, "%d", b->n); pmws = string_pmw(buff, curmovt->fonttype_repeatbar); ps_string(pmws, &out_fdata1, &xt, &yt, TRUE, TRUE); commafont = PFTOP(pmws[0]); } nb = nb->next; if (nb == NULL) break; if (comma == NULL) comma = commaspace; comma[0] = commafont | ','; comma[1] = commafont | ' '; comma[2] = 0; } } /* Draw the lines and return the basic level. */ x[n] = x0; y[n++] = yy; x[n] = x1; y[n++] = yy; if (rightjog) { x[n] = x1; y[n++] = yy - 10*out_stavemagn; } ps_lines(x, y, n, 400); return yield; } /************************************************* * Output warning bar * *************************************************/ /* We have to take care that multiple items on different sized staves line up. This is somewhat messy, but it's easier to isolate the whole thing here in one function than to spread it about with zillions of conditionals in the normal setting code. Arguments: none Returns: nothing */ static void warnbar(void) { BOOL done = FALSE; int32_t x = out_barx; /* Loop for each column of signatures. Each time round the loop we scan the bar stave by stave for key and time signatures that precede the first note. In the first iteration we output the first signature that is found; in the second iteration it's the second signature that is found, and so on. Whenever we process a signature we end the scan on that stave. The loop stops after an iteration that outputs nothing. */ for (int count = 0; !done; count++) { int32_t maxwidth = 0; int32_t ystave = out_yposition; done = TRUE; /* Not output anything */ /* Scan the staves, increment y position each time. */ for (int stave = 1; stave <= out_laststave; stave++) { int thiscount; if (mac_notbit2(curmovt->select_staves, out_sysblock->notsuspend, stave)) continue; /* Ignore if not selected or if suspended. */ /* Scan for time and/or key signatures, stopping at the first note. */ thiscount = count; for (bstr *p = (bstr *)((curmovt->stavetable[stave])->barindex[curbarnumber]); p != NULL; p = p->next) { if (p->type == b_note) break; if (p->type == b_time) { b_timestr *t = (b_timestr *)p; if (t->warn && thiscount-- <= 0) { int32_t xx = x; int32_t spacing = (count == 0)? curmovt->midtimespacing : curmovt->startspace[2]; int32_t width = spacing + mac_muldiv(curmovt->stavesizes[stave], misc_timewidth(t->time) + 1000, 1000); if (width > maxwidth) maxwidth = width; if (count == 0) xx -= 2000; out_writetime(xx + spacing, ystave, t->time); done = FALSE; break; } } /* If the key signature has zero width (C major, A minor, or a custom empty signature), ignore it completely. This occurs only when there has been a change from some other key, and it follows the cancellation signature. Leaving it in messes up the spacing for any subsequent time signature. */ else if (p->type == b_key) { b_keystr *k = (b_keystr *)p; if (misc_keywidth(k->key, wk_cont[stave].clef) != 0 && k->warn && thiscount-- <= 0) { int32_t xx = x; int32_t spacing = curmovt->midkeyspacing; int32_t width = spacing + mac_muldiv(curmovt->stavesizes[stave], misc_keywidth(k->key, wk_cont[stave].clef) + 1000, 1000); if (width > maxwidth) maxwidth = width; /* Output a double bar line if required. If there is a following unsuspended stave, extend the barline down unless this stave has zero spacing or barlines are broken for this stave or any suspended staves we skip over while searching to see if any staves follow. */ if (MFLAG(mf_keydoublebar) && !out_lastbarwide) { BOOL extend = FALSE; int32_t ybarend = ystave; if (mac_notbit(curmovt->breakbarlines, stave) && out_sysblock->stavespacing[stave] > 0) { for (int i = stave + 1; i <= out_laststave; i++) { if (mac_notbit(out_sysblock->notsuspend, i)) { if (mac_isbit(curmovt->breakbarlines, i)) break; } else { stavestr *sss = curmovt->stavetable[i]; if (!sss->omitempty || !mac_emptybar(sss->barindex[curbarnumber])) extend = TRUE; break; } } } if (extend) ybarend += out_sysblock->stavespacing[stave]; ps_barline(out_lastbarlinex, ystave, ybarend, bar_double, curmovt->stavesizes[stave]); } else xx -= 1000; /* No double bar - move left a bit. */ out_writekey(xx + spacing, ystave, wk_cont[stave].clef, k->key); done = FALSE; break; } } } /* End of bar scan loop */ ystave += out_sysblock->stavespacing[stave]; } /* End of stave scan loop */ /* Add in the widest signature in this column */ x += maxwidth; } /* End of column loop */ /* Set a "last bar line" value as it is used for the stave length. */ out_lastbarlinex = (out_sysblock->flags & sysblock_stretch)? curmovt->linelength : x + 2000; } /************************************************ * Output a stave joining sign * ************************************************/ /* This function is used for outputting lines, brackets, or braces at the start of a system. It returns a bit map of the staves it referenced. For braces and thin brackets, prev is the bit map of the (thick) bracketed staves. */ /* Local subroutine to determine if a stave is being printed. Arguments: stave stave number bar bar number Returns: TRUE if the bar is to be printed */ static BOOL is_printing(int stave, int bar) { stavestr *ss = curmovt->stavetable[stave]; return mac_isbit(out_sysblock->notsuspend, stave) && (!ss->omitempty || !mac_emptybar(ss->barindex[bar])); } /* The actual stave-joining function. Arguments: list pointer to chain of stave selections depthvector vector of stave depths prev bitvector of previous thick bracket for thin bracket and brace; 0 for other types (not used) which type of join sign, e.g. join_brace bartype barline type when which == join_barline bar number of the first bar in the system Returns: bit map of referenced staves */ static uint64_t dojoinsign(stavelist *list, int32_t *depthvector, uint64_t prev, int which, int bartype, int bar) { uint64_t yield = 0; for (; list != NULL; list = list->next) { stavestr *ss; int32_t xx; int8_t pb1 = list->first; int8_t pb2 = list->last; if (pb1 > curmovt->laststave) continue; if (pb2 > curmovt->laststave) pb2 = curmovt->laststave; while (pb1 < out_laststave && pb1 < pb2 && !is_printing(pb1, bar)) pb1++; while (pb2 > pb1 && !is_printing(pb2, bar)) pb2--; if (!is_printing(pb1, bar) && !is_printing(pb2, bar)) continue; /* Take magnification from the top stave (this is default in the case of barline join). */ out_stavemagn = curmovt->stavesizes[pb1]; ss = curmovt->stavetable[pb1]; xx = out_stavemagn * ((ss->stavelines == 6)? 4 : (ss->stavelines == 4)? -4 : 0); switch(which) { case join_thinbracket: case join_brace: /* Should never be printed for one stave; there is some old code that gets a brace positioned right if it ever is, but at present that code is never triggered. */ if (depthvector[pb1] != depthvector[pb2]) { BOOL overlap = FALSE; for (int i = pb1; i <= pb2; i++) if (mac_isbit(prev, i)) { overlap = TRUE; break; } if (which == join_brace) { int32_t adjust = (depthvector[pb1] == depthvector[pb2])? 7000 : 8500; if (overlap) adjust += 1500; ps_brace(out_joinxposition - adjust, out_yposition + depthvector[pb1] - xx, out_yposition + depthvector[pb2], out_stavemagn); } else /* thin bracket */ { int32_t x[4], y[4]; out_ystave = out_yposition; x[0] = x[3] = out_joinxposition; x[1] = x[2] = x[0] - (overlap? 2500:1000) - 3000; y[0] = y[1] = - depthvector[pb1] + 16*out_stavemagn + xx; y[2] = y[3] = - depthvector[pb2]; ps_lines(x, y, 4, 400); } } break; case join_bracket: ps_bracket(out_joinxposition-3500, out_yposition + depthvector[pb1] - xx, out_yposition + depthvector[pb2], out_stavemagn); break; case join_barline: ps_barline(out_joinxposition, out_yposition + depthvector[pb1] - xx, out_yposition + depthvector[pb2], bartype, (curmovt->barlinesize > 0)? curmovt->barlinesize : out_stavemagn); break; } for (int i = pb1; i <= pb2; i++) mac_setbit(yield, i); } return yield; } /************************************************ * Output a clef * ************************************************/ /* The clef characters all print a little to the right of the given position. The reason is historical. It does not matter at all, except when staves of different sizes are printed - then the different size causes an uneven spacing at the start of a line. So attempt to correct for this. We must also adjust the vertical position for clefs that are not of full size, so that they appear at the correct position on the stave. Arguments: x x-position y y-position clef which clef size size midbar TRUE if a mid-bar clef Returns: nothing */ void out_writeclef(int32_t x, int32_t y, int clef, int32_t size, BOOL midbar) { switch(clef) { case clef_none: return; case clef_cbaritone: case clef_tenor: case clef_alto: case clef_soprano: case clef_mezzo: x += (2000 * (1000 - out_stavemagn))/1000; break; case clef_baritone: case clef_deepbass: case clef_bass: case clef_contrabass: case clef_soprabass: x -= ((midbar? 15:5)*out_stavemagn)/10; /* move left 0.5 pt or 1.5 pt in mid bar */ x += (750 * (1000 - out_stavemagn))/1000; break; case clef_hclef: break; case clef_treble: case clef_trebletenor: case clef_trebletenorB: case clef_trebledescant: x += (700 * (1000 - out_stavemagn))/1000; break; } ps_muschar(x, y - mac_muldiv(10000 - size, clef_adjusts[clef] * out_stavemagn, 10000), clef_chars[clef * 4 + curmovt->clefstyle], (size * out_stavemagn)/1000); } /************************************************ * Output a key * ************************************************/ /* This takes note of any "printkey" settings. The key_reset bit is set when a naturalizing key is required. Arguments: x x-position y y-position clef the current clef key the key signature Returns: nothing */ void out_writekey(int32_t x, int32_t y, uint32_t clef, uint32_t key) { uint32_t key63 = key & 63; BOOL use_naturals = (key & key_reset) != 0; pkeystr *pk; for (pk = main_printkey; pk != NULL; pk = pk->next) { if (key63 == pk->key && clef == pk->clef && pk->movt_number <= curmovt->number) break; } /* There is a special string for this key. */ if (pk != NULL) { out_fdata1.size = 10 * out_stavemagn; out_string((key > 63)? pk->cstring : pk->string, &out_fdata1, x, y, 0); } /* Get the key data from the table. */ else { uint8_t *kca = keyclefadjusts + clef * 3; /* Entry in ajusts table */ uint8_t adjust = kca[0]; /* Clef adjustment */ uint8_t slimit = kca[1]; /* Lower limit for sharp */ uint8_t flimit = kca[2]; /* Lower limit for flat */ /* Each item in the 8-bit key signature table consists of an accidental in the top 4 bits and a position on a 5-line stave in the lower 4. The positions run from 0 (below the bottom line) to 10 (above the top line). */ for (uint8_t *k = keysigtable[key63]; *k != ks_end; k++) { uint32_t ch; int32_t offset = (*k & 0x0fu) - adjust; uint8_t ac = *k >> 4; /* Raise by an octave if too low */ if (ac <= ac_ds) /* Sharps or naturals */ { if (offset < slimit) offset += 7; } else /* Flats */ { if (offset < flimit) offset += 7; } /* Now convert the offset into a dimension relative to the bottom line of a 5-line stave (there are 4 points between lines. */ offset = (2 * offset - 4) * 1000; /* If it's a resetting signature, we must print a natural. Then select the relevant virtual music character - the half accidentals have two different versions. */ if (use_naturals) ac = ac_nt; switch(ac) { default: ch = ac_chars[ac]; break; case ac_hs: if (curmovt->halfsharpstyle == 0) { ch = mc_hsharp1; ac = ac_no; /* Fudge for narrow one */ } else ch = mc_hsharp2; break; case ac_hf: ch = (curmovt->halfflatstyle == 0)? mc_hflat1 : mc_hflat2; break; } /* Output the character and adjust the position. */ ps_muschar(x, y - (offset * out_stavemagn)/1000, ch, 10 * out_stavemagn); x += mac_muldiv(curmovt->accspacing[ac], out_stavemagn, 1000); } } } /************************************************ * Output a time * ************************************************/ /* Arguments: x x-position y y-position ts time signature Returns: nothing */ void out_writetime(int32_t x, int32_t y, usint ts) { ptimestr *pt; fontinststr *fdatavector; int8_t sizen, sized; uint32_t vn[16]; uint32_t vd[16]; uint32_t *topstring, *botstring; /* If not printing time signatures, return */ if (!MFLAG(mf_showtime)) return; fdatavector = (curmovt->fontsizes)->fontsize_text; /* First see if this time signature has special strings specified for its printing. The printtime directive must have happened in this movement or earlier for it to be applicable. */ for (pt = main_printtime; pt != NULL; pt = pt->next) { if (pt->time == ts && pt->movt_number <= curmovt->number) break; } /* If found special case, get strings and sizes from it */ if (pt != NULL) { sizen = pt->sizetop; sized = pt->sizebot; topstring = pt->top; botstring = pt->bot; } /* Default printing for this time signature. First mask off the multiplier, then check for the special cases of C and A. */ else { topstring = vn; botstring = vd; ts &= 0xffffu; /* Lose the multiplier */ /* C and A are special cases */ if (ts == time_common || ts == time_cut) { ps_muschar(x, y - 4 * out_stavemagn, ((ts == time_common)? mc_common : mc_cut), 10 * out_stavemagn); return; } /* Non-special case - set up numerator and denominator, in the time signature font. */ misc_psprintf(vn, curmovt->fonttype_time, "%d", ts >> 8); misc_psprintf(vd, curmovt->fonttype_time, "%d", ts & 255); sizen = sized = ff_offset_ts; } /* We now have in topstring and botstring two strings to print. Arrange that they are centred with respect to each other when both are to be printed. Also arrange to adjust the heights according to the font size. We assume that at 12-points, the height is 8 points, which is true for the default bold font. However, it is not true for the music font, so there is a fudge to check for that case which will catch the common cases. */ out_fdata1.size = (fdatavector[sizen].size * out_stavemagn)/1000; out_fdata2.size = (fdatavector[sized].size * out_stavemagn)/1000; /* NOTE: Because the sizes are unsigned, an (int) cast is necessary when they are subtracted in the code below to prevent what should be a negative number becoming a large positive one. */ if (MFLAG(mf_showtimebase) && botstring[0] != 0) { uint32_t stdsize = out_stavemagn * (((PFONT(botstring[0]) & ~font_small) == font_mf)? 10 : 12); int32_t nx = 0; int32_t dx = 0; int32_t widthn = string_width(topstring, &out_fdata1, NULL); int32_t widthd = string_width(botstring, &out_fdata2, NULL); if (widthn > widthd) dx = (widthn - widthd)/2; else nx = (widthd - widthn)/2; out_string(topstring, &out_fdata1, x + nx, y - (8000 * out_stavemagn)/1000, 0); out_string(botstring, &out_fdata2, x + dx, y + ((3 * (int)(out_fdata2.size - stdsize)/4) * out_stavemagn)/1000, 0); } else { uint32_t stdsize = out_stavemagn * (((PFONT(topstring[0]) & ~font_small) == font_mf)? 10 : 12); out_string(topstring, &out_fdata1, x, y - ((4000 - (int)(out_fdata1.size - stdsize)/3) * out_stavemagn)/1000, 0); } } /************************************************* * Output repeat marks * *************************************************/ static int repspacing[] = { /* righthand repeats */ /* thick thin dots */ 50, 31, 6, /* repeatstyle = 0 */ -1, 50, 25, /* repeatstyle = 1 */ -1, 50, 25, /* repeatstyle = 2 */ -1, -1, 25, /* repeatstyle = 3 */ 50, 31, 6, /* repeatstyle = 4 */ /* lefthand repeats */ /* thick thin dots */ 0, 35, 51, /* repeatstyle = 0 */ -1, 0, 15, /* repeatstyle = 1 */ -1, 0, 15, /* repeatstyle = 2 */ -1, -1, 15, /* repeatstyle = 3 */ 0, 35, 51, /* repeatstyle = 4 */ /* righthand double repeats */ /* thick thin dots */ 50, 31, 6, /* repeatstyle = 0 */ -1, 50, 25, /* repeatstyle = 1 */ -1, 50, 25, /* repeatstyle = 2 */ -1, -1, 25, /* repeatstyle = 3 */ 34, -1, 6, /* repeatstyle = 4 */ /* lefthand double repeats */ /* thick thin dots */ 0, 35, 51, /* repeatstyle = 0 */ -1, 0, 15, /* repeatstyle = 1 */ -1, 0, 15, /* repeatstyle = 2 */ -1, -1, 15, /* repeatstyle = 3 */ 17, -1, 51 /* repeatstyle = 4 */ }; /* Arguments: x x-position type type of repeat magn magnification Returns: nothing */ void out_writerepeat(int32_t x, int type, int32_t magn) { int style = curmovt->repeatstyle; int *xx = repspacing + type + style * 3; if (xx[0] >= 0) ps_barline(x + (xx[0]*magn)/10, out_ystave, out_ybarend, bar_thick, magn); if (xx[1] >= 0) ps_barline(x + (xx[1]*magn)/10, out_ystave, out_ybarend, (style == 2)? bar_dotted : bar_single, magn); out_ascstring((style != 3)? US"xI" : US"IxxyyyyyyI", font_mf, 10*out_stavemagn, x + (xx[2]*magn)/10 + (65*(magn - out_stavemagn))/100, out_ystave); /* Output "wings" if requested, positioned at the thick line, if any, else at the thin line if any, else at the dots. */ if (MFLAG(mf_repeatwings)) { int32_t dx = ((type == rep_left || type == rep_dleft)? 7 : -7) * magn; int32_t dy = 4*magn; int32_t thick = magn/2; if (xx[0] >= 0) x += ((xx[0]+10)*magn)/10; else if (xx[1] >= 0) x += (xx[1]*magn)/10; else x += (xx[2]*magn)/10; if (curstave == out_topstave) { int32_t y = 16*magn; ps_line(x, y, x + dx, y + dy, thick, 0); } if (curstave == out_botstave) { int32_t y = 0; ps_line(x, y, x + dx, y - dy, thick, 0); } } } /************************************************* * Find X offset for given M offset * *************************************************/ /* The search starts at the current out_posptr. We never search for a value that is less than a previous one. When setting up a beam over a bar line, the moff can be greater than the bar length. In this case, and also in the case when it is equal to the bar length, we must search the NEXT bar. Argument: the musical offset in the bar Returns: the x offset in the bar */ int32_t out_findXoffset(int32_t moff) { if (!beam_overbeam || moff < out_poslast->moff) { while (moff > out_posptr->moff && out_posptr < out_poslast) out_posptr++; while (moff < out_posptr->moff && out_posptr > out_postable) out_posptr--; if (moff == out_posptr->moff) return out_posptr->xoff; } /* Handle the beam over bar line case */ else { int newmoff = moff - out_poslast->moff; posstr *new_postable, *new_posptr, *new_poslast; barposstr *bp = curmovt->posvector + curbarnumber + 1; new_postable = new_posptr = bp->vector; new_poslast = new_postable + bp->count - 1; while (newmoff > new_posptr->moff && new_posptr < new_poslast) new_posptr++; while (newmoff < new_posptr->moff && new_posptr > new_postable) new_posptr--; if (newmoff == new_posptr->moff) return new_posptr->xoff + out_poslast->xoff + out_sysblock->barlinewidth; } /* Cannot find a position for this moff. This error is hard, but need to keep the compiler happy. */ error(ERR142, moff, sfn(moff)); return 0; } /************************************************* * Find X offset for one of two given M offsets * *************************************************/ /* This is used only in the non-overbeaming case. It returns the x offset of the first moff if it exists, otherwise the x offset of the second moff. Arguments: moff1 the first music offset moff2 the second music offset Returns: the x offset */ int32_t out_findGoffset(int32_t moff1, int32_t moff2) { while (moff1 > out_posptr->moff && out_posptr < out_poslast) out_posptr++; while (moff1 < out_posptr->moff && out_posptr > out_postable) out_posptr--; if (moff1 == out_posptr->moff) return out_posptr->xoff; return out_findXoffset(moff2); } /************************************************* * Find postable entry for given M offset * *************************************************/ /* Argument: the music offset Returns: pointer to the postable entry, or NULL if not found */ posstr * out_findTentry(int32_t moff) { while (moff > out_posptr->moff && out_posptr < out_poslast) out_posptr++; while (moff < out_posptr->moff && out_posptr > out_postable) out_posptr--; return (moff == out_posptr->moff)? out_posptr : NULL; } /************************************************* * Find X offset or interpolate in current bar * *************************************************/ /* This is used to implement MusicXML-styole "offsets", which may be positive or negative. Don't alter out_posptr. If we don't find an exact moff, interpolate between two entries or, if off the end, fudge assuming 16 points per crotchet. Argument: the music offset Returns: an x offset */ int32_t out_findAoffset(int32_t moff) { posstr *a, *b; posstr *p = out_posptr; while (moff > p->moff && p < out_poslast) p++; while (moff < p->moff && p > out_postable) p--; if (moff == p->moff) return p->xoff; if (moff > p->moff) { if (p == out_poslast) /* After last entry */ return p->xoff + mac_muldiv(16000, moff - p->moff, len_crotchet); a = p; b = p + 1; } else { if (p == out_postable) /* Before first entry */ return p->xoff - mac_muldiv(16000, p->moff - moff, len_crotchet); b = p; a = p - 1; } /* In between two entries; interpolate. */ return a->xoff + mac_muldiv(b->xoff - a->xoff, moff - a->moff, b->moff - a->moff); } /************************************************* * Output one string * *************************************************/ /* The y values are absolute positions downwards from the top of the page. This function deals with special escape characters in the string, and remembers the string's end point in case there is a follow-on string. Arguments: s a PMW string fdata pointer to font instance data x x-coordinate for the start y y-coordinate for the start boxring text flags Returns: nothing */ void out_string(uint32_t *s, fontinststr *fdata, int32_t x, int32_t y, uint32_t flags) { BOOL rotated; int32_t y0, y1; int32_t *matrix; int32_t xstart = x; int32_t ystart = y; int32_t magn; int i = 0; int nonskip = 0; uint32_t boxring = flags & (text_boxed | text_boxrounded | text_ringed); uint32_t buff[256]; /* Make a copy of the string, interpreting the specials, and outputting as we go if the local buffer gets too full (ensure space for a page number). */ for (uint32_t *ss = s; *ss != 0; ss++) { uint32_t c = PCHAR(*ss); /* Ensure enough space for a page or bar repeat number */ if (i > 250) { buff[i] = 0; ps_string(buff, fdata, &x, &y, TRUE, TRUE); i = 0; } if (c <= MAX_UNICODE) buff[i++] = *ss; else { BOOL doinsert = FALSE; uint32_t f = PFTOP(*ss); uint32_t pn = 0; if (c == ss_repeatnumber || c == ss_repeatnumber2) { doinsert = TRUE; if (curstave >= 0 && curbarnumber >= 0) { stavestr *sts = curmovt->stavetable[curstave]; if (sts != NULL && sts->barindex != NULL) pn = sts->barindex[curbarnumber]->repeatnumber; if (pn == 1 && c == ss_repeatnumber2) doinsert = FALSE; } } else { BOOL isodd; pn = curpage->number; isodd = (pn & 1) != 0; switch(c) { case ss_verticalbar: /* Unescaped vertical bar */ buff[i++] = f | '|'; break; case ss_escapedhyphen: /* Escaped hyphen */ buff[i++] = f | '-'; break; case ss_escapedequals: /* Escaped equals */ buff[i++] = f | '='; break; case ss_escapedsharp: /* Escaped sharp */ buff[i++] = f | '#'; break; case ss_page: /* Unconditional page number */ doinsert = TRUE; break; case ss_pageodd: /* Page number if odd */ doinsert = isodd; break; case ss_pageeven: /* Page number if even */ doinsert = !isodd; break; case ss_skipodd: /* Skip if page number is odd */ if (nonskip == ss_skipodd) nonskip = 0; else { nonskip = ss_skipodd; if (isodd) while (ss[1] != 0 && PCHAR(ss[1]) != ss_skipodd) ss++; } break; case ss_skipeven: /* Skip if page number is even */ if (nonskip == ss_skipeven) nonskip = 0; else { nonskip = ss_skipeven; if (!isodd) while (ss[1] != 0 && PCHAR(ss[1]) != ss_skipeven) ss++; } break; } } /* Insert page or bar repeat number if required */ if (doinsert) { char nbuff[16]; sprintf(nbuff, "%d", pn); for (char *p = nbuff; *p != 0; p++) buff[i++] = f | *p; } } } /* Output final part of the string */ if (i > 0) { buff[i] = 0; ps_string(buff, fdata, &x, &y, TRUE, TRUE); } /* Retain final ending position */ out_string_endx = x; out_string_endy = y; if (boxring == 0) return; /* All done for plain string */ /* Deal with boxed and/or ringed strings. If this is a barnumber, it is independent of any stave so curstave will be negative and there is no stave magnification. */ magn = (curstave < 0)? 1000 : curmovt->stavesizes[curstave]; y0 = out_ystave - ystart - 2*magn; y1 = y0 + fdata->size + magn; matrix = fdata->matrix; rotated = matrix != NULL && matrix[4] != 0; /* Compute length of string along string by Pythagoras if rotated. Putting the (int32_t) cast next to the sqrt function gets a compiler warning. */ if (rotated) { double xx = (double)x - (double)xstart; double yy = (double)y - (double)ystart; double zz = sqrt(xx*xx + yy*yy); x = xstart + (int32_t)zz; } x += 2*magn - fdata->size/20; /* Boxed string - note the lines() routine is stave-relative. Draw 5 lines for the box to get the corner right at the starting position. */ if ((boxring & text_boxed) != 0) { int32_t xx[6], yy[6]; xx[0] = xx[3] = xx[4] = xstart - 2000; xx[1] = xx[2] = xx[5] = x; yy[0] = yy[1] = yy[4] = yy[5] = y0; yy[2] = yy[3] = y1; /* If text is rotated, rotate about the initial point */ if (rotated) { for (int j = 0; j <= 5; j++) { int32_t xxx = xx[j] - xstart; int32_t yyy = yy[j] - out_ystave + ystart; int32_t xxxx = mac_muldiv(xxx, matrix[5], 1000) - mac_muldiv(yyy, matrix[4], 1000); int32_t yyyy = mac_muldiv(yyy, matrix[5], 1000) + mac_muldiv(xxx, matrix[4], 1000); xx[j] = xxxx + xstart; yy[j] = yyyy + out_ystave - ystart; } } /* This is how to get rounded or bevelled corners if we set up options for this feature. Might also need to adjust 15 below somehow. */ /* Set rounded corners if wanted */ if ((boxring & text_boxrounded) != 0) ps_setcapandjoin(caj_round_join); ps_lines(xx, yy, 6, fdata->size/15); ps_setcapandjoin(caj_mitre_join); } /* Ringed string - the paths routine is also stave-relative */ if ((boxring & text_ringed) != 0) { int32_t xx[13], yy[13], cc[6]; int32_t d = (2*fdata->size)/7; int32_t w = (2*(x - xstart + 2000))/7; cc[0] = path_move; cc[1] = cc[2] = cc[3] = cc[4] = path_curve; cc[5] = path_end; xx[0] = xx[9] = xx[12] = xstart - 2000; xx[3] = xx[6] = x; xx[1] = xx[8] = xx[0] + w; xx[2] = xx[7] = xx[3] - w; xx[4] = xx[5] = xx[3] + d; xx[10] = xx[11] = xx[0] - d; yy[0] = yy[3] = yy[12] = y1; yy[6] = yy[9] = y0; yy[1] = yy[2] = yy[0] + w; yy[4] = yy[11] = yy[0] - d; yy[5] = yy[10] = yy[6] + d; yy[7] = yy[8] = yy[6] - w; /* If text is rotated, rotate about the initial point */ if (rotated) { for (int j = 0; j <= 12; j++) { int32_t xxx = xx[j] - xstart; int32_t yyy = yy[j] - out_ystave + ystart; int32_t xxxx = mac_muldiv(xxx, matrix[5], 1000) - mac_muldiv(yyy, matrix[4], 1000); int32_t yyyy = mac_muldiv(yyy, matrix[5], 1000) + mac_muldiv(xxx, matrix[4], 1000); xx[j] = xxxx + xstart; yy[j] = yyyy + out_ystave - ystart; } } ps_path(xx, yy, cc, fdata->size/15); } } /************************************************* * Output ASCII string * *************************************************/ /* This is mostly used for strings in the music font. Arguments: s an ASCII string font a font id size the font size x, y the position Returns: nothing */ void out_ascstring(uschar *s, int font, int32_t size, int32_t x, int32_t y) { out_fdata1.size = size; out_string(string_pmw(s, font), &out_fdata1, x, y, 0); } /************************************************* * Output one head/foot line * *************************************************/ /* Called from out_heading() below. Argument: pointer to headstr Returns: nothing */ static void out_headfootline(headstr *p) { if (p->string[0] != NULL) { int32_t w = string_width(p->string[0], &(p->fdata), NULL); out_string(p->string[0], &(p->fdata), 0, out_yposition, 0); if (-2000 < out_bbox[0]) out_bbox[0] = -2000; if (w + 2000 > out_bbox[2]) out_bbox[2] = w + 2000; } if (p->string[1] != NULL) { int32_t w = string_width(p->string[1], &(p->fdata), NULL); int32_t x = (curmovt->linelength - w)/2; out_string(p->string[1], &(p->fdata), x, out_yposition, 0); if (x - 2000 < out_bbox[0]) out_bbox[0] = x - 2000; if (x + w + 2000 > out_bbox[2]) out_bbox[2] = x + w + 2000; } if (p->string[2] != NULL) { int32_t w = string_width(p->string[2], &(p->fdata), NULL); out_string(p->string[2], &(p->fdata), curmovt->linelength - w, out_yposition, 0); if (curmovt->linelength - w - 2000 < out_bbox[0]) out_bbox[0] = curmovt->linelength - w - 2000; if (curmovt->linelength + 4000 > out_bbox[2]) out_bbox[2] = curmovt->linelength + 4000; } } /************************************************* * Output heading texts * *************************************************/ /* Called from out_page() below. Argument: pointer to chain of heading blocks Returns: nothing */ static void out_heading(headblock *h) { TRACE("out_heading() start\n"); for (headstr *p = h->headings; p != NULL; p = p->next) { /* Deal with a drawing. The drawing code is set up for use on staves; hence we must set up curstave as well as the origin. We set curstave negative to control error messages. */ if (p->drawing != NULL) { draw_ox = draw_oy = 0; curstave = -1; out_ystave = out_yposition; out_dodraw(p->drawing, p->drawargs, FALSE); out_yposition += p->space; } /* Deal with textual heading/footing */ else { int32_t descender = (4 * p->fdata.size)/10; out_yposition += p->spaceabove; if (out_yposition + descender > out_bbox[1]) out_bbox[1] = out_yposition + descender; if (out_yposition - p->fdata.size < out_bbox[3]) out_bbox[3] = out_yposition - p->fdata.size; out_headfootline(p); out_yposition += p->space; } } TRACE("out_heading() end\n"); } /************************************************* * Output a system * *************************************************/ /* Called from out_page() below. The system to be output is set in out_sysblock. Argument: TRUE for the first system of a movement Returns: nothing */ static void out_system(BOOL firstsystem) { int lastystave; int zerocopycount = 0; int32_t previous_stavedepth = INT32_MAX; /* Non-zero is what matters */ int32_t depthvector[MAX_STAVE+1]; int32_t save_colour[3]; snamestr **stavenames = out_sysblock->stavenames; TRACE("out_system() start\n"); /* out_yposition is the position for the system; out_ystave is the position for the stave we are working on. */ out_ystave = out_yposition; /* Frequently used values */ curbarnumber = out_sysblock->barstart; out_laststave = curmovt->laststave; /* Make a copy of the continuation data - but see later for multiple stave zero copies. */ misc_copycontstr(wk_cont, out_sysblock->cont, out_laststave, FALSE); /* Output the start-of-line matter on each stave, and at the same time compute the relative position of each stave. */ depthvector[0] = 0; for (curstave = 1; curstave <= out_laststave; curstave++) { stavestr *ss; TRACE("start of line matter for stave %d\n", curstave); depthvector[curstave] = out_ystave - out_yposition; if (mac_notbit(out_sysblock->notsuspend, curstave)) continue; ss = curmovt->stavetable[curstave]; out_stavemagn = curmovt->stavesizes[curstave]; out_pitchmagn = out_stavemagn/2; /* Deal with stave name; there may be additional strings hung off the "extra" field. */ for (snamestr *sname = (stavenames == NULL)? NULL : stavenames[curstave]; sname != NULL; sname = sname->extra) { /* Deal with textual stave name. Note: sname->adjusty is positive for upwards, but out_string() has y doing downwards. */ if (sname->text != NULL) { BOOL vertical = (sname->flags & snf_vertical) != 0; int32_t adjustx = sname->adjustx; int32_t adjusty = -8 * curmovt->stavesizes[curstave] - sname->adjusty; fontinststr *fdata = &((curmovt->fontsizes->fontsize_text)[sname->size]); /* For text which is vertically centred between two staves, there is a fudge to get it in the middle of a brace. */ if ((sname->flags & snf_vcentre) != 0) { /* Scan from the current stave, looking for a stave with a non-zero stavespacing. That is, look for the distance down from this stave. We use this for additional vertical spacing only if neither it nor the stave that follows are suspended. */ for (int stv = curstave; stv < out_laststave; stv++) { int32_t gap = out_sysblock->stavespacing[stv]; if (gap != 0) { if (mac_isbit(out_sysblock->notsuspend, stv) && mac_isbit(out_sysblock->notsuspend, (stv+1))) adjusty += gap/2 - (vertical? 0 : 2000); break; } } } /* Output the single vertical line, always centred, with a small additional adjustment. */ if (vertical) { adjusty += string_width(sname->text, fdata, NULL)/2; fdata = font_rotate(fdata, 90000); out_string(sname->text, fdata, out_sysblock->xjustify + adjustx, out_ystave + adjusty, 0); } /* Output horizontal lines, adjusting the vertical position according to the number of lines; the line depth is equal to the font size. */ else { int32_t maxw = 0; adjusty += (fdata->size*4)/10 - ((sname->linecount - 1)*fdata->size)/2; /* If both centre & right adjust flags are set, we need to find the length of the longest line of the text. Tedious, but there's no other way of doing it as far as I can see... */ if ((sname->flags & (snf_hcentre | snf_rightjust)) == (snf_hcentre | snf_rightjust)) { for (uint32_t *t = sname->text; *t != 0; ) { int32_t w; uint32_t tsave; uint32_t *tt = t; while (*t != 0 && PCHAR(*t) != ss_verticalbar) t++; tsave = *t; *t = 0; w = string_width(tt, fdata, NULL); *t = tsave; if (w > maxw) maxw = w; if (tsave != 0) t++; } } /* Now output the lines */ for (uint32_t *t = sname->text; *t != 0; ) { int32_t adjustline = 0; uint32_t tsave; uint32_t *tt = t; while (*t != 0 && PCHAR(*t) != ss_verticalbar) t++; tsave = *t; *t = 0; if ((sname->flags & (snf_hcentre | snf_rightjust)) != 0) { int32_t w = string_width(tt, fdata, NULL); adjustline = out_sysblock->startxposition - 6000 - w; if (curmovt->bracelist != NULL) adjustline -= 6500; else if (curmovt->thinbracketlist != NULL) adjustline -= 4000; if ((sname->flags & snf_hcentre) != 0) { if ((sname->flags & snf_rightjust) == 0) adjustline /= 2; else adjustline -= (maxw - w)/2; } } out_string(tt, fdata, out_sysblock->xjustify + adjustline + adjustx, out_ystave + adjusty, 0); adjusty += fdata->size; *t = tsave; if (tsave != 0) t++; } } } /* Deal with stave name drawing */ if (sname->drawing != NULL) { draw_ox = draw_oy = 0; out_dodraw(sname->drawing, sname->drawargs, FALSE); } } /* Output clef, key, etc if the bar contains any data or if this stave is not overprinting the one above or below and is not an omitempty stave. That is, omit for an empty overprinting or omitempty stave. */ if (!mac_emptybar(ss->barindex[out_sysblock->barstart]) || (!ss->omitempty && out_sysblock->stavespacing[curstave] != 0 && previous_stavedepth != 0)) { out_writeclef(out_sysblock->startxposition + out_sysblock->xjustify + curmovt->startspace[0], out_ystave, wk_cont[curstave].clef, 10000, FALSE); if (misc_keywidth(wk_cont[curstave].key, wk_cont[curstave].clef) != 0) out_writekey(out_sysblock->keyxposition + out_sysblock->xjustify, out_ystave, wk_cont[curstave].clef, wk_cont[curstave].key); if (mac_isbit(out_sysblock->showtimes, curstave)) out_writetime(out_sysblock->timexposition + out_sysblock->xjustify, out_ystave, wk_cont[curstave].time); } /* Advance down to next stave */ previous_stavedepth = out_sysblock->stavespacing[curstave]; out_ystave += previous_stavedepth; } /* Compute the levels for copies of stave 0 that are to be printed. If two or more share a level (because of suspension), keep only the last (-1 => no print). Don't print one below the system depth. There will always be at least one block on the list. */ for (zerocopystr *zerocopy = curmovt->zerocopy; zerocopy != NULL; zerocopy = zerocopy->next) { if (zerocopy->stavenumber <= out_laststave) { zerocopy->level = depthvector[zerocopy->stavenumber]; if (zerocopy->level > out_sysblock->systemdepth) zerocopy->level = -1; else { zerocopystr *zz = curmovt->zerocopy; zerocopycount++; while (zz != zerocopy) { if (zz->level == zerocopy->level) { zz->level = -1; zerocopycount--; } zz = zz->next; } } } else zerocopy->level = -1; } /* If we are outputting more than one copy of stave zero, we must set up private contstr blocks for each one. */ if (zerocopycount > 1) { for (zerocopystr *zerocopy = curmovt->zerocopy; zerocopy != NULL; zerocopy = zerocopy->next) { if (zerocopy->level >= 0) { zerocopy->cont = mem_get_cached((void **)(&main_freezerocontblocks), sizeof(contstr)); /* The cast of the first argument here avoids the silly compiler error message "expected 'contstr *' {aka 'struct constr *'} but argument is of type 'struct contstr *'", which makes no sense. */ misc_copycontstr((contstr *)(zerocopy->cont), out_sysblock->cont, 0, FALSE); } } } /* Output the joining signs required at the left hand side of the system of staves, unless there is only one stave. */ if (out_sysblock->systemdepth > 0) { uint64_t bracketed; int bar = curbarnumber; TRACE("joining signs\n"); /* This applies to the set of staves; no specific stave magnification. */ out_stavemagn = 1000; out_pitchmagn = out_stavemagn/2; /* If there is an indent set, do true lefthand joins if required. Then adjust the bar number to point to the one where the rest of the joins will appear. */ if (out_sysblock->joinxposition != out_sysblock->startxposition) { if (MFLAG(mf_startjoin)) { out_joinxposition = out_sysblock->startxposition + out_sysblock->xjustify; (void)dojoinsign(curmovt->joinlist, depthvector, 0, join_barline, bar_single, bar); (void)dojoinsign(curmovt->joindottedlist, depthvector, 0, join_barline, bar_dotted, bar); } bar += curmovt->startbracketbar; } /* Set x position for all remaining signs */ out_joinxposition = out_sysblock->joinxposition + out_sysblock->xjustify; /* Deal with solid and dotted lines */ (void)dojoinsign(curmovt->joinlist, depthvector, 0, join_barline, bar_single, bar); (void)dojoinsign(curmovt->joindottedlist, depthvector, 0, join_barline, bar_dotted, bar); /* Deal with (thick) brackets; bracketed gets set to the bracketed staves */ bracketed = dojoinsign(curmovt->bracketlist, depthvector, 0, join_bracket, 0, bar); /* Deal with thin brackets */ (void)dojoinsign(curmovt->thinbracketlist, depthvector, bracketed, join_thinbracket, 0, bar); /* Deal with braces */ (void)dojoinsign(curmovt->bracelist, depthvector, bracketed, join_brace, 0, bar); /* Deal with system separators; note that ps_line() has its y origin at out_ystave. */ if (!firstsystem && curmovt->systemseplength != 0) { double rangle = ((double)curmovt->systemsepangle)*atan(1.0)/45000.0; int32_t x0 = out_joinxposition + curmovt->systemsepposx; int32_t y0 = 28000 + curmovt->systemsepposy; int32_t dx = (int32_t)(((double)curmovt->systemseplength) * cos(rangle)); int32_t dy = (int32_t)(((double)curmovt->systemseplength) * sin(rangle)); out_ystave = out_yposition; /* Top stave */ ps_line(x0, y0, x0 + dx, y0 + dy, curmovt->systemsepwidth, 0); y0 -= 2* curmovt->systemsepwidth; ps_line(x0, y0, x0 + dx, y0 + dy, curmovt->systemsepwidth, 0); } } /* Now go through the bars, outputting all the staves for each in turn. */ out_startlinebar = TRUE; out_barx = out_sysblock->firstnoteposition + out_sysblock->xjustify; out_lastbarlinex = out_barx; /* for continued nth time marks */ out_lastbarwide = FALSE; for (;;) { curbarnumber = out_setbar(zerocopycount); out_barx = out_lastbarlinex + out_sysblock->barlinewidth; if (curbarnumber > out_sysblock->barend) break; out_startlinebar = FALSE; } /* Output a key or time change at line end if required, adjusting the position for a non-stretched barline. */ if ((out_sysblock->flags & sysblock_warn) != 0) { out_barx += curmovt->barlinespace - out_sysblock->barlinewidth; warnbar(); } /* Tidy the main cont data structure and any copies that have been set up for multiple stave zeros. */ misc_tidycontstr(wk_cont, out_laststave); if (zerocopycount > 1) { for (zerocopystr *zerocopy = curmovt->zerocopy; zerocopy != NULL; zerocopy = zerocopy->next) { if (zerocopy->level >= 0) { /* The cast of the first argument here avoids the silly compiler error message "expected 'contstr *' {aka 'struct constr *'} but argument is of type 'struct contstr *'", which makes no sense. */ misc_tidycontstr((contstr *)(zerocopy->cont), 0); mem_free_cached((void **)(&main_freezerocontblocks), zerocopy->cont); } } } /* Now we know the final x position, we can output the staves. Nothing is output for stave 0, as it is always overprinted. Also, nothing is output for a stave with "omitempty" set, as it deals with its own stave lines. */ out_ystave = out_yposition; lastystave = -1; int32_t leftbarx = out_sysblock->startxposition + out_sysblock->xjustify; int32_t rightbarx = out_lastbarlinex; if (rightbarx > leftbarx) for (curstave = 1; curstave <= out_laststave; curstave++) { TRACE("lines for stave %d\n", curstave); if (mac_isbit(out_sysblock->notsuspend, curstave)) { if (out_ystave != lastystave) { stavestr *ss = curmovt->stavetable[curstave]; if (!ss->omitempty && ss->stavelines > 0) { out_stavemagn = curmovt->stavesizes[curstave]; ps_stave(leftbarx, out_ystave, rightbarx, ss->stavelines); lastystave = out_ystave; } } out_ystave += out_sysblock->stavespacing[curstave]; } } /* If any drawing items have been saved up for execution after the stave lines have been drawn, do them now. The overdrawstr blocks are cached for re-use, but the x, y, c vectors, being of different sizes, are not. */ ps_getcolour(save_colour); while (out_overdraw != NULL) { overdrawstr *this = out_overdraw; out_overdraw = this->next; if (this->texttype) { ps_setcolour(this->d.t.colour); out_string(this->d.t.text, &(this->d.t.fdata), this->d.t.xx, this->d.t.yy, this->d.t.flags); } else { ps_setcolour(this->d.g.colour); ps_setdash(this->d.g.dash[0], this->d.g.dash[1]); out_ystave = this->d.g.ystave; ps_path(this->d.g.x, this->d.g.y, this->d.g.c, this->d.g.linewidth); mem_free_cached((void **)(&main_freeoverdrawstr), this); } } ps_setcolour(save_colour); TRACE("out_system() end\n"); } /************************************************* * Output one page * *************************************************/ /* Arguments: none Return: nothing */ void out_page(void) { BOOL firstsystem = TRUE; BOOL lastwasheading = FALSE; int32_t topspace = curpage->topspace; TRACE("out_page() start\n"); /* Initialize bounding box - note in y-downwards coordinates */ out_bbox[0] = INT32_MAX; out_bbox[2] = 0; out_bbox[1] = 0; out_bbox[3] = INT32_MAX; /* Initialize for outputting the music */ ps_setgray(0); ps_setdash(0, 0); ps_setcapandjoin(caj_butt); out_yposition = 0; out_drawstackptr = 0; /* Output headings and systems. Note that we must insert a stave's gap (plus one) between the last heading line and the first system (to account for the system depth). Note also that we insert the topspace *after* pageheadings, but *before* non-page headings. */ for (out_sysblock = curpage->sysblocks; out_sysblock != NULL; out_sysblock = out_sysblock->next) { /* On a change of movement, check for a change of margin, and re-initialize the list of last-used barline styles. */ if (out_sysblock->movt != curmovt) { curmovt = out_sysblock->movt; if (curmovt->leftmargin >= 0) print_xmargin = curmovt->leftmargin; else { print_xmargin = (print_sheetwidth - curmovt->linelength)/2 + 13000000/(2*main_magnification); if (print_xmargin < 20000) print_xmargin = 20000; } } /* Deal with a heading */ if (!out_sysblock->is_sysblock) { curbarnumber = -1; out_stavemagn = 1000; out_pitchmagn = out_stavemagn/2; if (!((headblock *)out_sysblock)->pageheading) { out_yposition += topspace; topspace = 0; } out_heading((headblock *)out_sysblock); lastwasheading = firstsystem = TRUE; } /* Deal with a system */ else { if (lastwasheading) out_yposition += 17000; out_yposition += topspace; topspace = 0; if (out_yposition - 48000 < out_bbox[3]) out_bbox[3] = out_yposition - 48000; if (out_yposition + out_sysblock->systemdepth + 32000 > out_bbox[1]) out_bbox[1] = out_yposition + out_sysblock->systemdepth + 32000; out_system(firstsystem); firstsystem = FALSE; if (out_sysblock->xjustify - 10000 < out_bbox[0]) out_bbox[0] = out_sysblock->xjustify - 10000; if (out_lastbarlinex + 4000 > out_bbox[2]) out_bbox[2] = out_lastbarlinex + 4000; if ((out_sysblock->flags & sysblock_noadvance) == 0) out_yposition += out_sysblock->systemdepth + out_sysblock->systemgap; lastwasheading = FALSE; } } /* Deal with any footings */ if (curpage->footing != NULL) { curbarnumber = -1; out_stavemagn = 1000; out_pitchmagn = out_stavemagn/2; out_yposition = main_pagelength + 20000000/main_magnification; out_heading(curpage->footing); } TRACE("out_page() end\n"); } /* End of out.c */ pmw-5.22/src/xml.h0000644000222100022210000000242114541067540012100 0ustar ph10ph10/************************************************* * Header for MusicXML input for PMW * *************************************************/ /* Copyright (c) Philip Hazel, 2022 */ /* File last edited: April 2022 */ /* This is a header for the optional MusicXML processing code. */ /* These are some parameters that specify sizes of things in the code. They must appear before including the local headers. */ #define LINEBUFSIZE 1024 #define NAMESIZE 32 #define NESTSTACKSIZE 100 /* These values do not necessarily have to appear before including the local headers, but they might as well be together with those above. */ #define LAYOUTLISTMIN 256 #define STAVEBUFFERMIN 10240 #define PARTSTAFFMAX 10 /* Macro to simplify checking the value of an attribute. a = item whose attribute is to be checked b = name of attribute c = default value for missing attribute d = TRUE for error if missing e = value to be compared */ #define ISATTR(a,b,c,d,e) \ (Ustrcmp(xml_get_attr_string(a,US b,US c,d),e) == 0) /* Stave coupling settings */ enum { COUPLE_NOT, COUPLE_UP, COUPLE_DOWN }; /* Include the other XML header files */ #include "xml_structs.h" #include "xml_globals.h" #include "xml_functions.h" /* End of xml.h */ pmw-5.22/src/main.c0000644000222100022210000010114214541067540012217 0ustar ph10ph10/************************************************* * PMW entry point and initialization * *************************************************/ /* Copyright Philip Hazel 2022 */ /* This file created: December 2020 */ /* This file last modified: June 2023 */ #include "pmw.h" #include "rdargs.h" #if !defined NO_PMWRC || NO_PMWRC == 0 #include #include #include #endif /************************************************* * Command line data * *************************************************/ /* Keywords for the command line are defined as a single string that is searched in order. See the rdargs.c source for a specification. If you increase the number of keys, check that the size of the keyoffset field in rdargs.c is big enough. Otherwise an error will occur. */ static const char *arg_pattern = "," "a4ona3/s," "a4sideways/s," "a5ona4/s," "C/k," "c/k/n," "dbd/k," "dbl=drawbarlines/s," "dsl=drawstavelines=drawstafflines/n=3," "dtp/k/n," "duplex/s," "?d," /* Matches any other key starting with 'd' */ "em=errormaximum/n," "eps/s," "F/k," "f/k," "H/k," "-help=help/s," "incPMWfont=includePMWfont=incpmwfont=includepmwfont=ipf/s," "MF/k," "MP/k," "MV/k," "manualfeed/s," "midi/k," "mb=midibars/k," "mm=midimovement/k/n," "norc=nopmwrc/s," "nr=norepeats=norepeat/s," "nw=nowidechars/s," "o/k," "p/k," "pamphlet/s," "printadjust/k/2/m," "printgutter/k," "printscale/k," "printside/k/n," "reverse/s," "SM/k," "s/k," "t/k/n," "testing/s," "tumble/s," "-version=V/s," "v/s"; /* Offsets in results vector for command line keys */ enum { arg_aa_input, /* The only unkeyed possibility */ arg_a4ona3, arg_a4sideways, arg_a5ona4, arg_C, arg_c, arg_dbd, arg_drawbarlines, arg_drawstavelines, arg_dtp, arg_duplex, arg_d, arg_em, arg_eps, arg_F, arg_f, arg_H, arg_help, arg_incPMWfont, arg_MF, arg_MP, arg_MV, arg_manualfeed, arg_midi, arg_midibars, arg_midimovement, arg_norc, arg_norepeats, arg_nowidechars, arg_o, arg_p, arg_pamphlet, arg_printadjustx, arg_printadjusty, arg_printgutter, arg_printscale, arg_printside, arg_reverse, arg_SM, arg_s, arg_t, arg_testing, arg_tumble, arg_V, arg_v }; /* Vector for modified command line options (after adding .pmwrc) */ static char **newargv = NULL; /* Debugging options */ typedef struct debug_bit_table { uschar *name; uint32_t bit; } debug_bit_table; /* This table must be in alphabetical order because it is searched by binary chop. */ static debug_bit_table debug_options[] = { { US"all", D_all }, { US"any", D_any }, { US"bar", D_bar }, { US"font", D_font }, { US"header", D_header_all }, { US"headerglob", D_header_glob }, { US"headers", D_header_all }, { US"macro", D_macro }, { US"macros", D_macro }, { US"memory", D_memory }, { US"memorydetail", D_memorydetail }, { US"movtflags", D_movtflags }, { US"preprocess", D_preprocess }, { US"sortchord", D_sortchord }, { US"stringwidth", D_stringwidth }, { US"trace", D_trace }, { US"xmlanalyze", D_xmlanalyze }, { US"xmlgroups", D_xmlgroups }, { US"xmlread", D_xmlread }, { US"xmlstaves", D_xmlstaves } }; #define DEBUG_OPTIONS_COUNT (sizeof(debug_options)/sizeof(debug_bit_table)) /************************************************* * Provide case-independent string match * *************************************************/ int strncmpic(const char *s, const char *t, int n) { while (n--) { int c = tolower(*s++) - tolower(*t++); if (c != 0) return c; } return 0; } /************************************************* * Debug option decoding * *************************************************/ /* This function decodes a string containing bit settings in the form of +name and/or -name sequences, and sets/unsets bits in the debug_selector bit string accordingly. Arguments: string the argument string Returns: nothing; all errors are hard */ static void decode_debug(const char *string) { for(;;) { BOOL adding; const char *s; int len; debug_bit_table *start, *end; if (*string == 0) return; if (*string != '+' && *string != '-') error(ERR31, string); /* Hard */ adding = *string++ == '+'; s = string; while (isalnum(*string) || *string == '_') string++; len = string - s; start = debug_options; end = debug_options + DEBUG_OPTIONS_COUNT; while (start < end) { debug_bit_table *middle = start + (end - start)/2; int c = Ustrncmp(s, middle->name, len); if (c == 0) { if (middle->name[len] != 0) c = -1; else { uint32_t bit = middle->bit; if (adding) debug_selector |= bit; else debug_selector &= ~bit; break; /* Out of loop to match selector name */ } } if (c < 0) end = middle; else start = middle + 1; } /* Loop to match selector name */ if (start >= end) error(ERR32, adding? '+' : '-', len, s); /* Hard */ } /* Loop for selector names */ } /************************************************* * Display information about music * *************************************************/ /* This function is called after pagination if the -v option is present. Arguments: none Returns: nothing */ static void display_info(void) { pagestr *p = main_pageanchor; usint movt; int laststave = -1; BOOL usesharp = FALSE; BOOL halfaccs[MAX_STAVE+1]; /* These variables are used to remember */ uint16_t toppitch[MAX_STAVE+1]; /* data from each stave over the course */ uint16_t botpitch[MAX_STAVE+1]; /* of multiple movements, so that overall */ uint32_t totalpitch[MAX_STAVE+1]; /* statistics can be given. */ uint32_t notecount[MAX_STAVE+1]; /* Display information about the staves in each movement */ for (movt = 0; movt < movement_count; movt++) { int stave; movtstr *m = movements[movt]; eprintf("\nMOVEMENT %d\n\n", m->number); usesharp = (keysigtable[m->key][0] & 0xf0) != (ac_fl << 4); for (stave = 0; stave <= m->laststave; stave++) { stavestr *s = (m->stavetable)[stave]; if (stave == 0 && s->barcount == 0) continue; /* Omit stave 0 if empty */ halfaccs[stave] = s->halfaccs; eprintf("Stave %2d: ", stave); if (m->barnocount == 0) eprintf("%d bar%s", s->barcount, (s->barcount == 1)? "":"s"); else eprintf("%d(+%d) bars", s->barcount - m->barnocount, m->barnocount); if (stave > laststave) { laststave = stave; toppitch[stave] = 0; botpitch[stave] = 9999; notecount[stave] = totalpitch[stave] = 0; } if (s->notecount > 0) { uint32_t average = s->totalpitch/s->notecount; if (!s->halfaccs) average &= 0xfffffffeu; eprintf(";%s range %s to %s average %s", (s->barcount == 1)? " ":"", sfp(s->botpitch, usesharp), sfp(s->toppitch, usesharp), sfp(average, usesharp)); if (s->toppitch > toppitch[stave]) toppitch[stave] = s->toppitch; if (s->botpitch < botpitch[stave]) botpitch[stave] = s->botpitch; totalpitch[stave] += s->totalpitch; notecount[stave] += s->notecount; } eprintf("\n"); } } /* If there is more than one movement, display overall information for each stave. The sharp/flat decision comes from the last movement. */ if (movement_count > 1) { int stave; eprintf("\nOVERALL\n\n"); for (stave = 1; stave <= laststave; stave++) { uint32_t average = totalpitch[stave]/notecount[stave]; if (!halfaccs[stave]) average &= 0xfffffffeu; eprintf("Stave %2d: ", stave); if (notecount[stave] > 0) eprintf("range %s to %s average %s", sfp(botpitch[stave], usesharp), sfp(toppitch[stave], usesharp), sfp(average, usesharp)); eprintf("\n"); } } /* Display information about the page layout */ if (p != NULL) eprintf("\nPAGE LAYOUT\n\n"); while (p != NULL) { int count = 14; sysblock *s; eprintf("Page %d bars: ", p->number); for (s = p->sysblocks; s != NULL; s = s->next) { movtstr *m; if (!s->is_sysblock) continue; /* Heading/footing */ m = s->movt; if (count > 65) { eprintf("\n "); count = 1; } eprintf("%s-%s%s ", sfb(m->barvector[s->barstart]), sfb(m->barvector[s->barend]), (s->flags & sysblock_stretch)? "":"*"); count += 6; if (s->overrun < 30000) { eprintf("(%s) ", sff(s->overrun)); count += 5; } } eprintf("\n Space left on page = %s", sff(p->spaceleft)); if (p->overrun > 0 && p->overrun < 100000) eprintf(" Overrun = %s", sff(p->overrun)); eprintf("\n"); p = p->next; } } /************************************************* * Read a MIDI translation file * *************************************************/ /* These files are short: reading them twice in order to get the correct size doesn't take much time and saves much hassle. The files contain translation between names and MIDI voice numbers or names and MIDI "pitches" for untuned percussion. Arguments: anchor where to build filename the file name Returns: nothing; if the file fails to open, no action is taken */ static void midi_translate(uschar **anchor, uschar *filename) { FILE *f = Ufopen(filename, "r"); int length = 0; uschar *p; uschar line[60]; if (f == NULL) return; while (Ufgets(line, 60, f) != NULL) { line[Ustrlen(line)-1] = 0; if (!isdigit(line[0])) continue; /* Ignore line not starting with a digit */ length += Ustrlen(line+4) + 2; } if (length == 0) return; /* No usable text in the file */ /* We store the file in one long byte string. Each name is followed by a zero byte and then a binary byte containing its number. */ *anchor = mem_get(length+1); p = *anchor; rewind(f); while (Ufgets(line, 60, f) != NULL) { line[Ustrlen(line)-1] = 0; if (!isdigit(line[0])) continue; Ustrcpy(p, line+4); p += Ustrlen(p) + 1; *p++ = Uatoi(line); } /* An empty name marks the end of the list */ *p = 0; fclose(f); } /************************************************* * Give help * *************************************************/ #define PF(x) (void)printf(x) static void givehelp(void) { const char *b2pf, *pmwrc; #if defined SUPPORT_B2PF && SUPPORT_B2PF != 0 b2pf = "yes"; #else b2pf = "no"; #endif #if !defined NO_PMWRC || NO_PMWRC == 0 pmwrc = "yes"; #else pmwrc = "no"; #endif (void)printf("PMW version %s\n%s\n\n", PMW_VERSION, COPYRIGHT); (void)printf("B2PF support: %s\n", b2pf); (void)printf("~/.pmwrc support: %s\n", pmwrc); PF("\nOPTIONS\n\n"); PF("-a4ona3 print A4 images 2-up on A3\n"); PF("-a5ona4 print A5 images 2-up on A4\n"); PF("-a4sideways assume A4 paper fed sideways\n"); PF("-C show a compile-time option; exit with its value (0 or 1).\n"); PF(" b2pf support for B2PF processing\n"); PF(" musicxml support for MusicXML input\n"); PF("-c set number of copies\n"); PF("-d write debugging info to stderr\n"); PF("-dbd ,, write debugging bar data (movement, stave, bar) \n"); PF("-dbl synonym for -drawbarlines\n"); PF("-drawbarlines don't use characters for bar lines\n"); PF("-drawstavelines [] don't use characters for stave lines\n"); PF("-dsl [] synonym for -drawstavelines\n"); PF("-dtp write debugging position data (-1 for all bars)\n"); PF("-duplex set duplex printing in the PostScript\n"); PF("-em synonym for -errormaximum\n"); PF("-eps output encapsulated PostScript\n"); PF("-errormaximum set maximum number of errors (for testing)\n"); PF("-F specify fontmetrics and/or .utr directories\n"); PF("-f specify format name\n"); PF("-H specify PostScript header file\n"); PF("-help output this information\n"); PF("-incPMWfont include PMW font in the output\n"); PF("-ipf synonym for -incPMWfont\n"); PF("-MF specify PostScript music fonts directories\n"); PF("-MP specify MIDIperc file\n"); PF("-MV specify MIDIvoices file\n"); PF("-manualfeed set manualfeed in the PostScript\n"); PF("-mb synonym for -midibars\n"); PF("-midi specify MIDI output file\n"); PF("-midibars limit MIDI output to given bar range\n"); PF("-midimovement specifies movement for MIDI output\n"); PF("-mm synonym for -midimovement\n"); PF("-noid don't show version number for error output\n"); #if !defined NO_PMWRC || NO_PMWRC == 0 PF("-norc or -nopmwrc don't read .pmwrc (must be first option)\n"); #endif PF("-norepeats do not play repeats in MIDI output\n"); PF("-nowidechars don't use 100-point stave chars\n"); PF("-nr synonym for -norepeats\n"); PF("-nw synonym for -nowidechars\n"); PF("-o specify output file ('-' for stdout)\n"); PF("-p select pages\n"); PF("-pamphlet print pages in pamphlet order\n"); PF("-printadjust move on page by (x,y)\n"); PF("-printgutter move recto/verso pages by x/-x\n"); PF("-printscale scale the image by n\n"); PF("-printside print only odd or even sides\n"); PF("-reverse output pages in reverse order\n"); PF("-SM specify standard macros directory\n"); PF("-s select staves\n"); PF("-t set transposition\n"); PF("-testing run in testing mode\n"); PF("-tumble set tumble for duplex printing\n"); PF("-V output PMW version number\n"); PF("-v output verification information\n"); PF("\nDebug options (+ to add, - to subtract):"); for (long unsigned int i = 0; i < DEBUG_OPTIONS_COUNT; i++) { if ((i & 7) == 0) PF("\n "); (void)printf(" %s", debug_options[i].name); } PF("\n"); PF("\nDefault output is .ps when a file name is given.\n"); PF("Default output is stdout if no file name is given.\n"); PF("\nEXAMPLES\n\n"); PF("pmw myscore\n"); PF("pmw -s 1,2-4 -p 3,6-10,11 -f small -c 2 k491.pmw\n"); PF("pmw -pamphlet -a5ona4 scorefile\n"); PF("pmw -s 1 -midi zz.mid -mm 2 -mb 10-20 sonata\n"); } /************************************************* * Decode command line * *************************************************/ /* -V and -help act immediately; otherwise the values from the command line options are placed in appropriate variables. Arguments: argc the (possibly modified) command line argc argv the (possibly modified) command line argv Returns: nothing; errors are hard */ static void decode_command(int argc, char **argv) { arg_result results[MAX_COMMANDARGS]; int rc = rdargs(argc, argv, arg_pattern, results, MAX_COMMANDARGS); if (rc != 0) { if (results[0].text == NULL) error(ERR28, "", "", "", results[1].text); /* Hard */ else error(ERR28, "\"", results[0].text, "\" ", results[1].text); /* Hard */ } /* -norc is invalid here. It must be the first option and if present is handled earlier. Give an explanation. */ if (results[arg_norc].number != 0) error(ERR29); /* Hard */ /* Deal with -V */ if (results[arg_V].number != 0) { printf("PMW version %s\n%s\n", PMW_VERSION, COPYRIGHT); exit(EXIT_SUCCESS); } /* Deal with -C */ if (results[arg_C].text != NULL) { if (strcmp(results[arg_C].text, "b2pf") == 0) { printf("%d\n", SUPPORT_B2PF); exit(SUPPORT_B2PF); } if (strcmp(results[arg_C].text, "musicxml") == 0) { printf("%d\n", SUPPORT_XML); exit(SUPPORT_XML); } printf("** Unknown -C option '%s'\n", results[arg_C].text); exit(EXIT_FAILURE); } /* Deal with -help */ if (results[arg_help].number != 0) { givehelp(); exit(EXIT_SUCCESS); } /* Deal with verifying and debugging */ if (results[arg_v].number != 0) { (void)eprintf( "PMW version %s\n", PMW_VERSION); main_showid = FALSE; main_verify = TRUE; } if (results[arg_testing].number != 0) { main_testing = TRUE; main_showid = FALSE; } if (results[arg_d].text != NULL) { debug_selector |= D_any; decode_debug(results[arg_d].text + 2); /* Any errors are hard */ } if (results[arg_dbd].text != NULL) { if (strspn(results[arg_dbd].text, "0123456789,") != strlen(results[arg_dbd].text)) error(ERR77); /* Hard */ switch (sscanf(results[arg_dbd].text, "%d,%d,%d", &dbd_movement, &dbd_stave, &dbd_bar)) { case 1: /* One value is a bar number */ dbd_bar = dbd_movement; dbd_movement = dbd_stave = 1; break; case 2: /* Two values are stave, bar */ dbd_bar = dbd_stave; dbd_stave = dbd_movement; dbd_movement = 1; break; case 3: /* Three values are movt, stave, bar */ break; default: error(ERR162); /* Hard */ break; } debug_selector |= D_bar; } if (results[arg_dtp].presence != arg_present_not) main_tracepos = (results[arg_dtp].number < 0)? INT32_MAX : (uint32_t)(results[arg_dtp].number); /* Deal with -from and -o */ if (results[arg_aa_input].text != NULL) main_filename = US results[arg_aa_input].text; if (results[arg_o].text != NULL) out_filename = US results[arg_o].text; /* Deal with overriding music fonts, fontmetrics, and psheader, MIDIperc, MIDIvoices, and StdMacs files */ if (results[arg_F].text != NULL) font_data_extra = US results[arg_F].text; if (results[arg_H].text != NULL) ps_header = CUS results[arg_H].text; if (results[arg_MF].text != NULL) font_music_extra = US results[arg_MF].text; if (results[arg_MP].text != NULL) midi_perc = US results[arg_MP].text; if (results[arg_MV].text != NULL) midi_voices = US results[arg_MV].text; if (results[arg_SM].text != NULL) stdmacs_dir = US results[arg_SM].text; /* Deal with MIDI output */ if (results[arg_midi].text != NULL) midi_filename = US results[arg_midi].text; if (results[arg_midibars].text != NULL) { uschar *endptr; midi_startbar = Ustrtoul(results[arg_midibars].text, &endptr, 10) << 16; if (*endptr == 0) midi_endbar = midi_startbar; else { if (*endptr == '.') midi_startbar |= Ustrtoul(endptr+1, &endptr, 10); if (*endptr == 0) midi_endbar = midi_startbar; else { if (*endptr != '-') error(ERR158); /* Hard */ midi_endbar = Ustrtoul(endptr+1, &endptr, 10) << 16; if (*endptr == '.') midi_endbar |= Ustrtoul(endptr+1, &endptr, 10); if (*endptr != 0) error(ERR158); /* Hard */ } } } if (results[arg_midimovement].presence != arg_present_not) midi_movement = results[arg_midimovement].number; /* Error limit is adjustable, mainly for testing */ if (results[arg_em].presence != arg_present_not) error_maximum = results[arg_em].number; /* Some BOOL options */ if (results[arg_nowidechars].number != 0) stave_use_widechars = FALSE; if (results[arg_drawbarlines].number != 0) bar_use_draw = TRUE; if (results[arg_norepeats].number != 0) midi_repeats = FALSE; /* Draw stave lines instead of using font characters: the thickness can optionally be altered. */ if (results[arg_drawstavelines].presence != arg_present_not) stave_use_draw = results[arg_drawstavelines].number; /* Deal with stave selection */ if (results[arg_s].text != NULL) { uschar *endptr; (void)read_stavelist(US results[arg_s].text, &endptr, &main_selectedstaves, NULL); main_selectedstaves |= 1; /* Stave 0 is always selected */ if (*endptr != 0) error(ERR30, "stave"); /* Hard error */ } /* Deal with page selection */ if (results[arg_p].text != NULL) { uschar *endptr; int errnum = read_stavelist((uschar *)(results[arg_p].text), &endptr, NULL, &print_pagelist); if (errnum != 0) { error_inoption = "-p"; error(errnum); } else if (*endptr != 0) error(ERR30, "page"); /* Hard error */ } /* Deal with transposition */ if (results[arg_t].presence != arg_present_not) { main_transpose = results[arg_t].number; if (abs(main_transpose) > MAX_TRANSPOSE) error(ERR64, "", main_transpose, MAX_TRANSPOSE); /* Hard error */ main_transpose *= 2; /* Convert semitones into quarter tones */ active_transpose = main_transpose; } /* Deal with format */ if (results[arg_f].text != NULL) main_format = mem_copystring(US results[arg_f].text); /* Deal with copies */ if (results[arg_c].presence != arg_present_not) print_copies = results[arg_c].number; /* Deal with a number of printing configuration options */ if (results[arg_reverse].number != 0) print_reverse = TRUE; if (results[arg_a4sideways].number != 0) print_pagefeed = pc_a4sideways; if (results[arg_a4ona3].number != 0) print_imposition = pc_a4ona3; if (results[arg_a5ona4].number != 0) print_imposition = pc_a5ona4; if (results[arg_pamphlet].number != 0) print_pamphlet = TRUE; if (results[arg_eps].number != 0) print_imposition = pc_EPS; if (results[arg_incPMWfont].number != 0) print_incPMWfont = TRUE; if (results[arg_manualfeed].number != 0) print_manualfeed = TRUE; if (results[arg_duplex].number != 0) print_duplex = TRUE; if (results[arg_tumble].number != 0) print_tumble = TRUE; if (results[arg_printadjustx].text != NULL) { float d; sscanf(results[arg_printadjustx].text, "%g", &d); print_image_xadjust = (int)(1000.0 * d); } if (results[arg_printadjusty].text != NULL) { float d; sscanf(results[arg_printadjusty].text, "%g", &d); print_image_yadjust = (int)(1000.0 * d); } if (results[arg_printgutter].text != NULL) { float d; sscanf(results[arg_printgutter].text, "%g", &d); print_gutter = (int)(1000.0 * d); } if (results[arg_printscale].text != NULL) { float d; sscanf(results[arg_printscale].text, "%g", &d); print_magnification = (int)(1000.0 * d); if (print_magnification == 0) error(ERR140); /* Hard */ } if (results[arg_printside].presence != arg_present_not) { int n = results[arg_printside].number; if (n == 1) print_side2 = FALSE; else if (n == 2) print_side1 = FALSE; else error(ERR141); /* Hard */ } } /************************************************* * Command line initialization * *************************************************/ /* This is called before argument decoding is done. It is passed the argument list, and it has the opportunity of modifying that list as it copies it into a new vector. Unless configured otherwise, we search for a .pmwrc file and stuff it on the front of the arguments. Arguments: argv argv from main() nargv where to return the possibly modified argv Returns: new argc value */ static int init_command(char **argv, char **nargv) { int ap = 0; int nargc = 0; nargv[nargc++] = argv[ap++]; /* Program name */ if (argv[1] != NULL && strcmp(argv[1], "-norc") == 0) { (void)arg_pattern; /* Not used on this path */ ap++; /* Skip over -norc if it's first; don't read the file */ } /* Processing ~/.pmwrc needs to be cut out on non-Unix-like systems. If -norc is given, it doesn't matter because that's what is happening by default. */ #if !defined NO_PMWRC || NO_PMWRC == 0 else { struct passwd *pw = getpwuid(geteuid()); if (pw != NULL) { uschar buff[256]; struct stat statbuf; Ustrcpy(buff, pw->pw_dir); Ustrcat(buff, "/.pmwrc"); if (stat(CS buff, &statbuf) == 0) { arg_result results[64]; FILE *f = Ufopen(buff, "r"); /* Failure to open a file that statted OK is a hard error */ if (f == NULL) error(ERR23, buff, strerror(errno)); /* Add items from the file */ while (fgets(CS buff, sizeof(buff), f) != NULL) { uschar *p = buff; while (isspace(*p)) p++; while (*p != 0) { uschar *pp = p; while (*p != 0 && !isspace(*p)) p++; nargv[nargc] = mem_get(p - pp + 1); Ustrncpy(nargv[nargc], pp, p - pp); nargv[nargc++][p-pp] = 0; while (isspace(*p)) p++; } } fclose(f); /* Check that what we have obtained from the .pmwrc file is a complete set of options; we don't want to end up with one that expects a data value, because that would subvert the argument on the real command line, possibly doing damage. */ if (rdargs(nargc, nargv, arg_pattern, results, MAX_COMMANDARGS) != 0) error(ERR26, results[0].text, results[1].text); /* Hard */ } /* stat() problem other than file not found is serious */ else if (errno != ENOENT) error(ERR27, buff, strerror(errno)); /* Hard */ } } #endif /* NO_PMWRC */ /* Copy the remaining stuff from the original command line, add the terminating NULL argument, and return the new count. */ while (argv[ap] != NULL) nargv[nargc++] = argv[ap++]; nargv[nargc] = NULL; return nargc; } /************************************************* * Initialize * *************************************************/ /* Sets up memory management, certain buffers etc. Arguments: none Returns: TRUE if all went well */ static BOOL initialize(void) { usint i; TRACE("Initialize\n"); /* Input buffers can expand if necessary. */ main_readbuffer = malloc(main_readbuffer_size); main_readbuffer_previous = malloc(main_readbuffer_size); main_readbuffer_raw = malloc(main_readbuffer_size); if (main_readbuffer == NULL || main_readbuffer_previous == NULL || main_readbuffer_raw == NULL) error(ERR0, "", "initial line buffers", main_readbuffer_size); /* Hard */ main_readbuffer[0] = main_readbuffer_previous[0] = 0; /* So can macro argument buffers */ for (i = 0; i < MAX_MACRODEPTH; i++) { main_argbuffer[i] = NULL; main_argbuffer_size[i] = 0; } /* Get fixed-size memory blocks */ read_baraccs = mem_get(BARACCS_LEN * sizeof(int8_t)); read_baraccs_tp = mem_get(BARACCS_LEN * sizeof(int8_t)); read_beamstack = mem_get(BEAMSTACKSIZE * sizeof(b_notestr **)); read_stemstack = mem_get(STEMSTACKSIZE * sizeof(b_notestr **)); /* Set up the default fonts */ font_addfont(US"Times-Roman", font_rm, 0); font_addfont(US"Times-Italic", font_it, 0); font_addfont(US"Times-Bold", font_bf, 0); font_addfont(US"Times-BoldItalic", font_bi, 0); font_addfont(US"Symbol", font_sy, 0); font_addfont(US"PMW-Music", font_mf, 0); /* Initialize MIDI data */ midi_translate(&midi_voicenames, midi_voices); midi_translate(&midi_percnames, midi_perc); /* Initialize for B2PF if supported */ #if defined SUPPORT_B2PF && SUPPORT_B2PF != 0 font_b2pf_contexts = mem_get(font_tablen * sizeof(b2pf_context *)); font_b2pf_options = mem_get(font_tablen * sizeof(uint32_t)); for (i = 0; i < font_tablen; i++) { font_b2pf_contexts[i] = NULL; font_b2pf_options[i] = 0; } #endif return TRUE; } /************************************************* * Exit tidy-up function * *************************************************/ /* Automatically called for any exit. Close the input file if it is open, then free the extensible buffers and other memory. Arguments: none Returns: nothing */ static void tidy_up(void) { usint i; if (read_filehandle != NULL) fclose(read_filehandle); free(font_list); #if defined SUPPORT_B2PF && SUPPORT_B2PF != 0 if (font_b2pf_contexts != NULL) { for (i = 0; i < font_tablen; i++) if (font_b2pf_contexts[i] != NULL) b2pf_context_free(font_b2pf_contexts[i]); } #endif free(main_readbuffer_raw); free(main_readbuffer_previous); free(main_readbuffer); free(out_textqueue); free(read_stringbuffer); /* A NULL pointer marks the end of the macro argument expansion buffers. */ for (i = 0; i < MAX_MACRODEPTH; i++) if (main_argbuffer[i] != NULL) free(main_argbuffer[i]); else break; /* Free expandable vectors in all movements, then the movements vector. */ for (i = 0; i < movement_count; i++) { curmovt = movements[i]; free(curmovt->barvector); if (MFLAG(mf_midistart)) free(curmovt->midistart); for (int j = 0; j <= curmovt->lastreadstave; j++) if (curmovt->stavetable[j] != NULL) free(curmovt->stavetable[j]->barindex); } free(movements); /* An expandable XML buffer */ #if SUPPORT_XML free(xml_layout_list); #endif /* Free the non-expandable memory blocks */ mem_free(); } /************************************************* * Entry point * *************************************************/ /* The command line arguments can be modified by the contents of the user's .pmwrc file, unless -norc is given first. This is handled in the init_command() function, which hands back a possibly modified set of arguments. All errors detected in init_command() and decode_command() are hard. */ int main(int argc, char **argv) { (void) argc; if (atexit(tidy_up) != 0) error(ERR25); /* Hard */ newargv = mem_get(MAX_COMMANDARGS * sizeof(char *)); decode_command(init_command(argv, newargv), newargv); if (!initialize()) exit(EXIT_FAILURE); /* If there is a file name, open it. If no output file is specified, default it to the input name with a .ps extension. */ if (main_filename != NULL) { read_filehandle = Ufopen(main_filename, "r"); if (read_filehandle == NULL) error(ERR23, main_filename, strerror(errno)); /* Hard */ read_filename = main_filename; if (out_filename == NULL) { uschar *p, *q; size_t len = Ustrlen(main_filename); out_filename = mem_get(len + 4); Ustrcpy(out_filename, main_filename); if ((p = Ustrrchr(out_filename, '.')) != NULL && ((q = Ustrrchr(out_filename, '/')) == NULL || q < p)) len = p - out_filename; Ustrcpy(out_filename + len, ".ps"); } } else { read_filehandle = stdin; read_filename = US ""; } /* Read the input file */ main_state = STATE_READ; if (main_verify) eprintf( "Reading...\n"); read_file(FT_AUTO); main_truepagelength = main_pagelength; /* Save unscaled value */ /* Give up if no data was supplied */ if (movements == NULL) { eprintf("** No input data supplied\n"); main_suppress_output = TRUE; } /* If all went well, set up the working continuation vector and do the pagination. */ if (!main_suppress_output) { main_state = STATE_PAGINATE; wk_cont = mem_get_independent((main_maxstave+1)*sizeof(contstr)); if (main_verify) eprintf( "Paginating...\n"); paginate(); } /* Give up after a serious error. */ if (main_suppress_output) { eprintf( "** No output generated\n"); return(EXIT_FAILURE); } /* Show pagination information if verifying */ if (main_verify) display_info(); /* If a file name other than "-" is set for the output, open it. Otherwise we'll be writing to stdout. */ if (out_filename != NULL && Ustrcmp(out_filename, "-") != 0) { if (main_verify) eprintf( "\nWriting PostScript file \"%s\"...\n", out_filename); ps_file = Ufopen(out_filename, "w"); if (ps_file == NULL) error(ERR23, out_filename, strerror(errno)); /* Hard error */ } else { ps_file = stdout; if (main_verify) eprintf( "\nWriting Postscript to stdout...\n"); } /* Set up for printing, and go for it */ print_lastpagenumber = main_lastpagenumber; if (print_pamphlet) print_lastpagenumber = (print_lastpagenumber + 3) & (-4); /* This diagram shows the computed values and the positions where the origin can go in each case. In practice we take the upper value where there are two possibilities. ------------ Sideways ------------- | ------------ Upright ----------- ----- 1-up ----- ----- 2-up ----- | ---- 1-up ---- ---- 2-up ---- Port Land Port Land | Port Land Port Land x------ ------- ------- ---x--- | ----- x---- x---- ----- | 0 | | 4 | | 2 | | 6 | | | | | | | | | | ------x x------ x------ ---x--- | | 1 | | 5 | | 3 | x 7 | | | | | | | | | | | x---- ----- ----x ----- */ print_pageorigin = ((print_pagefeed == pc_a4sideways)? 0 : 1) + ((print_imposition == pc_normal)? 0 : 2) + (main_landscape? 4 : 0); main_state = STATE_WRITE; ps_go(); if (ps_file != stdout) fclose(ps_file); main_state = STATE_ENDING; /* Output warning if coupled staves were not spaced by a multiple of 4 */ if (main_error_136) error(ERR136); /* Write MIDI output if required */ if (midi_filename != NULL) { if (main_verify) eprintf("Writing MIDI file \"%s\"...\n", midi_filename); midi_write(); } if (main_verify) eprintf( "PMW done\n"); else TRACE("Done\n"); DEBUG(D_memory) debug_memory_usage(); exit(EXIT_SUCCESS); } /* End of main.c */ pmw-5.22/src/globals.h0000644000222100022210000003031714541067540012730 0ustar ph10ph10/************************************************* * PMW global variable definitions * *************************************************/ /* Copyright Philip Hazel 2021 */ /* This file created: December 2020 */ /* This file last modified: July 2023 */ /************************************************* * Tables in tables.c * *************************************************/ extern accent accent_chars[]; extern const char *clef_names[]; extern uint32_t default_hyphen[]; extern movtstr default_movtstr; extern uschar * font_IdStrings[]; extern breadstr init_breadstr; extern snamestr init_snamestr; extern sreadstr init_sreadstr; extern stavestr init_stavestr; extern uint8_t keyclefadjusts[]; extern uint8_t keysigtable[][MAX_KEYACCS+1]; extern b_accentmovestr no_accent_move; extern mfstr *out_mftable[]; /* Music font table */ extern uint16_t pitch_clef[]; extern uint16_t pitch_stave[]; extern uint32_t rbra_left[]; extern int8_t read_accpitch[]; extern uint8_t read_basicpitch[]; extern uint32_t read_headingsizes[]; extern uint32_t sbra_left[]; extern usint sheets_count; extern sheetstr sheets_list[]; extern int32_t stave_bottoms[]; extern int32_t stave_tops[]; extern const usint utf8_table1[]; /* Various tables for UTF-8 processing */ extern const int utf8_table2[]; extern const int utf8_table3[]; extern const uschar utf8_table4[]; /************************************************* * Variables in globals.c * *************************************************/ extern int32_t active_transpose; extern int32_t active_transpose_letter; extern BOOL active_transpose_letter_is_auto; extern BOOL active_transposedaccforce; extern uint8_t barlinestyles[]; extern contstr *bar_cont; extern BOOL bar_use_draw; extern int beam_accrit; extern BOOL beam_continued; extern int beam_count; extern b_notestr *beam_first; extern int32_t beam_firstmoff; extern uint16_t beam_firstpitch; extern int32_t beam_firstX; extern int32_t beam_firstY; extern int32_t beam_forceslope; extern b_notestr *beam_last; extern int32_t beam_lastmoff; extern int32_t beam_offset; extern int32_t beam_offsetadjust; extern BOOL beam_overbeam; extern int beam_seq; extern int32_t beam_slope; extern BOOL beam_splitOK; extern int8_t beam_stemadjusts[]; extern BOOL beam_upflag; extern int32_t beam_Xcorrection; extern breadstr brs; extern int32_t curbarnumber; extern movtstr *curmovt; extern pagestr *curpage; extern int32_t curstave; extern int dbd_bar; extern int dbd_movement; extern int dbd_stave; extern uint32_t debug_selector; extern int32_t draw_gap; extern int32_t draw_lgx; extern int32_t draw_lgy; extern int32_t draw_ox; extern int32_t draw_oy; extern int32_t draw_thickness; extern tree_node *draw_tree; extern tree_node *draw_variable_tree; extern const char *error_inoption; extern usint error_maximum; #if defined SUPPORT_B2PF && SUPPORT_B2PF != 0 extern b2pf_context **font_b2pf_contexts; extern uint32_t *font_b2pf_options; #endif extern int32_t font_cosr; /* Cosine for rotations */ extern uint32_t font_count; /* Number of typefaces */ extern uschar *font_data_default; /* For AFM files, etc */ extern uschar *font_data_extra; /* -F argument */ extern fontstr *font_list; /* List of typefaces */ extern size_t font_list_size; extern uschar *font_music_default; extern uschar *font_music_extra; extern int32_t font_sinr; /* Sine for rotations */ extern uint32_t font_table[]; /* Fonts by type, e.g. font_rm */ extern BOOL macro_expanding; extern size_t macro_in; extern tree_node *macro_tree; extern uschar *main_argbuffer[]; extern size_t main_argbuffer_size[]; extern BOOL main_error_136; extern uschar *main_filename; extern uschar *main_format; extern BOOL main_format_tested; extern gapstr *main_freegapblocks; extern hairpinstr *main_freehairpinstr; extern nbarstr *main_freenbarblocks; extern obeamstr *main_freeobeamstr; extern overdrawstr *main_freeoverdrawstr; extern slurstr *main_freeslurblocks; extern uolaystr *main_freeuolayblocks; extern contstr *main_freezerocontblocks; extern htypestr *main_htypes; extern BOOL main_kerning; extern keytransstr *main_keytranspose; extern BOOL main_landscape; extern uint32_t main_lastpagenumber; extern uint32_t main_magnification; extern int32_t main_maxstave; extern int32_t main_maxvertjustify; extern BOOL main_midifornotesoff; extern b_ornamentstr *main_nextnoteornament; extern pagestr *main_pageanchor; extern int32_t main_pagelength; extern pkeystr *main_printkey; extern ptimestr *main_printtime; extern uschar *main_readbuffer; extern uschar *main_readbuffer_raw; extern uschar *main_readbuffer_previous; extern size_t main_readbuffer_size; extern size_t main_readbuffer_threshold; extern size_t main_readlength; extern BOOL main_righttoleft; extern uint64_t main_selectedstaves; extern uint32_t main_sheetdepth; extern uint32_t main_sheetsize; extern uint32_t main_sheetwidth; extern BOOL main_showid; extern int main_state; extern BOOL main_suppress_output; extern BOOL main_testing; extern int32_t main_tracepos; extern int32_t main_transpose; extern BOOL main_transposedaccforce; extern trkeystr *main_transposedkeys; extern int32_t main_truepagelength; extern BOOL main_verify; extern uint32_t midi_endbar; extern uschar *midi_filename; extern int midi_movement; extern uschar *midi_perc; extern uschar *midi_percnames; extern BOOL midi_repeats; extern uint32_t midi_startbar; extern uschar *midi_voicenames; extern uschar *midi_voices; extern usint movement_count; extern movtstr **movements; extern size_t movements_size; extern uint8_t n_acc; extern uint32_t n_acflags; extern int32_t n_accleft; extern BOOL n_beamed; extern uint32_t n_chordacflags; extern int n_chordcount; extern b_notestr *n_chordfirst; extern uint32_t n_chordflags; extern int32_t n_cueadjust; extern int32_t n_dotxadjust; extern uint8_t n_firstacc; extern uint32_t n_flags; extern int32_t n_fontsize; extern int n_gracecount; extern int32_t n_gracemoff; extern BOOL n_invertleft; extern BOOL n_invertright; extern uint8_t n_lastacc; extern b_notestr *n_lastnote; extern uint32_t n_length; extern int32_t n_longrestmid; extern uint8_t n_masq; extern int32_t n_maxaccleft; extern uint16_t n_maxpitch; extern uint16_t n_minpitch; extern b_tiestr *n_nexttie; extern BOOL n_nhtied; extern uint8_t n_noteheadstyle; extern int n_notetype; extern b_ornamentstr *n_ornament; extern int32_t n_pcorrection; extern uint16_t n_pitch; extern b_tiestr *n_prevtie; extern int32_t n_restlevel; extern BOOL n_smallhead; extern int32_t n_stemlength; extern int n_upfactor; extern BOOL n_upflag; extern int32_t n_x; extern b_accentmovestr *out_accentmove[]; extern int32_t out_barlinemagn; extern int32_t out_barlinex; extern int32_t out_barx; extern int32_t out_bbox[]; extern BOOL out_beaming; extern int32_t out_botstave; extern int32_t out_downgap; extern int32_t out_dashgaplength; extern int32_t out_dashlength; extern b_drawstr **out_drawqueue ; extern size_t out_drawqueue_ptr; extern size_t out_drawqueue_size; extern int out_drawstackptr; extern uschar *out_filename; extern int32_t out_gracefudge; extern BOOL out_gracenotes; extern BOOL out_hairpinhalf; extern int out_keycount; extern int32_t out_lastbarlinex; extern BOOL out_lastbarwide; extern int32_t out_lastmoff; extern BOOL out_lastnotebeamed; extern int32_t out_lastnotex; extern int out_laststave; extern CBOOL out_laststemup[]; extern BOOL out_lineendflag; extern int out_manyrest; extern int32_t out_moff; extern overdrawstr *out_overdraw; extern BOOL out_passedreset; extern int32_t out_pitchmagn; extern b_pletstr *out_plet; extern int out_pletden; extern int out_pletnum; extern int32_t out_plet_highest; extern int out_plet_highest_head; extern int32_t out_plet_lowest; extern int32_t out_plet_x; extern posstr *out_poslast; extern posstr *out_posptr; extern posstr *out_postable; extern BOOL out_repeatonbarline; extern BOOL out_startlinebar; extern int32_t out_slurclx; extern int32_t out_slurcly; extern int32_t out_slurcrx; extern int32_t out_slurcry; extern BOOL out_slurstarted; extern int32_t out_stavebottom; extern int32_t out_stavemagn; extern uint8_t out_stavelines; extern int32_t out_stavetop; extern int32_t out_string_endx; extern int32_t out_string_endy; extern sysblock *out_sysblock; extern int out_textnextabove; extern int out_textnextbelow; extern b_textstr **out_textqueue; extern size_t out_textqueue_ptr; extern size_t out_textqueue_size; extern int out_timecount; extern int32_t out_topstave; extern b_tremolostr *out_tremolo; extern BOOL out_tremupflag; extern int32_t out_tremx; extern int32_t out_tremy; extern int32_t out_upgap; extern int32_t out_Xadjustment; extern int32_t out_Yadjustment; extern int32_t out_ybarend; extern int32_t out_ybarenddeep; extern int32_t out_yposition; extern int32_t out_ystave; extern uint32_t page_firstnumber; extern uint32_t page_increment; extern movtstr *premovt; extern int print_copies; extern BOOL print_duplex; extern int32_t print_gutter; extern int32_t print_image_xadjust; extern int32_t print_image_yadjust; extern uint8_t print_imposition; extern BOOL print_incPMWfont; extern uint32_t print_lastpagenumber; extern int32_t print_magnification; extern BOOL print_manualfeed; extern uint8_t print_pagefeed; extern stavelist *print_pagelist; extern uint8_t print_pageorigin; extern BOOL print_pamphlet; extern BOOL print_reverse; extern int32_t print_sheetwidth; extern BOOL print_side1; extern BOOL print_side2; extern BOOL print_tumble; extern int32_t print_xmargin; extern FILE *ps_file; extern const uschar *ps_header; extern BOOL pmw_reading_stave; extern uint32_t read_absnotespacing[]; extern int8_t *read_baraccs; extern int8_t *read_baraccs_tp; extern b_notestr **read_beamstack; extern uint32_t read_c; extern FILE *read_filehandle; extern uschar *read_filename; extern filestackstr read_filestack[]; extern usint read_filestackptr; extern uint32_t read_headmap; extern size_t read_i; extern uint32_t read_invalid_unicode[]; extern bstr *read_lastitem; extern usint read_linenumber; extern usint read_nextheadsize; extern usint read_okdepth; extern usint read_skipdepth; extern b_notestr **read_stemstack; extern uschar *read_stringbuffer; extern size_t read_stringbuffer_size; extern tiedata read_tiedata[]; extern int32_t read_uinvnext; extern BOOL read_uinvoverflow; extern uint32_t read_unsupported_unicode[]; extern int32_t read_uunext; extern BOOL read_uuoverflow; extern uschar read_wordbuffer[]; extern sreadstr srs; extern stavestr *st; extern int stave_use_draw; extern BOOL stave_use_widechars; extern uschar *stdmacs_dir; extern contstr *wk_cont; /* End of globals.h */ pmw-5.22/src/globals.c0000644000222100022210000002361114541067540012722 0ustar ph10ph10/************************************************* * PMW global variable instantiations * *************************************************/ /* Copyright Philip Hazel 2021 */ /* This file created: December 2020 */ /* This file last modified: July 2023 */ #include "pmw.h" int32_t active_transpose = NO_TRANSPOSE; int32_t active_transpose_letter = 0; BOOL active_transpose_letter_is_auto = FALSE; BOOL active_transposedaccforce = FALSE; uint8_t barlinestyles[MAX_STAVE+1]; contstr *bar_cont; BOOL bar_use_draw = FALSE; int beam_accrit; BOOL beam_continued; int beam_count; b_notestr *beam_first; int32_t beam_firstmoff; uint16_t beam_firstpitch; int32_t beam_firstX; int32_t beam_firstY; int32_t beam_forceslope = INT32_MAX; b_notestr *beam_last; int32_t beam_lastmoff; int32_t beam_offset; int32_t beam_offsetadjust; BOOL beam_overbeam = FALSE; int beam_seq; int32_t beam_slope; BOOL beam_splitOK; int8_t beam_stemadjusts[MAX_BEAMNOTES]; BOOL beam_upflag; int32_t beam_Xcorrection; breadstr brs; int32_t curbarnumber; movtstr *curmovt = NULL; pagestr *curpage = NULL; int32_t curstave; int dbd_bar = -1; int dbd_movement = -1; int dbd_stave = -1; uint32_t debug_selector = 0; int32_t draw_gap = 0; int32_t draw_lgx = 0; int32_t draw_lgy = 0; int32_t draw_ox; int32_t draw_oy; int32_t draw_thickness = 500; tree_node *draw_tree = NULL; tree_node *draw_variable_tree = NULL; usint error_maximum = DEFAULT_ERROR_MAXIMUM; const char *error_inoption = NULL; #if defined SUPPORT_B2PF && SUPPORT_B2PF != 0 b2pf_context **font_b2pf_contexts = NULL; uint32_t *font_b2pf_options = NULL; #endif int32_t font_cosr = 1000; uint32_t font_count = 0; uschar *font_data_default = US FONTMETRICS; uschar *font_data_extra = NULL; fontstr *font_list = NULL; size_t font_list_size = 0; uschar *font_music_default = US FONTDIR; uschar *font_music_extra = NULL; int32_t font_sinr = 0; uint32_t font_table[font_tablen]; int32_t font_transform[6]; BOOL macro_expanding = FALSE; size_t macro_in = 0; tree_node *macro_tree = NULL; uschar *main_argbuffer[MAX_MACRODEPTH] = { NULL }; size_t main_argbuffer_size[MAX_MACRODEPTH]; BOOL main_error_136 = FALSE; uschar *main_filename = NULL; uschar *main_format = NULL; BOOL main_format_tested = FALSE; gapstr *main_freegapblocks = NULL; hairpinstr *main_freehairpinstr = NULL; nbarstr *main_freenbarblocks = NULL; obeamstr *main_freeobeamstr = NULL; overdrawstr *main_freeoverdrawstr = NULL; slurstr *main_freeslurblocks = NULL; uolaystr *main_freeuolayblocks = NULL; contstr *main_freezerocontblocks = NULL; htypestr *main_htypes = NULL; BOOL main_kerning = TRUE; keytransstr *main_keytranspose = NULL; BOOL main_landscape = FALSE; uint32_t main_lastpagenumber = 0; uint32_t main_magnification = 1000; int32_t main_maxstave = -1; int32_t main_maxvertjustify = 60000; BOOL main_midifornotesoff = FALSE; b_ornamentstr *main_nextnoteornament = NULL; pagestr *main_pageanchor; int32_t main_pagelength = 720000; pkeystr *main_printkey = NULL; ptimestr *main_printtime = NULL; uschar *main_readbuffer = NULL; uschar *main_readbuffer_raw = NULL; uschar *main_readbuffer_previous = NULL; size_t main_readbuffer_size = MAIN_READBUFFER_CHUNKSIZE; size_t main_readbuffer_threshold = MAIN_READBUFFER_CHUNKSIZE - 2; size_t main_readlength = 0; BOOL main_righttoleft = FALSE; uint64_t main_selectedstaves = ~0uL; uint32_t main_sheetdepth = 842000; uint32_t main_sheetsize = sheet_A4; uint32_t main_sheetwidth = 595000; BOOL main_showid = TRUE; int main_state = STATE_INIT; BOOL main_suppress_output = FALSE; BOOL main_testing = FALSE; int32_t main_tracepos = INT32_MAX - 1; int32_t main_transpose = NO_TRANSPOSE; BOOL main_transposedaccforce = TRUE; trkeystr *main_transposedkeys = NULL; int32_t main_truepagelength = 0; BOOL main_verify = FALSE; uint32_t midi_endbar = UINT32_MAX; uschar *midi_filename = NULL; int midi_movement = 1; uschar *midi_perc = US MIDIPERC; uschar *midi_percnames = NULL; BOOL midi_repeats = TRUE; uint32_t midi_startbar = UINT32_MAX; uschar *midi_voicenames = NULL; uschar *midi_voices = US MIDIVOICES; usint movement_count = 0; movtstr **movements = NULL; size_t movements_size = 0; uint8_t n_acc; uint32_t n_acflags; int32_t n_accleft; BOOL n_beamed; uint32_t n_chordacflags; int n_chordcount; b_notestr *n_chordfirst; uint32_t n_chordflags; int32_t n_cueadjust; int32_t n_dotxadjust; uint8_t n_firstacc; uint32_t n_flags; int32_t n_fontsize; int n_gracecount; int32_t n_gracemoff; BOOL n_invertleft; BOOL n_invertright; uint8_t n_lastacc; b_notestr *n_lastnote; uint32_t n_length; int32_t n_longrestmid; uint8_t n_masq; int32_t n_maxaccleft; uint16_t n_maxpitch; uint16_t n_minpitch; b_tiestr *n_nexttie; BOOL n_nhtied; uint8_t n_noteheadstyle; int n_notetype; b_ornamentstr *n_ornament; int32_t n_pcorrection; uint16_t n_pitch; b_tiestr *n_prevtie; int32_t n_restlevel; BOOL n_smallhead; int32_t n_stemlength; int n_upfactor; BOOL n_upflag; int32_t n_x; b_accentmovestr *out_accentmove[ACCENT_COUNT]; int32_t out_barlinemagn; int32_t out_barlinex; int32_t out_barx; int32_t out_bbox[4]; BOOL out_beaming; int32_t out_botstave; int32_t out_dashgaplength; int32_t out_dashlength; int32_t out_downgap; b_drawstr **out_drawqueue = NULL; size_t out_drawqueue_ptr = 0; size_t out_drawqueue_size = 0; int out_drawstackptr; uschar *out_filename = NULL; int32_t out_gracefudge; BOOL out_gracenotes; BOOL out_hairpinhalf; int out_keycount; int32_t out_lastbarlinex; BOOL out_lastbarwide; int32_t out_lastmoff; BOOL out_lastnotebeamed; int32_t out_lastnotex; int out_laststave; CBOOL out_laststemup[MAX_STAVE+1]; BOOL out_lineendflag; int out_manyrest; int32_t out_moff; overdrawstr *out_overdraw = NULL; BOOL out_passedreset; int32_t out_pitchmagn; b_pletstr *out_plet; int out_pletden; int out_pletnum; int out_plet_highest; int out_plet_highest_head; int out_plet_lowest; int32_t out_plet_x; posstr *out_poslast; posstr *out_posptr; posstr *out_postable; BOOL out_repeatonbarline; int32_t out_slurclx = 0; int32_t out_slurcly = 0; int32_t out_slurcrx = 0; int32_t out_slurcry = 0; BOOL out_slurstarted = FALSE; BOOL out_startlinebar; int32_t out_stavebottom; uint8_t out_stavelines; int32_t out_stavemagn; int32_t out_stavetop; int32_t out_string_endx; int32_t out_string_endy; sysblock *out_sysblock; int out_textnextabove; int out_textnextbelow; b_textstr **out_textqueue = NULL; size_t out_textqueue_ptr = 0; size_t out_textqueue_size = 0; int out_timecount; int32_t out_topstave; b_tremolostr *out_tremolo; BOOL out_tremupflag; int32_t out_tremx; int32_t out_tremy; int32_t out_upgap; int32_t out_Xadjustment; int32_t out_Yadjustment; int32_t out_ybarend; int32_t out_ybarenddeep; int32_t out_yposition; int32_t out_ystave; uint32_t page_firstnumber = 1; uint32_t page_increment = 1; movtstr *premovt = NULL; int print_copies = 1; BOOL print_duplex = FALSE; int32_t print_gutter = 0; int32_t print_image_xadjust = 0; int32_t print_image_yadjust = 0; uint8_t print_imposition = pc_normal; BOOL print_incPMWfont = FALSE; uint32_t print_lastpagenumber = 0; int32_t print_magnification = 1000; BOOL print_manualfeed = FALSE; uint8_t print_pagefeed = pc_normal; stavelist *print_pagelist = NULL; uint8_t print_pageorigin; BOOL print_pamphlet = FALSE; BOOL print_reverse = FALSE; int32_t print_sheetwidth; BOOL print_side1 = TRUE; BOOL print_side2 = TRUE; BOOL print_tumble = FALSE; int32_t print_xmargin = 0; FILE *ps_file; const uschar *ps_header = CUS PSHEADER; BOOL pmw_reading_stave = FALSE; uint32_t read_absnotespacing[NOTETYPE_COUNT] = { 30000,30000,22000,16000,12000,10000,10000,10000 }; int8_t *read_baraccs; int8_t *read_baraccs_tp; b_notestr **read_beamstack; uint32_t read_c = 0; FILE *read_filehandle = NULL; uschar *read_filename = NULL; filestackstr read_filestack[MAX_INCLUDE]; usint read_filestackptr = 0; uint32_t read_headmap = 0; size_t read_i = 0; uint32_t read_invalid_unicode[UUSIZE]; bstr *read_lastitem = NULL; usint read_linenumber = 0; usint read_nextheadsize = 0; usint read_okdepth = 0; usint read_skipdepth = 0; b_notestr **read_stemstack; uschar *read_stringbuffer = NULL; size_t read_stringbuffer_size = 0; tiedata read_tiedata[MAX_CHORDSIZE]; int32_t read_uinvnext = 0; BOOL read_uinvoverflow = FALSE; uint32_t read_unsupported_unicode[UUSIZE]; int32_t read_uunext = 0; BOOL read_uuoverflow = FALSE; uschar read_wordbuffer[WORDBUFFER_SIZE]; sreadstr srs; stavestr *st = NULL; int stave_use_draw = 0; BOOL stave_use_widechars = TRUE; uschar *stdmacs_dir = US STDMACS; contstr *wk_cont; /* End of globals.c */ pmw-5.22/src/setslur.c0000644000222100022210000011744714541067540013013 0ustar ph10ph10/************************************************* * PMW code for setting slurs * *************************************************/ /* Copyright Philip Hazel 2021 */ /* This file created: July 2021 */ /* This file last modified: October 2023 */ #include "pmw.h" /************************************************* * Set up start of slur processing * *************************************************/ /* This is called when processing [slur], both while paginating and also while actually outputting. Active slurs are held on a chain; when the slur is complete, the block is added to a free chain so that it can be re-used. Argument: the slur start item Returns: the slur processing structure that was set up */ slurstr * slur_startslur(b_slurstr *p) { slurstr *s = mem_get_cached((void **)(&main_freeslurblocks), sizeof(slurstr)); s->slur = p; s->maxy = INT32_MIN; s->miny = INT32_MAX; s->gaps = NULL; s->section = 1; s->lastx = s->x = s->count = s->slopeleft = s->sloperight = 0; /* Put in a default y value in case the slur doesn't cross anything visible. */ s->lasty = s->y = ((p->flags & sflag_b) == 0)? 16000 : 0; /* If this was a crossing slur, we place it second on the stack, if possible. Otherwise put it at the top. */ if ((p->flags & sflag_x) != 0 && bar_cont->slurs != NULL) { s->next = (bar_cont->slurs)->next; (bar_cont->slurs)->next = s; } else { s->next = bar_cont->slurs; bar_cont->slurs = s; } return s; } /************************************************* * Find and unchain given slur * *************************************************/ /* This is called when processing [endslur] or [endline], both while setting up the cont structure, and while actually outputting. A slur will always be in progress; an isolated [endslur] is detected at reading time, causing an error that stops further processing. If [endslur] has an id, we seek that slur, yielding NULL if not found; otherwise the first on the chain is yielded. Argument: the slur end item Returns: the active slur block or NULL if not found */ slurstr * slur_endslur(b_endslurstr *p) { slurstr *s = bar_cont->slurs; int slurid = p->value; if (slurid == 0) bar_cont->slurs = s->next; else { slurstr **ss = &(bar_cont->slurs); while (s != NULL) { if ((s->slur)->id == slurid) { *ss = s->next; break; } ss = &(s->next); s = *ss; } if (s == NULL) return NULL; } /* We can put the slur block back onto its free chain, because its contents will be used straight away, before any subsequent [slur] is processed. */ mem_free_cached((void **)&main_freeslurblocks, s); return s; } /************************************************* * Find Bezier parameter fraction * *************************************************/ /* Given the coefficients of a Bezier curve, its x coordinate end points, and a fraction, compute the value of t (0 <= t <= 1) for which the x coordinate on the curve is the same as the x coordinate of the point that is the fraction of the x-distance between the end points. This is used when drawing partial curves. The code in this function had to be massaged carefully to ensure that exactly the same result is obtained when run native and under valgrind, in order to make the tests run clean. The differences were only in the 3rd decimal place, insignificant in the actual output, but of course the comparisons failed. Arguments: f the fraction a, b, c the Bezier coefficients x0, x1 the endpoint x coordinates Returns: the t value */ static double bezfraction(double f, double a, double b, double c, double x0, double x1) { double wanted = x0 + (x1 - x0)*f; /* The wanted x coordinate */ double start = 0.0; double stop = 1.0; double step = 0.1; /* Outer repeat loop */ for (;;) { double t; /* Inner loop covers the current range */ for (t = start; t < stop + step; t += step) { double x = ((a*t + b)*t + c)*t + x0; /* Make sure that -0.0 is actually 0.0; this can be different when running valgrind. */ if (fabs(x) < 0.000001) x = 0.0; /* If stepped past the wanted point, set new bounds and a smaller step unless we are close enough. */ if (x >= wanted) { if (fabs(x - wanted) < 10.0 || step < 0.001) return t; start = t - step; stop = t; step /= 10.0; break; } } /* If didn't reach it, return the right point */ if (t >= stop + step) return stop; } return f; /* Should never be obeyed */ } /************************************************* * Get coordinates of slur gap * *************************************************/ /* For a drawing function we need the coordinates of the end points and the midpoint of a gap in the normal coordinate system. This is very tedious to compute. The results are returned in a static vector. We have to repeat a lot of the work needed for actually drawing the relevant portion of the slur. Arguments: ix0, iy0 the start coordinates of the part-slur ix1, iy1 the end coordinates of the part slur flags slur flags co co parameter start t-value for start of gap (fixed point) stop t-value for end of gap (fixed point) Returns: vector of left, middle, right coordinates */ static int32_t coords[6]; static int * getgapcoords(int32_t ix0, int32_t iy0, int32_t ix1, int32_t iy1, uint32_t flags, int32_t co, int32_t start, int32_t stop) { int above, wiggly; int32_t ox, oy; double xx, yy, w, v; double x0, x1, x2, x3, y0, y1, y2, y3; double a, b, c, f, g; double xxl, xxr, yyl, yyr, sa, ca; /* Compute values needed for curved slur drawing. */ above = ((flags & sflag_b) == 0)? (+1) : (-1); wiggly = ((flags & sflag_w) == 0)? (+1) : (-1); xx = (double)ix1 - (double)ix0; yy = (double)iy1 - (double)iy0; w = sqrt(xx*xx + yy*yy); sa = yy/w; /* sine */ ca = xx/w; /* cosine */ w /= 2.0; v = w*0.6667; if (v > 10000.0) v = 10000.0; co = (above * (co + ((xx > 20000)? 6000 : (int)(xx * 0.3))) * out_stavemagn)/1000; f = ((double)start)/1000.0; g = ((double)stop)/1000.0; /* Calculate the origin of the coordinate system where the slur would be drawn. We don't actually have to translate or rotate, since we are not actually going to draw anything here. */ ox = (ix0+ix1+6*out_stavemagn)/2; oy = (iy0+iy1)/2; /* Set up traditional Bezier coordinates for the complete slur. */ x0 = -w; x1 = v - w + (double)out_slurclx; x2 = w - v + (double)out_slurcrx; x3 = +w; y0 = 0.05; y1 = (double)(int)(co + out_slurcly); y2 = (double)(int)(co*wiggly + out_slurcry); y3 = 0.05; /* Calculate the coefficients for the original x parametric equation. */ a = x3 - x0 + 3.0*(x1 - x2); b = 3.0*(x2 - 2.0*x1 + x0); c = 3.0*(x1 - x0); /* The given fractions are fractions along the line joining the two end points. These do not correspond linearly with the parameter t of the complete curve, so we have to calculate new fractional values. */ if (f > 0.0 && f < 1.0) f = bezfraction(f, a, b, c, x0, x3); if (g > 0.0 && g < 1.0) g = bezfraction(g, a, b, c, x0, x3); /* Now calculate the new Bezier point coordinates for ends of the portion of the slur that we want. */ xxl = x0 + ((a*f + b)*f + c)*f; xxr = x0 + ((a*g + b)*g + c)*g; /* Now do exactly the same for the y points */ a = y3 - y0 + 3.0*(y1 - y2); b = 3.0*(y2 - 2.0*y1 + y0); c = 3.0*(y1 - y0); yyl = y0 + ((a*f + b)*f + c)*f; yyr = y0 + ((a*g + b)*g + c)*g; /* Now we have to get those coordinates back into the normal coordinate system. First rotate, then remove the effect of the translation. */ coords[0] = (int)(xxl * ca - yyl * sa) + ox; coords[1] = (int)(yyl * ca + xxl * sa) + oy; coords[4] = (int)(xxr * ca - yyr * sa) + ox; coords[5] = (int)(yyr * ca + xxr * sa) + oy; /* Set up the mid point values and return the vector. */ coords[2] = (coords[0] + coords[4])/2; coords[3] = (coords[1] + coords[5])/2; return coords; } /************************************************* * Output text in a slur or line gap * *************************************************/ /* Arguments: gt the gap text structure x, y coordinates of the middle of the gap num, den slope parameters for the gap Returns: nothing */ static void slur_gaptext(b_slurgapstr *sg, int32_t x, int32_t y, int32_t num, int32_t den) { int32_t adjusthy, width, sn, cs; fontinststr localfdata, *fdata; fontinststr *origfdata = curmovt->fontsizes->fontsize_text + sg->textsize; if (num != 0) /* Not horizontal */ { double hy = sqrt((double)num*(double)num + (double)den*(double)den); fdata = font_rotate(origfdata, (int)((45000.0*atan2((double)num, (double)den))/atan(1.0))); sn = (int)((1000.0*(double)num)/hy); cs = (int)((1000.0*(double)den)/hy); } else { localfdata = *origfdata; fdata = &localfdata; sn = 0; cs = 1000; den = 1; /* To stop division by 0 below */ } fdata->size = mac_muldiv(fdata->size, out_stavemagn, 1000); adjusthy = sg->texty - fdata->size/4; width = string_width(sg->gaptext, fdata, NULL); x = x - width/2 + mac_muldiv(sg->textx, cs, 1000) - mac_muldiv(adjusthy, sn, 1000); y = y - (width*num)/(2*den) + mac_muldiv(sg->textx, sn, 1000) + mac_muldiv(adjusthy, cs, 1000); out_string(sg->gaptext, fdata, x, out_ystave - y, sg->textflags); } /************************************************* * Compute parameters & draw a slur or line * *************************************************/ /* This function is called when [endslur] or [endline] is reached or if the end of a line is reached in the middle of a slur. The active slur structure s has already been placed at the head of the chain of free slur blocks, knowing that its data will be used before any subsequent [slur] is processed, so we do not need to dispose of it here. Arguments: s the active slur structure x1 the x coordinate of the end of the slur npitch pitch of the final note or 0 if drawing to end of line eol TRUE if this slur goes to the end of the line Returns: nothing */ void slur_drawslur(slurstr *s, int x1, int npitch, BOOL eol) { b_slurstr *ss = s->slur; b_slurmodstr *sm = NULL; b_slurmodstr *smm = ss->mods; uint32_t slurflags = ss->flags; BOOL absolute = (slurflags & sflag_abs) != 0; BOOL below = (slurflags & sflag_b) != 0; BOOL lay = (slurflags & sflag_lay) != 0; BOOL laststemup = out_laststemup[curstave]; BOOL lineslur = (slurflags & sflag_l) != 0; int32_t adjustco = 0; int32_t use_endmoff = ((slurflags & sflag_cx) != 0)? out_moff : out_lastmoff; int32_t line_rc_adjust = lineslur? 3000 : 0; int32_t x0 = s->x; int32_t y0 = s->y; int32_t y1; BOOL sol = x0 == 0; /* For continued slurs in style 0 we have to adjust the apparent end points and then draw only part of the resulting slur. These are the start and end fractional values. */ int32_t dstart = 0; int32_t dstop = 1000; /* Note: for absolute and {und,ov}erlay positioning, all this computation is later over-ridden. We leave it in place so as not to disturb things for the x values. */ /* End of line slurs take their vertical end from the max/min under them. Allow for the fact that a line slur gets its end moved 3 pts "past" the note position. Also, suppress wiggles for the first section - the other parts do the suppression with the sol test and need to have the flag still set in order to flip the above/below bit. Note that the final note has not yet been incorporated into the max/min. */ if (eol) { if (below) y1 = (s->lasty < s->miny)? s->lasty : s->miny; else y1 = (s->lasty > s->maxy)? s->lasty : s->maxy; if (lineslur) x1 -= 3000; if (x0 != 0) slurflags &= ~sflag_w; /* No wiggle */ slurflags |= sflag_or; /* Open on right if line */ } /* Not end of line slur. Set the vertical position according to the last note. If the last note was beamed, and the slur is on the same side as the beam, or if the slur is on the opposite side to the stem, we need to put in an additional bit of space for clearance. */ else { y1 = (npitch == 0)? (below? L_2L : L_5L) : misc_ybound(below, n_prevtie, TRUE, TRUE); if (below) { if (laststemup || out_lastnotebeamed) y1 -= 1000; } else { if (!laststemup || out_lastnotebeamed) y1 += 1000; } } /* Set up left position at line start; if x1 is also zero it means we have hit an [es] or [el] immediately after a bar line at a line break. This is not an error; we just invent a small distance. Turn off the wiggle flag, but if it was set, flip the above/below status. We must also do a vertical adjustment for the final part of a split wiggly slur. */ if (x0 == 0) { slurflags |= sflag_ol; /* Open on left if line */ if ((slurflags & sflag_w) != 0) { slurflags &= ~sflag_w; /* No wiggle */ below = !below; /* Other direction */ slurflags ^= sflag_b; /* Must do this too */ y1 = (npitch == 0)? L_2L : misc_ybound(below, n_prevtie, TRUE, TRUE); } x0 = out_sysblock->firstnoteposition + out_sysblock->xjustify - 10500; if (x1 == 0) { x1 = x0 + 10500; if (lineslur) x0 -= 10000; /* lines normally start 10 pts right */ } } /* For wiggly slurs, move the final point to the other end of the last note. We don't attempt any other fancy adjustments for these slurs. */ if ((slurflags & sflag_w) != 0) { y1 = (npitch == 0)? L_2L : misc_ybound(!below, n_prevtie, TRUE, TRUE); if (!below && !laststemup && (n_flags & nf_stem) != 0) x1 -= 5*out_stavemagn; } /* For non-wiggly slurs, make adjustments according to the starting and ending slopes if there are more than three notes in the slur. The "starting" slope actually looks at more than the first note, but we aren't clever enough to do the same at the end. The curvature is adjusted according to the max/min pitch under the slur. */ else if (below) /* slur below */ { int32_t miny = s->miny; if (!laststemup && /* Note has down stem */ (n_flags & nf_stem) != 0 && /* Note has a stem */ !lineslur && /* Not a line (i.e. a slur) */ !eol && /* Not an end of line slur */ !main_righttoleft) /* Not right-to-left */ x1 -= 5*out_stavemagn; if (s->count > 3) { if (s->slopeleft < -400) y0 -= (s->slopeleft < -600)? 4000: 2000; if (s->sloperight > 400) y1 -= (s->sloperight > 600)? 4000: 2000; } if (miny < y0 && miny < y1) { int32_t adjust = (y0 + y1)/2 - miny; if (lineslur) { if ((slurflags & sflag_h) != 0) y0 = y1 = miny; else { y0 -= adjust; y1 -= adjust; } } else adjustco += adjust; } } else /* slur above */ { int32_t maxy = s->maxy; if (s->count > 3) { if (s->slopeleft > 400) y0 += (s->slopeleft > 600)? 4000 : 2000; if (s->sloperight < -400) y1 += (s->sloperight < -600)? 4000 : 2000; } if (maxy > y0 && maxy > y1) { int adjust = maxy - (y0 + y1)/2; if (lineslur) { if ((slurflags & sflag_h) != 0) y0 = y1 = maxy; else { y0 += adjust; y1 += adjust; } } else adjustco += adjust; } } /* Deal with the horizontal option (horizontal line slurs handled above, but other cases not yet). */ if ((slurflags & sflag_h) != 0) { if ((!below && y1 > y0) || (below && y1 < y0)) y0 = y1; else y1 = y0; } /* If this is a curved slur, arrange that the end points are not on staff lines, and ensure that for longish slurs, the centre adjustment is at least 2. Also do this for steep slurs, but not if absolute or at underlay level or if the slur is short. */ if (!lineslur) { int32_t ay0 = abs(y0); int32_t ay1 = abs(y1); if (below) { if (y0 >= L_1S && (ay0 % 4000) < 500) y0 -= 1000; if (y1 >= L_1S && (ay1 % 4000) < 500) y1 -= 1000; } else { if (y0 <= L_5S && (ay0 % 4000) < 500) y0 += 1000; if (y1 <= L_5S && (ay1 % 4000) < 500) y1 += 1000; } if (x1 - x0 > 72000 && adjustco < 2000) adjustco = 2000; else if (!absolute && !lay && x1 - x0 > 24000) { int32_t overall_slope = mac_muldiv(y1 - y0, 1000, x1 - x0); if (abs(overall_slope) > 500 && adjustco < 2000) adjustco = 2000; } } /* If this is a line-type "slur", ensure that the default pitches (i_e. before adding user movement) are above or below the staff, as necessary. */ else { if (below) { if (y0 > L_1L) y0 = L_1L; if (y1 > L_1L) y1 = L_1L; } else { if (y0 < L_6L) y0 = L_6L; if (y1 < L_6L) y1 = L_6L; } } /* If the slur or line is marked as "absolute", then the vertical positions are specified without reference to any intervening notes. We allow all the above to happen, so that the correct x values get computed, and also this feature was added later and it is easier not to disturb the above code. Ditto for slurs/lines that are drawn at the underlay or overlay level. */ if (absolute) { y0 = y1 = below? 0 : 16000; } else if (lay) { y0 = y1 = below? out_sysblock->ulevel[curstave] : out_sysblock->olevel[curstave]; } /* Finally, apply manual adjustments. All endpoints of all sections are affected by the "ally" value. */ y0 += ss->ally; y1 += ss->ally; /* Most slurs appear on at most two lines; we need the slurmod structure for sequence number zero for endpoint adjustments in all cases except for the middle sections of a slur that exists on more than 2 lines, so get it in all cases (if it exists). */ while (smm != NULL && smm->sequence != 0) smm = smm->next; /* If this is part of a split slur, we need the slurmod structure that matches this section, and in all cases its values are used. */ if (sol || eol) { sm = ss->mods; while (sm != NULL && sm->sequence != s->section) sm = sm->next; if (sm != NULL) { if (sm->lxoffset != 0) { int32_t offset = mac_muldiv(len_crotchet, sm->lxoffset, 1000); x0 = out_barx + out_findAoffset(s->moff + offset); } /* When x1 default for a line is set by musical offset, lose the additional 3pts that are added to get past the final note in the default case. */ if (sm->rxoffset != 0) { int32_t offset = mac_muldiv(len_crotchet, sm->rxoffset, 1000); x1 = out_barx + out_findAoffset(use_endmoff + offset) - line_rc_adjust; } x0 += sm->lx; x1 += sm->rx; y0 += sm->ly; y1 += sm->ry; adjustco += sm->c; out_slurclx = (sm->clx * out_stavemagn)/1000; out_slurcly = (sm->cly * out_stavemagn)/1000; out_slurcrx = (sm->crx * out_stavemagn)/1000; out_slurcry = (sm->cry * out_stavemagn)/1000; } } /* Other values depend on which bit of a split slur is being drawn. If it is neither the starting section nor the ending section (that is, it's a whole line of middle slur), use just the values from this section's data block. In other words, there's no more to do. */ if (sol && eol) { } /* The final portion of a split slur. Use values from its block, plus values from the zero block for the right-hand end, which is also applied to the vertical movement of the left-hand end. */ else if (sol) { if (smm != NULL) { if (smm->rxoffset != 0) { int32_t offset = mac_muldiv(len_crotchet, smm->rxoffset, 1000); x1 = out_barx + out_findAoffset(use_endmoff + offset) - line_rc_adjust; } x1 += smm->rx; y1 += smm->ry; y0 += smm->ry; } } /* The first section of a split slur. Use values from its block plus values from the zero block for the left-hand end, which is also applied to the vertical movement of the right-hand end. */ else if (eol) { if (smm != NULL) { if (smm->lxoffset != 0) /* Relative to start of slur */ { int32_t offset = mac_muldiv(len_crotchet, smm->lxoffset, 1000); x0 = out_barx + out_findAoffset(s->moff + offset); } x0 += smm->lx; y0 += smm->ly; y1 += smm->ly; } } /* An unsplit slur. Use values from the zero block. */ else if (smm != NULL) { if (smm->lxoffset != 0) /* Relative to start of slur */ { int32_t offset = mac_muldiv(len_crotchet, smm->lxoffset, 1000); x0 = out_barx + out_findAoffset(s->moff + offset); } if (smm->rxoffset != 0) { int32_t offset = mac_muldiv(len_crotchet, smm->rxoffset, 1000); x1 = out_barx + out_findAoffset(use_endmoff + offset) - line_rc_adjust; } x0 += smm->lx; x1 += smm->rx; y0 += smm->ly; y1 += smm->ry; adjustco += smm->c; out_slurclx = (smm->clx * out_stavemagn)/1000; out_slurcly = (smm->cly * out_stavemagn)/1000; out_slurcrx = (smm->crx * out_stavemagn)/1000; out_slurcry = (smm->cry * out_stavemagn)/1000; } /* Need to correct for the jog length for absolute line slurs, so that the line is at the height specified. Also need to move above slurs up. */ if (lineslur && (absolute || lay)) { int32_t x = adjustco + 3000; if (!below) x = -x; y0 += x; y1 += x; } /* Adjust the verticals for the stave magnification */ y0 = mac_muldiv(y0, out_stavemagn, 1000); y1 = mac_muldiv(y1, out_stavemagn, 1000); /* Make adjustments and fudges for continued curved slurs if the style is not the default. We do this by drawing only half a slur. Such slurs may be continued at either end. */ if (!lineslur && curmovt->endlineslurstyle != 0 && (sol || eol)) { int32_t dx = x1 - x0; int32_t dy = y1 - y0; /* If this is both as starting and ending part (hopefully a rare occurrence), make the slur a bit longer and draw from 0.1 to 0.9 of its length. */ if (sol && eol) { x0 -= dx/8; x1 += dx/8; dstart = 100; dstop = 900; } /* If this is a starting part or an ending part, adjust the values so that we draw exactly half a slur, which will have the desired look. */ else { adjustco += 4*dy/5; if (sol) { x0 -= dx; y0 -= dy/5; dstart = 500; } else { x1 += dx; y1 += dy/5; dstop = 500; } } } /* There may be a chain of gaps in a line or slur. Note that the out_slur() function adds 7*out_stavemagn to the x1 value, to get it past the final note, so we have to compensate for that here. */ if (s->gaps != NULL) { BOOL done = FALSE; int32_t fudge = 7*out_stavemagn; int32_t xlength = x1 + fudge - x0; int32_t start = dstart; /* First scan through and compute positions for any that are specified as a fraction of the way along. */ for (gapstr *pg = s->gaps; pg != NULL; pg = pg->next) { int hfraction = pg->gap->hfraction; if (hfraction >= 0) pg->x = pg->gap->xadjust + x0 + mac_muldiv(xlength, hfraction, 1000); } /* The gaps may be in any order, horizontally. We could sort them before processing, but it is just as easy to pick out the leftmost and process it until there are none left. */ while (s->gaps != NULL) { b_slurgapstr *sg; gapstr **gg = &(s->gaps); /* Parent ptr */ gapstr *g = *gg; /* Active block ptr */ int32_t firstx = g->x; /* Scan to find the leftmost */ for (gapstr *pg = g; pg->next != NULL; pg = pg->next) { if ((pg->next)->x < firstx) { gg = &(pg->next); g = *gg; firstx = g->x; } } sg = g->gap; /* Process a gap in a line. The values of the starting x/y coordinates are adjusted for each part of the line - the start/stop parameters of out_slur() are not used when drawing lines. */ if (lineslur) { int32_t xg0, yg0, xwidth; int32_t num = y1 - y0; int32_t den = x1 + fudge - x0;; /* Compute end coordinates for the part of the line up to this gap. */ if (num == 0) /* Optimize the common case (horizontal) */ { xwidth = sg->width; xg0 = g->x - xwidth/2; yg0 = y0; } else { double dnum = (double)num; double dden = (double)den; xwidth = (int)(((double)(sg->width) * dden)/sqrt(dnum*dnum + dden*dden)); xg0 = g->x - xwidth/2; yg0 = y0 + mac_muldiv(xg0 - x0, num, den); } /* Draw the line to this gap, unless it has negative length. */ if (x0 < xg0) out_slur(x0, y0, xg0 - fudge, yg0, slurflags|sflag_or, adjustco, 0, 0); /* Update the starting position for the next section. */ x0 = xg0 + xwidth; y0 = yg0 + mac_muldiv(x0 - xg0, num, den); slurflags |= sflag_ol; if (x0 >= x1) done = TRUE; /* No final bit at the end */ /* If there is an associated draw function, set up the coordinates and call it. Note that lines are always drawn 3 points above or below the given y value, to leave space for the jog. */ if (sg->drawing != NULL) { draw_lgx = xwidth / 2; draw_lgy = (y0 - yg0)/2; draw_ox = xg0 + draw_lgx; draw_oy = yg0 + draw_lgy + (below? (-3000) : (3000)); draw_gap = below? -1000 : +1000; out_dodraw(sg->drawing, sg->drawargs, FALSE); draw_lgx = draw_lgy = draw_gap = 0; } /* If there is an associated text string, arrange to print it centred in the gap. */ if (sg->gaptext != NULL) { slur_gaptext(sg, (xg0 + x0)/2, (y0 + yg0)/2 + (below? (-3000) : (3000)), num, den); } } /* Process a gap in a curved slur. In this case, the call to out_slur() always has the original x/y coordinates, but uses the start/stop values to control which part is to be drawn. */ else { int32_t stop = mac_muldiv(g->x - sg->width/2 - x0, 1000, xlength); /* Draw the current piece if it has a positive length */ if (stop > start) out_slur(x0, y0, x1, y1, slurflags, adjustco, start, stop); /* Compute start of next piece */ start = mac_muldiv(g->x + sg->width/2 - x0, 1000, xlength); if (start >= 1000) done = TRUE; /* No final bit at the end */ /* If there is an associated draw function, set up the coordinates and call it. */ if (sg->drawing != NULL) { int *c = getgapcoords(x0, y0, x1, y1, slurflags, adjustco, stop, start); draw_ox = c[2]; draw_oy = c[3]; draw_lgx = c[2] - c[0]; draw_lgy = c[3] - c[1]; draw_gap = below? -1000 : +1000; out_dodraw(sg->drawing, sg->drawargs, FALSE); draw_lgx = draw_lgy = draw_gap = 0; } /* If there's associated text, output it. */ if (sg->gaptext != NULL) { int32_t *c = getgapcoords(x0, y0, x1, y1, slurflags, adjustco, stop, start); slur_gaptext(sg, c[2], c[3], c[5] - c[1], c[4] - c[0]); } } /* Extract the block from the chain and put it on its free chain. */ *gg = g->next; mem_free_cached((void **)&main_freegapblocks, g); } /* End loop through gap blocks */ /* Draw the rest of the line or slur, if there is any left. */ if (!done) out_slur(x0, y0, x1, y1, slurflags, adjustco, start, dstop); } /* The slur or line has no gaps specified. Output it, provided it has some positive horizontal length. If there isn't enough length, generate an error and invent some suitable length. */ else { if (x0 >= x1) { error(ERR144); if (x0 == x1) x1 = x0 + 10000; else { int32_t temp = x0; x0 = x1; x1 = temp; } } out_slur(x0, y0, x1, y1, slurflags, adjustco, dstart, dstop); } /* Reset the globals that hold control point adjustments. */ out_slurclx = out_slurcly = out_slurcrx = out_slurcry = 0; } /************************************************* * Draw slur or line from given values * *************************************************/ /* Originally there were only simple slurs, and these were drawn by the ps_slur() function. When things got more complicated, additional work would have had to be done in the PostScript header file. However, in the meanwhile, the ps_path() function had been invented for drawing arbitrary shapes at the logical (non-device) level. This function (out_slur()) is now called where ps_slur() used to be called. In principle, it could do all the output. However, to keep the size of PostScript down and for compatibility with the previous PostScript, it still calls ps_slur() for PostScript output of complete, non-dashed, curved slurs that can be handled by the old code. New functionality is added in here, and in time I may remove the special PostScript into here as well. Each change will cause the PostScript to change, and hence the tests to fail to validate... Note that as well as the parameters passed as arguments, there are also parameter values in the global variables out_slurclx, out_slurcly, out_slurcrx, and out_slurcry for corrections to the control points. The t-values are the Bezier parameter values for drawing part slurs, given as fixed point values between 0 and 1.0 respectively. For a whole slur, their int32 values are therefore 0 and 1000. Parts of the code in this function had to be massaged carefully to ensure that exactly the same result is obtained when run native and under valgrind, in order to make the tests run clean. The differences were only in the 3rd decimal place, insignificant in the actual output, but of course the comparisons failed. Arguments: ix0, iy1 coordinates of the start of the slur ix1, iy1 coordinates of the end of the slur flag the slur flags co the co ("centre out") value start the t-value at slur start (fixed point) ) for drawing partial stop the t-value at slur end (fixed point) ) curved slurs Returns: nothing */ void out_slur(int32_t ix0, int32_t iy0, int32_t ix1, int32_t iy1, uint32_t flags, int32_t co, int32_t start, int32_t stop) { int above = ((flags & sflag_b) == 0)? (+1) : (-1); if (ix1 == ix0 && iy1 == iy0) return; /* Avoid crash */ /* Use ps_slur() to output complete, curved, non-dashed slurs to maintain compatibility and smaller PostScript files. */ if (start == 0 && stop == 1000 && (flags & (sflag_l | sflag_i)) == 0) { ps_slur(ix0, iy0, ix1, iy1, flags, co); return; } /* Handle straight-line "slurs". For these, the start and stop values are not used, as partial lines are drawn as separate whole lines with appropriate jog flags. */ if ((flags & sflag_l) != 0) { uint32_t lineflags = 0; int32_t adjust = 0; int32_t thickness = (3*out_stavemagn)/10; ix1 += 7*out_stavemagn; co = mac_muldiv((co + 3000)*above, out_stavemagn, 1000); /* Convert the flags to the tie flags used by the ps_line function, then output the main portion of the line. Set the savedash flag if drawing a dotted line so that the jogs are drawn with the same dash settings. */ if ((flags & sflag_i) != 0) lineflags |= ((flags & sflag_idot) == 0)? tief_dashed : tief_dotted | tief_savedash; if ((flags & sflag_e) != 0) lineflags |= tief_editorial; ps_line(ix0, iy0 + co, ix1, iy1 + co, thickness, lineflags); /* Don't pass any flag settings for drawing the jogs; for dotted lines the previous savedash ensures that the same setting is used for them. For dashed lines the jogs shouldn't be dashed. For dotted lines we may need to lengthen the jog to ensure at least one extra dot is drawn, and we change the thickness. Also, reduce the gap length slightly because there's an optical illusion that makes it look bigger than it is. Avoid redrawing the dot at the joining point. */ if ((flags & sflag_idot) != 0) { thickness = out_stavemagn; ps_setdash(out_dashlength, (out_dashgaplength*95)/100); ps_setcapandjoin(caj_round); if (abs(co) < 2*out_dashlength + out_dashgaplength) adjust = above*(2*out_dashlength + out_dashgaplength) - co; } else co += (above*thickness)/2; if ((flags & sflag_ol) == 0) ps_line(ix0, iy0 + co - above*(out_dashlength+out_dashgaplength), ix0, iy0 - adjust, thickness, 0); if ((flags & sflag_or) == 0) ps_line(ix1, iy1 + co - above*(out_dashlength+out_dashgaplength), ix1, iy1 - adjust, thickness, 0); ps_setdash(0, 0); /* Clear saved setting if no jogs */ ps_setcapandjoin(caj_butt); return; } /* Handle the more complicated types of curved slur: partial, dashed, wiggly, etc. */ int wiggly = ((flags & sflag_w) == 0)? (+1) : (-1); int32_t ed_adjust; int32_t x[10], y[10], cc[10]; double zz[4]; double temp; double x0, x1, x2, x3, y0, y1, y2, y3; double ax, ay, bx, by, cx, cy, f, g; double xx = (double)ix1 - (double)ix0; double yy = (double)iy1 - (double)iy0; double w = sqrt(xx*xx + yy*yy)/2.0; double v = w*0.6667; if (v > 10000.0) v = 10000.0; /* It is necessary to use floor() in the conversion of xx*0.3 to an integer in the next statement in order to get the same value under valgrind. We know that xx is positive, so we don't need to test whether to use floor() or ceil(). Using the (int) cast only on a variable (not on a function) avoids a compiler warning. */ temp = floor(xx * 0.3); co = (above * (co + ((xx > 20000)? 6000 : (int)temp)) * out_stavemagn)/1000; f = ((double)start)/1000.0; g = ((double)stop)/1000.0; /* Preserve current coordinate system, translate and rotate so that the end points of the slur lie on the x-axis, symetrically about the origin. For ps_translate, the y value is relative to the stave base. Thereafter use ps_abspath() for absolute values. */ ps_gsave(); ps_translate((ix0+ix1+6*out_stavemagn)/2, (iy0+iy1)/2); ps_rotate(atan2(yy, xx)); /* Set up traditional Bezier coordinates for the complete slur. */ x0 = -w; x1 = v - w + (double)out_slurclx; x2 = w - v + (double)out_slurcrx; x3 = +w; y0 = 50.0; y1 = (double)(int)(co + out_slurcly); y2 = (double)(int)(co*wiggly + out_slurcry); y3 = 50.0; /* Calculate the coefficients for the original x parametric equation. */ ax = x3 - x0 + 3.0*(x1 - x2); bx = 3.0*(x2 - 2.0*x1 + x0); cx = 3.0*(x1 - x0); /* The given fractions are fractions along the line joining the two end points. These do not correspond linearly with the parameter t of the complete curve, so we have to calculate new fractional values. */ if (f > 0.0 && f < 1.0) f = bezfraction(f, ax, bx, cx, x0, x3); if (g > 0.0 && g < 1.0) g = bezfraction(g, ax, bx, cx, x0, x3); /* Now calculate the new Bezier point coordinates for the portion of the slur that we want, and set up the first path to be that portion. We used to compute the x values with just an (int) cast, but this gave slightly different values under valgrind. Using floor() or ceil() with a rounding value solves that problem. We must also avoid using an (int) cast directly on these functions, because it provokes a compiler warning when -Wbad-function-cast is set. */ zz[0] = x0 + ((ax*f + bx)*f + cx)*f; zz[1] = x0 + (((3.0*ax*g + bx)*f + 2.0*(bx*g + cx))*f + cx*g)/3.0; zz[2] = x0 + (((3.0*ax*g + 2.0*bx)*g + cx)*f + 2.0*cx*g + bx*g*g)/3.0; zz[3] = x0 + ((ax*g + bx)*g + cx)*g; temp = (zz[0] >= 0.0)? floor(zz[0] + 0.0001) : ceil(zz[0] - 0.0001); x[0] = (int)temp; temp = (zz[1] >= 0.0)? floor(zz[1] + 0.0001) : ceil(zz[1] - 0.0001); x[1] = (int)temp; temp = (zz[2] >= 0.0)? floor(zz[2] + 0.0001) : ceil(zz[2] - 0.0001); x[2] = (int)temp; temp = (zz[3] >= 0.0)? floor(zz[3] + 0.0001) : ceil(zz[3] - 0.0001); x[3] = (int)temp; /* Now do exactly the same for the y points */ ay = y3 - y0 + 3.0*(y1 - y2); by = 3.0*(y2 - 2.0*y1 + y0); cy = 3.0*(y1 - y0); zz[0] = y0 + ((ay*f + by)*f + cy)*f; zz[1] = y0 + (((3.0*ay*g + by)*f + 2.0*(by*g + cy))*f + cy*g)/3.0; zz[2] = y0 + (((3.0*ay*g + 2.0*by)*g + cy)*f + 2.0*cy*g + by*g*g)/3.0; zz[3] = y0 + ((ay*g + by)*g + cy)*g; temp = (zz[0] >= 0.0)? floor(zz[0] + 0.0001) : ceil(zz[0] - 0.0001); y[0] = (int)temp; temp = (zz[1] >= 0.0)? floor(zz[1] + 0.0001) : ceil(zz[1] - 0.0001); y[1] = (int)temp; temp = (zz[2] >= 0.0)? floor(zz[2] + 0.0001) : ceil(zz[2] - 0.0001); y[2] = (int)temp; temp = (zz[3] >= 0.0)? floor(zz[3] + 0.0001) : ceil(zz[3] - 0.0001); y[3] = (int)temp; cc[0] = path_move; cc[1] = path_curve; /* Deal with dashed slurs. The only way to do a decent job is to calculate the actual length of the slur. This has to be done the hard way by numerically integrating along the path, as the formulae don't give an analytic answer. To make sure that a full dash ends the slur when there are gaps in the slur, arrange for the slur to be drawn backwards if it doesn't start at the beginning, but does end at the end. (We could compute separate dashes for the individual parts, but that would probably look odd. Slurgaps in dashes slurs should be most rare, anyway.) */ if ((flags & sflag_i) != 0) { int dashcount; int32_t dashlength, gaplength, thickness, length; double dlength = 0.0; double xp = x0; double yp = y0; double t; /* Compute the curve length by integration. */ for (t = 0.0; t < 1.04; t += 0.05) { double xxc = ((ax*t + bx)*t + cx)*t + x0; double yyc = ((ay*t + by)*t + cy)*t + y0; dlength += sqrt((xxc-xp)*(xxc-xp) + (yyc-yp)*(yyc-yp)); xp = xxc; yp = yyc; } length = (int)dlength; /* Choose a dash length, spacing parameter, and line thickness */ if ((flags & sflag_idot) == 0) { dashlength = length/14; if (dashlength < 3000) dashlength = 3000; gaplength = (dashlength * 875)/1000; thickness = 500; } else { dashlength = 100; gaplength = ((length < 20000)? 3 : 4) * out_stavemagn; thickness = out_stavemagn; } /* Compute the number of dashes; if greater than one, compute the accurate gaplength and set dashing. */ dashcount = (length + gaplength + (dashlength + gaplength)/2) / (dashlength + gaplength); if (dashcount > 1) { gaplength = (length - dashcount * dashlength)/(dashcount - 1); ps_setdash(dashlength, gaplength); ps_setcapandjoin(((flags & sflag_idot) == 0)? caj_butt : caj_round); } /* Invert drawing order of partial curve that ends at the full end */ if (start > 0 && stop == 1000) { int tt; tt = x[0]; x[0] = x[3]; x[3] = tt; tt = x[1]; x[1] = x[2]; x[2] = tt; tt = y[0]; y[0] = y[3]; y[3] = tt; tt = y[1]; y[1] = y[2]; y[2] = tt; } /* Draw the dashed curve, and set editorial line adjustment to zero. */ cc[2] = path_end; ps_abspath(x, y, cc, thickness); ps_setdash(0, 0); /* Reset default */ ps_setcapandjoin(caj_butt); ed_adjust = 0; } /* Deal with a non-dashed slur. For the other boundary of the slur, only the y coordinates of the control points change. */ else { double aay, bby, ccy; ed_adjust = (9*out_stavemagn)/10; x[4] = x[3]; x[5] = x[2]; x[6] = x[1]; x[7] = x[0]; y0 = -50.0; y1 = (double)(int)(co + above*out_stavemagn + out_slurcly); y2 = (double)(int)(co*wiggly + above*out_stavemagn + out_slurcry); y3 = -50.0; aay = y3 - y0 + 3.0*(y1 - y2); bby = 3.0*(y2 - 2.0*y1 + y0); ccy = 3.0*(y1 - y0); y[7] = (int)(y0 + ((aay*f + bby)*f + ccy)*f); y[6] = (int)(y0 + (((3.0*aay*g + bby)*f + 2.0*(bby*g + ccy))*f + ccy*g)/3.0); y[5] = (int)(y0 + (((3.0*aay*g + 2.0*bby)*g + ccy)*f + 2.0*ccy*g + bby*g*g)/3.0); y[4] = (int)(y0 + ((aay*g + bby)*g + ccy)*g); cc[2] = path_line; cc[3] = path_curve; x[8] = x[0]; y[8] = y[0]; cc[4] = path_line; cc[5] = path_end; /* Fill the path (thickness = -1) */ ps_abspath(x, y, cc, -1); } /* Deal with editorial slurs - only draw the mark when drawing the middle portion. */ if ((flags & sflag_e) != 0 && start < 500 && stop > 500) { int32_t xxm, yym; double dx, dy, theta, cs, sn; /* Calculate the midpoint of the curve from the parametric equations taking t = 0.5, and also calculate the slope at that point. */ xxm = (int)(((ax*0.5 + bx)*0.5 + cx)*0.5 - w); dx = (3.0*ax*0.5 + 2.0*bx)*0.5 + cx; yym = (int)(((ay*0.5 + by)*0.5 + cy)*0.5); dy = (3.0*ay*0.5 + 2.0*by)*0.5 + cy; /* Draw the editorial mark. Translate and rotate gave rounding errors, so do it by steam. */ theta = atan2(dy, dx); cs = cos(theta); sn = sin(theta); if (above > 0) { x[0] = xxm - (int)((2000.0+(double)ed_adjust)*sn); y[0] = yym + (int)((2000.0+(double)ed_adjust)*cs); x[1] = xxm + (int)(2000.0*sn); y[1] = yym - (int)(2000.0*cs); } else { x[0] = xxm - (int)(2000.0*sn); y[0] = yym + (int)(2000.0*cs); x[1] = xxm + (int)((2000.0+(double)ed_adjust)*sn); y[1] = yym - (int)((2000.0+(double)ed_adjust)*cs); } cc[0] = path_move; cc[1] = path_line; cc[2] = path_end; ps_abspath(x, y, cc, 400); } /* Restore the former coordinate system. */ ps_grestore(); } /* End of setslur.c */ pmw-5.22/src/ps.c0000644000222100022210000017721114541067540011727 0ustar ph10ph10/************************************************* * PMW PostScript functions * *************************************************/ /* Copyright Philip Hazel 2022 */ /* This file created: May 2021 */ /* This file last modified: December 2023 */ #include "pmw.h" /* This file contains code for outputting things in PostScript */ /************************************************ * Static variables * ************************************************/ static BOOL ps_EPS = FALSE; static BOOL ps_slurA = FALSE; static BOOL ps_changecolour= FALSE; static uint32_t ps_caj; static int ps_chcount; static int ps_curfont; static BOOL ps_curfontX; static fontinststr ps_mfdata = { NULL, 0, 0 }; static fontinststr ps_curfontdata = { NULL, 0, 0 }; static int32_t ps_fmatrix[6]; static stavelist *ps_curlist; static uint32_t ps_curnumber; static int32_t ps_wantcolour[3] = {0, 0, 0}; static int32_t ps_curcolour[3] = {0, 0, 0}; static int32_t ps_ymax; static uschar *ps_IdStrings[font_tablen+1]; /************************************************ * Data tables * ************************************************/ /* Characters in the music font for stave fragments with different numbers of lines, both 100 points long and 10 points long. */ static uint8_t stavechar10[] = { 0, 'G', 247, 248, 249, 'F', 250 }; static uint8_t stavechar1[] = { 0, 'D', 169, 170, 171, 'C', 172 }; /* In order to support the PMW-Music font in OpenType format, we have to treat some characters specially. In the .pfa font these characters move leftwards or up or down after printing, a facility that isn't available in OpenType. These strings define the characters that need special treatment: umovechars are movement-only characters unsupported in OpenType amovechars are all movement-only characters vshowchars are printing characters with vertical movement */ static const uschar *umovechars = CUS"\166\167\170\171\173\174\176\271\272\273\274"; static const uschar *amovechars = CUS"\040\166\167\170\171\172\173\174\175\176\271\272\273\274"; static const uschar *vshowchars = CUS"\221\222\244\245"; /************************************************ * Macros * ************************************************/ /* Coordinate translation for character output */ #define psxtran(x) ((x) + print_xmargin) #define psytran(y) (ps_ymax - (y)) /************************************************* * Initialize page list data * *************************************************/ /* This function is called at the start of the output phase. Its job is to set up the page number previous to the the first page to be printed, in ps_curnumber, and to set ps_curlist to point the first page selection item. Argument: TRUE if printing is to be in reverse order Returns: nothing */ static void setup_pagelist(BOOL reverse) { ps_curlist = print_pagelist; if (reverse) { if (ps_curlist == NULL) ps_curnumber = print_lastpagenumber + 1; else { while (ps_curlist->next != NULL) ps_curlist = ps_curlist->next; ps_curnumber = ps_curlist->last + 1; } } else { if (ps_curlist == NULL) ps_curnumber = page_firstnumber - 1; else ps_curnumber = ps_curlist->first - 1; } } /************************************************* * Get next page to print * *************************************************/ /* This is called from get_pages() to get the next specified page, skipping any that do not exist. We have to handle both backwards and forward movement. Argument: nothing Returns: pointer to a pagestr, or NULL if no more. */ static pagestr * nextpage(void) { for (;;) { pagestr *yield; /* Start by getting the next page's number into ps_curnumber. If no page selection was specified it's just an increment or decrement of the current number. Otherwise, seek the next page from the list of required pages. */ /* Find next page number in forwards order. */ if (!print_reverse) { ps_curnumber++; if (ps_curlist == NULL) /* No page selection was specified */ { if (ps_curnumber > print_lastpagenumber) return NULL; } else if (ps_curnumber > ps_curlist->last) { if (ps_curlist->next == NULL) return NULL; ps_curlist = ps_curlist->next; ps_curnumber = ps_curlist->first; } } /* Find next page number in reverse order. */ else { ps_curnumber--; if (ps_curlist == NULL) /* No page selection was specified */ { if (ps_curnumber < page_firstnumber) return NULL; } else if (ps_curnumber < ps_curlist->first) { if (ps_curlist->prev == NULL) return NULL; ps_curlist = ps_curlist->prev; ps_curnumber = ps_curlist->last; } } /* Search for a page with the require number; if not found, loop to look for the next one. If we are in pamphlet mode with no explicit page list and the page number is past halfway and the mate exists, don't return the page. */ for (yield = main_pageanchor; yield != NULL; yield = yield->next) { if (yield->number == ps_curnumber) break; } if (yield == NULL) continue; /* Page not found */ if (print_pamphlet && ps_curlist == NULL && ps_curnumber > print_lastpagenumber/2) { pagestr *p = main_pageanchor; uint32_t mate = print_lastpagenumber - ps_curnumber + 1; while (p != NULL) { if (p->number == mate) break; p = p->next; } if (p != NULL) continue; /* Skip this page */ } return yield; } } /************************************************* * Get next page(s) to print * *************************************************/ /* The function called from ps_go(). It returns page structures for one or two pages, depending on the imposition. The yield is FALSE if there are no more pages. Arguments: p1 where to put a pointer to the first page p2 where to put a pointer to the second page Returns: FALSE if there are no more pages */ static BOOL get_pages(pagestr **p1, pagestr **p2) { usint n; BOOL swap = FALSE; *p2 = NULL; /* Loop for skipping unwanted pages (side selection). For pamphlet printing, side 1 contains odd-numbered pages less than half the total, and even-numbered pages greater than half. We may get either kind of page given. */ for (;;) { BOOL nodd; if ((*p1 = nextpage()) == NULL) return FALSE; n = (*p1)->number; nodd = (n & 1) != 0; if (!print_pamphlet || n <= print_lastpagenumber/2) { if ((print_side1 && nodd) || (print_side2 && !nodd)) break; } else { if ((print_side1 && !nodd) || (print_side2 && nodd)) break; } } /* Handle 1-up printing: nothing more to do */ if (print_imposition != pc_a5ona4 && print_imposition != pc_a4ona3) return TRUE; /* Handle 2-up printing. For non-pamphlet ordering, just get the next page and set the order swap flag if required. */ if (!print_pamphlet) { if ((*p2 = nextpage()) == NULL) ps_curnumber--; /* To get correct display */ swap = print_reverse; } /* For pamphlet printing, find the mate of the first page, and set the swap flag if necessary, to ensure the odd-numbered page is on the right. */ else { n = print_lastpagenumber - n + 1; swap = (n & 1) == 0; *p2 = main_pageanchor; while (*p2 != NULL) { if ((*p2)->number == n) break; *p2 = (*p2)->next; } } /* Swap page order if necessary */ if (swap) { pagestr *temp = *p1; *p1 = *p2; *p2 = temp; } return TRUE; } /************************************************* * Output ASCII formatted string * *************************************************/ /* This handles standard C formatting strings. To keep the PostScript readable we wrap it around 72 characters wide. Omit space characters at the starts of lines. */ static void ps_printf(const char *format, ...) { int len; char buff[256]; char *p = buff; va_list ap; va_start(ap, format); len = vsprintf(buff, format, ap); va_end(ap); if (ps_chcount > 0 && ps_chcount + len > 72) { fputc('\n', ps_file); ps_chcount = 0; } while (ps_chcount == 0 && *p == ' ') { p++; len--; } fputs(p, ps_file); ps_chcount = (p[len-1] == '\n')? 0 : ps_chcount + len; } /************************************************* * Manage colour setting * *************************************************/ static void setcolour(void) { if (ps_wantcolour[0] == ps_wantcolour[1] && ps_wantcolour[1] == ps_wantcolour[2]) ps_printf(" %s Sg", sff(ps_wantcolour[0])); else ps_printf(" %s %s %s Sc", sff(ps_wantcolour[0]), sff(ps_wantcolour[1]), sff(ps_wantcolour[2])); memcpy(ps_curcolour, ps_wantcolour, 3 * sizeof(int32_t)); ps_changecolour = FALSE; } /************************************************* * Check whether font needs changing * *************************************************/ /* The X argument is used when the character is > 255, indicating that we want the second version of the font, with the alternative encoding. Arguments: f font number fdata the font's size and matrix X TRUE if it's the extended font we want Returns: TRUE if the font needs changing */ static BOOL ps_needchangefont(int f, fontinststr *fdata, BOOL X) { if (f != ps_curfont || X != ps_curfontX || fdata->size != ps_curfontdata.size) return TRUE; /* The font and size are the same; check transformation. */ if (fdata->matrix == NULL) return ps_curfontdata.matrix != NULL; if (ps_curfontdata.matrix == NULL) return TRUE; for (int i = 0; i <= 3; i++) if (fdata->matrix[i] != ps_curfontdata.matrix[i]) return TRUE; return FALSE; } /************************************************* * Make a given font current * *************************************************/ /* This function is called when we know that a font change is needed. Arguments: f current font number fdata the font's size and matrix X TRUE if it's the extended font we want Returns: nothing */ static void ps_setfont(int f, fontinststr *fdata, BOOL X) { int32_t *matrix = fdata->matrix; int32_t size = fdata->size; ps_curfont = f; ps_curfontX = X; ps_curfontdata = *fdata; if (fdata->matrix != NULL) { ps_curfontdata.matrix = ps_fmatrix; /* Local copy of matrix */ memcpy(ps_fmatrix, fdata->matrix, 6*sizeof(int32_t)); } /* If the transformation is null don't waste time/space by writing it. */ if (matrix == NULL) { ps_printf(" %s%s %s ss%s", ps_IdStrings[f], X? "X" : "", sff(size), main_righttoleft? "r" : ""); } /* There is a transform */ else { ps_printf(" %s%s %s sm%s", ps_IdStrings[f], X? "X" : "", SFF("[%f %f %f %f 0 0]", mac_muldiv(matrix[0], size, 65536), mac_muldiv(matrix[1], size, 65536), mac_muldiv(matrix[2], size, 65536), mac_muldiv(matrix[3], size, 65536)), main_righttoleft? "r" : ""); } } /************************************************* * End a text string * *************************************************/ /* This function writes the terminating ')' and an appropriate command. Arguments: absolute TRUE if the coordinates are absolute, else relative w extra space width x x-coordinate y y-coordinate */ static void ps_endstring(BOOL absolute, int32_t w, int32_t x, int32_t y) { fputc(')', ps_file); /* Does not check ps_chcount */ ps_chcount++; if (absolute) { if (w != 0) ps_printf("%s", SFF("%f %f %f ws", w, psxtran(x), psytran(y))); else ps_printf("%s", SFF("%f %f s", psxtran(x), psytran(y))); } else if (x == 0 && y == 0) /* Relative, but no movement */ { if (w != 0) ps_printf("%s wsh", sff(w)); else ps_printf("sh"); } else { if (w != 0) ps_printf("%s", SFF("%f %f %f wrs", w, x, y)); else ps_printf("%s", SFF("%f %f rs", x, y)); } } /************************************************* * Basic string output code * *************************************************/ /* This function outputs a PMW string, all of whose characters have the same font. The font is passed explicitly rather than taken from the characters so that font_mu can become font_mf at smaller size, and font_sc can have the small caps bit removed. All code points were translated earlier if necessary. Arguments: s the PMW string f the font fdata points to font instance size etc data absolute TRUE if the coordinates are absolute, else relative x the x coordinate y the y coordinate Returns: nothing */ static void ps_basic_string(uint32_t *s, usint f, fontinststr *fdata, BOOL absolute, int32_t x, int32_t y) { fontstr *fs = &(font_list[font_table[f & ~font_small]]); kerntablestr *ktable = fs->kerns; fontinststr tfd = *fdata; BOOL instring = FALSE; uint32_t *p, *endp; /* Initialize start and end. */ endp = p = s; while (*endp != 0) endp++; /* Adjust the point size in the temporary font instance structure for small caps and the reduced music font. */ if (f >= font_small) { f -= font_small; if (f == font_mf) tfd.size = (tfd.size * 9) / 10; else tfd.size = (tfd.size * curmovt->smallcapsize) / 1000; } /* Check top/bottom of bbox for EPS. Allow 0.4 times the point size for descenders below and the point size above. */ if (ps_EPS) { int32_t descender = (4 * tfd.size)/10; if (y + descender > out_bbox[1]) out_bbox[1] = y + descender; if (y - tfd.size < out_bbox[3]) out_bbox[3] = y - tfd.size; } /* When outputting right-to-left, we need to find the length of the string so that we can output it from the other end, because the fonts still work left-to-right. We also need the length for EPS output, in order to set the bounding box. By this stage there are no special escape characters left in the string and we know that it's all in the same font. */ if (main_righttoleft || ps_EPS) { int32_t swidth = 0; int32_t last_width = 0; int32_t last_r2ladjust = 0; for (p = s; *p != 0; p++) { uint32_t c = PCHAR(*p); /* Non-standardly encoded font */ if ((fs->flags & ff_stdencoding) == 0) { int cj = c; /* Fudges for various special cases in the music font, where the adjustment bounding box is taken from another character. */ if (f == font_mf) { switch(c) { case 'J': /* Additional stem characters - adjust as for note */ case 'K': case 'o': case 'p': case 'q': case 'r': cj = '5'; break; case '7': /* Up quaver - adjust as for down quaver */ cj = '8'; break; case '9': /* Up semiquaver - adjust as for down semiquaver */ cj = ':'; break; default: break; } } last_width = fs->widths[c]; last_r2ladjust = fs->r2ladjusts[cj]; } /* Standardly encoded font */ else { last_width = fs->widths[c]; last_r2ladjust = fs->r2ladjusts[c]; } /* Amass the total string width */ swidth += last_width; /* If there is another character, scan the kerning table. At present, kerning is supported only for characters whose code points are no greater than 0xffff. */ if (main_kerning && fs->kerncount > 0 && p[1] != 0 && c <= 0xffffu) { uint32_t cc = PCHAR(p[1]); if (cc <= 0xffffu) { int bot = 0; int top = fs->kerncount; uint32_t pair = (c << 16) | cc; while (bot < top) { int mid = (bot + top)/2; kerntablestr *k = &(ktable[mid]); if (pair == k->pair) { swidth += k->kwidth; break; } if (pair < k->pair) top = mid; else bot = mid + 1; } } } } /* For right-to-left, adjust the printing position for the string by the length of the string, adjusted for the actual bounding box of the final character, and scaled to the font size. For EPS output, adjust the bounding box. Both may, of course, happen. */ if (main_righttoleft) x += mac_muldiv(swidth - last_width + last_r2ladjust, tfd.size, 1000); if (ps_EPS) { swidth = mac_muldiv(swidth, tfd.size, 1000); if (x + swidth > out_bbox[2]) out_bbox[2] = x + swidth; } } /* Generate the output. Values are always less than FONTWIDTHS_SIZE (512); those above 255 use the second font encoding. */ for (p = s; *p != 0; p++) { uint32_t c = PCHAR(*p); /* c is the original code point */ uint32_t pc = c; /* pc is the code value to print */ BOOL extended = FALSE; if (c >= 256) { pc -= 256; extended = TRUE; } /* Change between base and extended font if necessary */ if (ps_needchangefont(f, &tfd, extended)) { if (instring) { ps_endstring(absolute, tfd.spacestretch, x, y); x = y = 0; absolute = instring = FALSE; } ps_setfont(f, &tfd, extended); } /* Output the code, starting a new string if necessary. If not at the start of a line, insert a newline before a new string if this string will make the line overlong. */ if (!instring) { if (ps_chcount > 0 && ps_chcount + endp - p > 73) { fputc('\n', ps_file); ps_chcount = 0; } fputc('(', ps_file); ps_chcount++; instring = TRUE; } if (pc == '(' || pc == ')' || pc == '\\') ps_chcount += fprintf(ps_file, "\\%c", pc); else if (pc >= 32 && pc <= 126) { fputc(pc, ps_file); ps_chcount++; } else ps_chcount += fprintf(ps_file, "\\%03o", pc); /* If there is another character, scan the kerning table */ if (main_kerning && fs->kerncount > 0 && p[1] != 0) { int32_t xadjust = 0, yadjust = 0; int bot = 0; int top = fs->kerncount; uint32_t cc = PCHAR(p[1]); uint32_t pair; pair = (c << 16) | cc; while (bot < top) { int mid = (bot + top)/2; kerntablestr *k = &(ktable[mid]); if (pair == k->pair) { xadjust = k->kwidth; break; } if (pair < k->pair) top = mid; else bot = mid + 1; } /* If a kern was found, scale the adjustment to the font size, and for the string rotation and transformation, if any. Then close the previous substring and arrange that the next be output relative if this is the first. */ if (xadjust != 0) { xadjust = mac_muldiv(xadjust, tfd.size, 1000); if (tfd.matrix != NULL) { yadjust = mac_muldiv(xadjust, tfd.matrix[1], 65536); xadjust = mac_muldiv(xadjust, tfd.matrix[0], 65536); } ps_endstring(absolute, tfd.spacestretch, x, y); absolute = FALSE; instring = FALSE; x = main_righttoleft? -xadjust : xadjust; y = yadjust; } } } if (instring) ps_endstring(absolute, tfd.spacestretch, x, y); } /************************************************* * Output a text string and change current point * *************************************************/ /* The x and y coordinates are updated if requested - note that y goes downwards. Special action is needed for the music font. The PostScript Type 1 font contains a few characters that output nothing but whose horizontal spacial increment is negative and also some characters (both blank and non-blank) with vertical movement - features which are useful for building composite things from strings in this font. Annoyingly, TrueType/OpenType fonts do not permit negative horizontal advance values, nor both horizontal and vertical movement in the same font, and a Truetype or OpenType font is now desirable because Type 1 fonts are becoming obsolete. We get round this restriction by separating out substrings that start with an unsupported moving character and consist only of position moving characters. The already-existing code that suppresses the output of a substring that just moves the position then kicks in. Also, we terminate a substring after any printing character that has vertical movement. Arguments: s the PMW string fdata points to font instance data xu pointer to the x coordinate yu pointer to the y coordinate absolute TRUE for absolute coordinaates, FALSE for relative update if TRUE, update the x,y positions Returns: nothing */ void ps_string(uint32_t *s, fontinststr *fdata, int32_t *xu, int32_t *yu, BOOL absolute, BOOL update) { int32_t x = *xu; int32_t y = *yu; if (ps_changecolour) setcolour(); /* Process the string in substrings in which all the characters have the same font, handling the music font specially, as noted above. */ while (*s != 0) { int32_t stringheight; uint32_t save1; uint32_t *p = s; usint f = PFONT(*s); /* Handle strings in the music font */ if ((f & ~font_small) == font_mf) { BOOL skip = TRUE; /* Starts with an unsupported mover, leave skip TRUE so no output will happen, but the current point will be adjusted. */ if (Ustrchr(umovechars, PCHAR(*s)) != NULL) { while (*s != 0 && PFONT(*s) == f && Ustrchr(amovechars, PCHAR(*s)) != NULL) s++; } /* Does not start with an unsupported mover; end when one is encountered. Also end (but include the character) if a vertical movement is needed. */ else { while (*s != 0 && PFONT(*s) == f) { uint32_t c = PCHAR(*s); if (Ustrchr(umovechars, c) != NULL) break; if (Ustrchr(amovechars, c) == NULL) skip = FALSE; s++; if (Ustrchr(vshowchars, c) != NULL) break; } } /* End substring */ save1 = *s; *s = 0; /* Temporary terminator */ /* If this substring consists entirely of printing-point-moving characters (skip == TRUE) we do not need actually to output it. Otherwise, we can temporarily remove any trailing moving characters while outputting as they don't achieve anything useful. Of course they need to be restored afterwards so that the position update below works correctly. */ if (!skip) { uint32_t save2; uint32_t *t = s - 1; while (t > p && Ustrchr(amovechars, PCHAR(*t)) != NULL) t--; save2 = *(++t); *t = 0; ps_basic_string(p, f, fdata, absolute, x, y); *t = save2; } } /* The font is not the music font */ else { while (*s != 0 && PFONT(*s) == f) s++; save1 = *s; *s = 0; /* Temporary terminator */ ps_basic_string(p, f, fdata, absolute, x, y); } /* Update the position. Note that we must use the original size (in fdata) because string_width() does its own adjustment for small caps and the small music font. */ x += string_width(p, fdata, &stringheight); y -= stringheight; *s = save1; /* Restore */ } /* Pass back the end position if required. */ if (update) { *xu = x; *yu = y; } } /************************************************* * Output a bar line * *************************************************/ /* Normally, solid barlines and dashed ones of a single stave's depth are done with characters from the music font, except when the barline size is greater than the stave magnification and it's just one stave deep. However, the bar_use_draw option forces all bar lines to be drawn. Arguments: x the x coordinate ytop the top of the barline ybot the bottom of the barline type the type of barline magn the appropriate magnification Returns: nothing */ void ps_barline(int32_t x, int32_t ytop, int32_t ybot, int type, int32_t magn) { if (ps_changecolour) setcolour(); /* Use music font characters if appropriate. */ if (!bar_use_draw && (type != bar_dotted || ytop == ybot) && (magn <= out_stavemagn || ytop != ybot)) { if (main_righttoleft) x += mac_muldiv(font_list[font_mf].r2ladjusts[type], 10*magn, 1000); ps_mfdata.size = 10 * magn; if (ps_needchangefont(font_mf, &ps_mfdata, FALSE)) ps_setfont(font_mf, &ps_mfdata, FALSE); ytop += 16*(magn - out_stavemagn); if (ytop != ybot) /* The barline is more than one character deep. */ ps_printf(" %s(%c)%s", SFF("%f %f", 16*magn, psytran(ybot)), type, SFF("%f %f b", psxtran(x), psytran(ytop))); else /* A single barline character is sufficient. */ ps_printf("(%c)%s", type, SFF("%f %f s", psxtran(x), psytran(ytop))); } /* Long dashed lines have to be drawn, as do other lines if they are shorter than the character - this happens if barlinesize is greater than the stave magnification - or if bar_use_draw is set. */ else { int32_t half_thickness = (type == bar_thick)? magn : (type == bar_dotted)? magn/5 : (magn*3)/20; int32_t yadjust = out_stavemagn/5; x += half_thickness; if (type == bar_dotted) ps_printf("%s", SFF(" %f %f %f %f %f [%f %f] dl", psxtran(x), psytran(ytop - 16*out_stavemagn - yadjust), psxtran(x), psytran(ybot - yadjust), 2*half_thickness, 7*half_thickness, 7*half_thickness)); else { ps_printf(" %s", SFF("%f %f %f %f %f l", psxtran(x), psytran(ytop - 16*out_stavemagn - yadjust), psxtran(x), psytran(ybot - yadjust), 2*half_thickness)); if (type == bar_double) { int32_t xx = x + 2*magn; ps_printf(" %s", SFF("%f %f %f %f %f l", psxtran(xx), psytran(ytop - 16*out_stavemagn - yadjust), psxtran(xx), psytran(ybot - yadjust), 2*half_thickness)); } } } } /************************************************* * Output a brace * *************************************************/ /* Arguments: x the x coordinate ytop the y coordinate of the top of the brace ybot the y coordinate of the bottom of the brace magn the magnification Returns: nothing */ void ps_brace(int32_t x, int32_t ytop, int32_t ybot, int32_t magn) { if (ps_changecolour) setcolour(); ps_printf(" %s br%s", SFF("%f %f %f", ((ybot-ytop+16*magn)*23)/12000, psxtran(x)+1500, psytran((ytop-16*magn+ybot)/2)), (curmovt->bracestyle)? "2":""); } /************************************************* * Output a bracket * *************************************************/ /* Arguments: x the x coordinate ytop the y coordinate of the top of the bracket ybot the y coordinate of the bottom of the bracket magn the magnification Returns: nothing */ void ps_bracket(int32_t x, int32_t ytop, int32_t ybot, int32_t magn) { if (ps_changecolour) setcolour(); ps_printf("%s", SFF(" %f %f %f k", psxtran(x), psytran(ytop)+16*magn, psytran(ybot))); } /************************************************* * Output a stave's lines * *************************************************/ /* The stavelines parameter will always be > 0. There is now an option to draw the stave lines rather than using characters for them (the default). This helps with screen displays that are using anti-aliasing. It has been reported that some PostScript interpreters can't handle the 100-point wide characters, so there is an option to use only the 10-point characters. Assume staves are always at least one character long. Arguments: leftx the x-coordinate of the stave start y the y-coordinate of the stave start rightx the x-coordinate of the stave end stavelines the number of stave lines Returns: nothing */ void ps_stave(int32_t leftx, int32_t y, int32_t rightx, int stavelines) { uschar sbuff[16]; uschar buff[256]; int ch, i; int32_t chwidth = 0; int32_t x = leftx; ps_setgray(0); if (ps_changecolour) setcolour(); /* Output the stave using PostScript drawing primitives. */ if (stave_use_draw > 0) { int32_t gap; int32_t thickness = (stave_use_draw * out_stavemagn)/10; if (ps_chcount > 0) ps_printf("\n"); switch(stavelines) { case 1: y -= 4 * out_stavemagn; /* Fall through */ case 2: y -= 4 * out_stavemagn; /* Fall through */ case 3: gap = 8 * out_stavemagn; break; default: gap = 4 * out_stavemagn; break; } ps_printf("%s %d ST\n", SFF("%f %f %f %f %f", psxtran(x), psytran(y), rightx - leftx, thickness, gap), stavelines); return; } /* Output the stave using music font characters */ if (stave_use_widechars) { ch = stavechar10[stavelines]; i = 100; } else { ch = stavechar1[stavelines]; i = 10; } /* Select appropriate size of music font */ ps_mfdata.size = 10 * out_stavemagn; if (ps_needchangefont(font_mf, &ps_mfdata, FALSE)) ps_setfont(font_mf, &ps_mfdata, FALSE); /* Build character string of (optionally) 100-point & 10-point chars; some of them are non-printing and have to be octal-escaped. */ Ustrcpy(buff, "("); for (; i >= 10; i /= 10) { if (ch < 127) { sbuff[0] = ch; sbuff[1] = 0; } else sprintf(CS sbuff, "\\%03o", ch); chwidth = i * out_stavemagn; while (rightx - x >= chwidth) { Ustrcat(buff, sbuff); x += chwidth; } ch = stavechar1[stavelines]; } /* Now print it, forcing it onto a separate line (for human legibility). We use INT_MAX/2 because the routine adds the length to ps_chcount to check for overflow. */ Ustrcat(buff, ")"); if (ps_chcount > 0) ps_chcount = INT_MAX/2; ps_printf("%s%s s", buff, SFF("%f %f", psxtran(main_righttoleft? x:leftx), psytran(y))); /* If there's a fraction of 10 points left, deal with it */ if (x < rightx) ps_printf(" (%s)%s s", sbuff, SFF("%f %f", psxtran(main_righttoleft? rightx : (rightx - chwidth)), psytran(y))); ps_printf("\n"); } /************************************************* * Output one virtual musical character * *************************************************/ /* Certain musical characters are given identity numbers in a virtual music font that may or may not correspond directly to characters in the actual music font. The table called out_mftable[] defines how they are to be printed. Arguments: x the x coordinate y the y coordinate ch the character's identity number pointsize the point size Returns: nothing */ void ps_muschar(int32_t x, int32_t y, uint32_t ch, int32_t pointsize) { int32_t xfudge = 0; if (ps_changecolour) setcolour(); /* Use a local font data structure which has no rotation. */ ps_mfdata.size = pointsize; /* There may be a chain of strings/displacements */ for (mfstr *p = out_mftable[ch]; p != NULL; p = p->next) { int i = 0; int32_t nxfudge = 0; uint32_t c = p->ch; uint32_t s[8]; /* Nasty fudge for bracketed accidentals in right-to-left mode: when the brackets come as individual values, swap them round and fudge the spacing of the remaining chars. This is needed for flats, in practice. */ if (main_righttoleft) switch (c) { case 139: c = 140; nxfudge = -1600; break; case 140: c = 139; break; case 141: c = 142; nxfudge = -1600; break; case 142: c = 141; break; default: break; } /* Extract up to 4 music font characters from c */ while (c != 0) { s[i++] = c & 255; c >>= 8; } s[i] = 0; ps_basic_string(s, font_mf, &ps_mfdata, TRUE, x + mac_muldiv(p->x, pointsize, 10000) + xfudge, y - mac_muldiv(p->y, pointsize, 10000)); xfudge += nxfudge; } } /************************************************* * Output an ASCII string in the music font * *************************************************/ /* There are two versions, one with absolute coordinates, and one with relative coordinates, to save having to pass a flag each time (most of the calls are with absolute coordinates). The strings are always quite short; we have to convert to 32-bits by calling string_pmw(). Arguments: s the string pointsize the pointsize for the font x the x coordinate y the y coordinate Returns: nothing */ void ps_musstring(uschar *s, int32_t pointsize, int32_t x, int32_t y) { ps_mfdata.size = pointsize; ps_string(string_pmw(s, font_mf), &ps_mfdata, &x, &y, TRUE, FALSE); } void ps_relmusstring(uschar *s, int32_t pointsize, int32_t x, int32_t y) { ps_mfdata.size = pointsize; ps_string(string_pmw(s, font_mf), &ps_mfdata, &x, &y, FALSE, FALSE); } /************************************************* * Output a beam line * *************************************************/ /* This function is called several times for a multi-line beam, with the level number increasing each time. Information about the slope and other features is in beam_* variables. Arguments: x0 starting x coordinate, relative to start of bar x1 ending x coordinate, relative to start of bar level level number levelchange set nonzero for accellerando and ritardando beams Returns: nothing */ void ps_beam(int32_t x0, int32_t x1, int level, int levelchange) { int sign = (beam_upflag)? (+1) : (-1); int32_t depth = -out_stavemagn*((n_fontsize * sign * (int)(((double)curmovt->beamthickness) / cos(atan((double)beam_slope/1000.0))))/10000)/1000; int32_t y0, y1; if (ps_changecolour) setcolour(); y1 = y0 = out_ystave - beam_firstY + mac_muldiv(n_fontsize, (level - 1) * sign * 3 * out_stavemagn, 10000); y0 -= mac_muldiv(x0-beam_firstX, beam_slope, 1000); y1 -= mac_muldiv(x1-beam_firstX, beam_slope, 1000); /* For accellerando and ritardando beams, adjust the ends, and make a little bit thinner. */ if (levelchange != 0) { int32_t adjust = mac_muldiv(n_fontsize, abs(levelchange) * sign * 4 * out_stavemagn, 10000); depth = (depth*17)/20; if (levelchange < 0) { y0 += adjust; y1 += adjust/8; } else { y0 += adjust/8; y1 += adjust; } } /* Get absolute x values and write the PostScript */ x0 += out_barx; x1 += out_barx; /* When printing right-to-left, adjust by one note's printing adjustment. The value can't just be read from the font, as it needs fiddling, so we just fudge a fixed value. */ if (main_righttoleft) { int32_t adjust = sign * mac_muldiv(n_fontsize/2, out_stavemagn, 1000); x0 -= adjust; x1 -= adjust; } ps_printf("%s", SFF(" %f %f %f %f %f m", depth, psxtran(x1), psytran(y1), psxtran(x0), psytran(y0))); } /************************************************* * Output a slur * *************************************************/ /* This was the original way of drawing all slurs. Additional complication in slurs has resulted in a function called out_slur() that uses more primitive output functions, and which could in principle be used for all slurs. However, we retain ps_slur for complete, non-dashed, curved slurs, for compatibility and to keep the size of the PostScript down in many common cases. To avoid too many arguments, the rare left/right control point adjustment parameters are placed in global variables (they are usually zero). Arguments: x0 start x coordinate y0 start y coordinate x1 end x coordinate y1 end y coordinate flags slur flags co "centre out" adjustment Returns: nothing */ void ps_slur(int32_t x0, int32_t y0, int32_t x1, int32_t y1, uint32_t flags, int32_t co) { int32_t length = x1 - x0; if (ps_changecolour) setcolour(); y0 = out_ystave - y0; y1 = out_ystave - y1; x0 += 3*out_stavemagn; x1 += 3*out_stavemagn; co = ((co + ((length > 20000)? 6000 : (length*6)/20)) * out_stavemagn)/1000; if ((out_slurclx | out_slurcly | out_slurcrx | out_slurcry) != 0) { ps_printf("%s", SFF(" %f %f %f %f cA", out_slurclx, out_slurcly, out_slurcrx, out_slurcry)); ps_slurA = TRUE; } else if (ps_slurA) { ps_printf(" 0 0 0 0 cA"); /* default extra control movements */ ps_slurA = FALSE; } /* Keeping these as two separate calls enables the output to be split. */ ps_printf("%s", SFF(" %f %f %f %f", psxtran(x0), psytran(y0), psxtran(x1), psytran(y1))); ps_printf(" %s cv%s%s", sff(((flags & sflag_b) != 0)? (-co) : co), ((flags & sflag_w) == 0)? "" : "w", ((flags & sflag_e) == 0)? "" : "e"); } /************************************************* * Output a straight line * *************************************************/ /* The origin for y coordinates is in out_ystave, typically the bottom line of a stave. Arguments: x0 start x coordinate y0 start y coordinate x1 end x coordinate y1 end y coordinate thickness line thickness flags for various kinds of line Returns: nothing */ void ps_line(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t thickness, uint32_t flags) { uschar *reset = US""; double xx = (double)((int32_t)(x1 - x0)); double yy = (double)((int32_t)(y1 - y0)); double zz = sqrt(xx*xx + yy*yy); int32_t len = (int32_t)zz; /* Don't cast sqrt; it gives a compiler warning */ int32_t dashlength = 0; int32_t gaplength = 0; int dashcount, spacecount; if (ps_changecolour) setcolour(); /* Handle "editorial" lines: won't exist if dashed or dotted */ if ((flags & tief_editorial) != 0) { ps_printf("%s", SFF(" GS %f %f T %f R 0 2.0 Mt 0 -2.0 Lt S GR", psxtran((x0+x1)/2), psytran(out_ystave - (y0+y1)/2), (int32_t)(atan2(yy, xx)*180000.0/3.14159))); } /* Compute new dash parameters if required */ if ((flags & tief_dashed) != 0) { dashlength = 3*out_stavemagn; dashcount = (len/dashlength) | 1; spacecount = dashcount/2; if (dashcount != 1) { gaplength = (len - ((dashcount+1)*dashlength)/2)/spacecount; ps_printf("%s", SFF("[%f %f] 0 Sd", dashlength, gaplength)); reset = US"[] 0 Sd"; } } else if ((flags & tief_dotted) != 0) { dashlength = 100; dashcount = (len + 4*out_stavemagn)/(4*out_stavemagn + dashlength); if (dashcount > 1) { gaplength = (len - dashcount * dashlength)/(dashcount - 1); ps_printf("%s", SFF(" 1 Slc[%f %f] 0 Sd", dashlength, gaplength)); thickness = out_stavemagn; reset = US" 0 Slc[] 0 Sd"; } } /* If just set dash parameters, take note of the save flag. */ if (gaplength > 0) { if ((flags & tief_savedash) != 0) { reset = US""; out_dashlength = dashlength; out_dashgaplength = gaplength; } else out_dashlength = out_dashgaplength = 0; } /* Do the line */ ps_printf(" %s l%s", SFF("%f %f %f %f %f", psxtran(x1), psytran(out_ystave - y1), psxtran(x0), psytran(out_ystave - y0), thickness), reset); } /************************************************* * Output a series of lines * *************************************************/ /* This is only used for sequences of plain lines (no dashes, etc.) Arguments: x vector of x coordinates y vector of y coordinates count number of vector elements thickness line thickness Returns: nothing */ void ps_lines(int32_t *x, int32_t *y, int count, int32_t thickness) { if (ps_changecolour) setcolour(); for (int i = count - 1; i > 0; i--) ps_printf("%s", SFF(" %f %f", psxtran(x[i]), psytran(out_ystave - y[i]))); ps_printf(" %d %s", count - 1, SFF("%f %f %f ll", psxtran(x[0]), psytran(out_ystave - y[0]), thickness)); } /************************************************* * Stroke or fill a path * *************************************************/ /* Used by ps_path() and ps_abspath() below. Argument: line thickness for stroke; -1 for fill Returns: nothing */ static void strokeorfill(int32_t thickness) { if (ps_changecolour) setcolour(); if (thickness >= 0) ps_printf(" %s Slw S", sff(thickness)); else ps_printf(" F"); } /************************************************* * Output and stroke or fill a path * *************************************************/ /* The path can contain moves, lines, and curves. We generate in-line PostScript for this one, using the saved grey level. Arguments: x vector of x coordinates y vector of y coordinates c vector of move/line/curve operators thickness thickness of the lines for stroke; negative for fill Returns: nothing */ void ps_path(int32_t *x, int32_t *y, int *c, int32_t thickness) { while (*c != path_end) switch(*c++) { case path_move: ps_printf("%s", SFF(" %f %f Mt", psxtran(*x++), psytran(out_ystave - *y++))); break; case path_line: ps_printf("%s", SFF(" %f %f Lt", psxtran(*x++), psytran(out_ystave - *y++))); break; case path_curve: ps_printf("%s", SFF(" %f %f %f %f %f %f Ct", psxtran(x[0]), psytran(out_ystave - y[0]), psxtran(x[1]), psytran(out_ystave - y[1]), psxtran(x[2]), psytran(out_ystave - y[2]))); x += 3; y += 3; break; } strokeorfill(thickness); } /************************************************* * Output and stroke or fill an absolute path * *************************************************/ /* This function (similar to the one above) is used for fancy slurs, when the coordinate system has been rotated and translated so that its origin is at the centre of the slur with the x axis joining the endpoints. The coordinates must therefore not use psxtran/psytran. Arguments: x vector of x coordinates y vector of y coordinates c vector of move/line/curve operators thickness thickness of the lines for stroke; negative for fill only Returns: nothing */ void ps_abspath(int32_t *x, int32_t *y, int *c, int32_t thickness) { while (*c != path_end) switch(*c++) { case path_move: ps_printf("%s", SFF(" %f %f Mt", *x++, *y++)); break; case path_line: ps_printf("%s", SFF(" %f %f Lt", *x++, *y++)); break; case path_curve: ps_printf("%s", SFF(" %f %f %f %f %f %f Ct", x[0], y[0], x[1], y[1], x[2], y[2])); x += 3; y += 3; break; } strokeorfill(thickness); } /************************************************* * Set gray level or colour * *************************************************/ /* All that happens here is that the gray level or colour is remembered for later use. Argument: the colour or the gray level Returns: nothing */ void ps_setcolour(int32_t *colour) { memcpy(ps_wantcolour, colour, 3 * sizeof(int32_t)); ps_changecolour = ps_wantcolour[0] != ps_curcolour[0] || ps_wantcolour[1] != ps_curcolour[1] || ps_wantcolour[2] != ps_curcolour[2]; } void ps_setgray(int32_t gray) { int temp[3]; temp[0] = temp[1] = temp[2] = gray; ps_setcolour(temp); } /************************************************* * Retrieve current colour * *************************************************/ /* Used to preserve the colour over a drawing. Argument: pointer to where to put the colour values Returns: nothing */ void ps_getcolour(int32_t *colour) { memcpy(colour, ps_wantcolour, 3 * sizeof(int32_t)); } /************************************************* * Set dash * *************************************************/ /* The set values are remembered so that repetition is avoided. Arguments: dashlength the dash length gaplength the gap length Returns: nothing */ void ps_setdash(int32_t dashlength, int32_t gaplength) { if (dashlength != out_dashlength || gaplength != out_dashgaplength) { if (dashlength == 0 && gaplength == 0) ps_printf("[] 0 Sd"); else ps_printf("%s", SFF("[%f %f] 0 Sd", dashlength, gaplength)); out_dashlength = dashlength; out_dashgaplength = gaplength; } } /************************************************* * Set cap and join * *************************************************/ /* The set value is remembered so that repetition is avoided. Argument: the cap and join flag bits Returns: nothing */ void ps_setcapandjoin(uint32_t caj) { if (caj != ps_caj) { if ((caj & caj_round) != 0) ps_printf(" 1 Slc"); else if ((caj & caj_square) != 0) ps_printf(" 2 Slc"); else ps_printf(" 0 Slc"); if ((caj & caj_round_join) != 0) ps_printf(" 1 Slj"); else if ((caj & caj_bevel_join) != 0) ps_printf(" 2 Slj"); else ps_printf(" 0 Slj"); ps_caj = caj; } } /************************************************* * Gsave and Grestore * *************************************************/ /* These functions are called from setslur.c when the coordinate system is translated and rotated for the drawing of a fancy slur. They translate directly into PostScript shorthand for gsave and grestore. Arguments: none Returns: nothing */ void ps_gsave(void) { ps_printf(" GS"); } void ps_grestore(void) { ps_printf(" GR"); } /************************************************* * Rotate * *************************************************/ /* This function rotates the coordinate system. Argument: the amount to rotate, in radians Returns: nothing */ void ps_rotate(double r) { if (r != 0.0) ps_printf(" %s R", sff((int32_t)((r/(4.0 * atan(1.0)))*180000.0))); } /************************************************* * Translate * *************************************************/ /* This function translates the coordinate system. Arguments: x x coordinate of the new origin y y coordinate of the new origin Returns: nothing */ void ps_translate(int32_t x, int32_t y) { ps_printf("%s", SFF(" %f %f T", psxtran(x), psytran(out_ystave - y))); } /************************************************* * Start a given bar for a given stave * *************************************************/ /* Force a new line and output an identifying comment. Arguments: barnumber the absolute bar number stave the stave */ void ps_startbar(int barnumber, int stave) { if (ps_chcount != 0) ps_chcount = INT_MAX/2; ps_printf("%%%s/%d\n", sfb(curmovt->barvector[barnumber]), stave); } /************************************************* * Include a file in the PostScript output * *************************************************/ /* This function is currently called only for the main header file. Certain lines in the header are included only when we are generating an EPS file. They are flagged in the header file with %EPS. Otherwise, if a line starts with %, it is copied only if it starts with %%. Blank lines are omitted. This function used also to be called when there were facilities for including arbitrary PostScript files, prior to release 5. This feature has never been re-instated, but could be if there is ever a demand. For this reason the following logic has not been removed: If the included file is an EPS file, the insert is wrapped in save/restore and the a4, showpage, and copypage commands are disabled. Arguments: s the file name relativize if TRUE, relativize non-absolute path to the current input file Returns: nothing */ static void ps_include(const uschar *s, BOOL relativize) { FILE *f; BOOL line1 = TRUE; BOOL insert_eps = FALSE; while (Ustrlen(s) + 1 > read_stringbuffer_size) string_extend_buffer(); Ustrcpy(read_stringbuffer, s); if (relativize) string_relativize(); f = Ufopen(read_stringbuffer, "r"); if (f == NULL) error(ERR23, read_stringbuffer, strerror(errno)); /* Hard */ while (Ufgets(read_stringbuffer, read_stringbuffer_size, f) != NULL) { if (line1 && Ustrncmp(read_stringbuffer, "%!PS-Adobe", 10) == 0 && Ustrstr(read_stringbuffer, "EPSF-") != NULL) { insert_eps = TRUE; fputs("/epspicsave save def/a4{null pop}def\n", ps_file); fputs("/showpage{initgraphics}def/copypage{null pop}def\n", ps_file); } else { if (ps_EPS && Ustrncmp(read_stringbuffer, "%EPS ", 5) == 0) Ufputs(read_stringbuffer+5, ps_file); else if (read_stringbuffer[0] != '\n' && (read_stringbuffer[0] != '%' || read_stringbuffer[1] == '%')) Ufputs(read_stringbuffer, ps_file); } line1 = FALSE; } if (read_stringbuffer[Ustrlen(read_stringbuffer)-1] != '\n') fputc('\n', ps_file); if (insert_eps) fputs("epspicsave restore\n", ps_file); fclose(f); ps_chcount = 0; } /************************************************* * Include a font in the output * *************************************************/ /* Argument: name the name of the font ext a file extension or empty string Returns: nothing */ static void include_font(uschar *name, const char *ext) { FILE *f = NULL; uschar *s; uschar *fextra, *fdefault; uschar buff[256]; /* If this is one of the PMW fonts, seek it in the psfonts directories, otherwise look in the general fonts directories. */ if (Ustrncmp(name, "PMW-", 4) == 0) { fextra = font_music_extra; fdefault = font_music_default; } else { fextra = font_data_extra; fdefault = font_data_default; } /* font_finddata(..., TRUE) gives a hard error if the file cannot be found. */ f = font_finddata(name, ext, fextra, fdefault, buff, TRUE); /* Copy from "%%BeginResource:" or the start of the file to "%%EndResource" or the end of the file. */ while ((s = Ufgets(buff, sizeof(buff), f)) != NULL) if (Ustrncmp(buff, "%%BeginResource:", 16) == 0) break; if (s == NULL) { fprintf(ps_file, "\n%%%%BeginResource: font %s\n", name); rewind(f); } else fprintf(ps_file, "%s", CS buff); while ((s = Ufgets(buff, sizeof(buff), f)) != NULL) { fprintf(ps_file, "%s", CS buff); if (Ustrncmp(buff, "%%EndResource", 13) == 0) break; } if (s == NULL) fprintf(ps_file, "\n%%%%EndResource\n\n"); fclose(f); } /************************************************* * Produce PostScript output * *************************************************/ /* This is the controlling function for generating PostScript output. If the print_imposition has the special value pc_EPS, we are producing EPS PostScript, and a number of page-related parameters are then ignored. Arguments: none Returns: nothing */ void ps_go(void) { time_t timer; int32_t w = 0, d = 0; int count = 0; int fcount = 1; int fonts_to_include[font_tablen]; int fonts_to_include_count = 0; int32_t scaled_main_sheetwidth = mac_muldiv(main_sheetwidth, print_magnification, 1000); /* Initialize the current page number and page list data */ ps_EPS = (print_imposition == pc_EPS); setup_pagelist(ps_EPS? FALSE : print_reverse); /* Set the top of page y coordinate; the PostScript is relative to the usual bottom of page origin. Before the invention of the imposition parameter, we computed this from the pagelength, but with some minima imposed. For compatibility, keep this unchanged for cases when imposition is defaulted. For EPS, we use the sheetsize, whatever it may be. */ if (ps_EPS) ps_ymax = main_truepagelength + 50000; else { if (main_landscape) { if (main_truepagelength < 492000) ps_ymax = mac_muldiv(526000, 1000, print_magnification); else ps_ymax = main_truepagelength + 34000; } else { if (main_truepagelength < 720000) ps_ymax = mac_muldiv(770000, 1000, print_magnification); else ps_ymax = main_truepagelength + 50000; } /* Take the opportunity of setting true paper sizes for imposing */ switch(print_imposition) { case pc_a5ona4: w = 595000; d = 842000; ps_ymax = main_truepagelength + 50000; break; case pc_a4ona3: w = 842000; d = 1190000; ps_ymax = main_truepagelength + 50000; break; } } /* Adjust paper size to the magnification */ print_sheetwidth = mac_muldiv(main_sheetwidth, 1000, main_magnification); ps_ymax = mac_muldiv(ps_ymax, 1000, main_magnification); /* Initializing stuff at the start of the PostScript file. We are attempting to keep to the 3.0 structuring conventions. Initial comments ("header") come first. */ if (!main_testing) { time (&timer); fprintf(ps_file, "%%!PS-Adobe-3.0%s\n", ps_EPS? " EPSF-3.0" : ""); fprintf(ps_file, "%%%%Creator: Philip's Music Writer (PMW) %s\n", PMW_VERSION); fprintf(ps_file, "%%%%CreationDate: %s", ctime(&timer)); } if (ps_EPS) fprintf(ps_file, "%%%%BoundingBox: (atend)\n"); else fprintf(ps_file, "%%%%Pages: (atend)\n"); fprintf(ps_file, "%%%%DocumentNeededResources: font "); /* Scan the fonts, set the ps id and process each unique one, remembering those that are to be included in the output. */ for (int i = 0; i < font_tablen; i++) { fontstr *fs; int fontid, j; for (j = 0; j < i; j++) if (font_table[i] == font_table[j]) break; ps_IdStrings[i] = font_IdStrings[j]; if (j != i) continue; /* Seen this one already */ if (++fcount > 3) { fprintf(ps_file, "\n%%%%+ font "); fcount = 1; } fontid = font_table[i]; fs = font_list + fontid; fprintf(ps_file, "%s ", fs->name); /* Remember which fonts are to be included. If -incPMWfont was set, do this automatically for music fonts. */ if ((fs->flags & ff_include) != 0 || (print_incPMWfont && (Ustrcmp(fs->name, "PMW-Music") == 0 || Ustrcmp(fs->name, "PMW-Alpha") == 0))) fonts_to_include[fonts_to_include_count++] = fontid; } fprintf(ps_file, "\n"); /* List the included fonts */ if (fonts_to_include_count > 0) { fcount = 1; fprintf(ps_file, "%%%%DocumentSuppliedResources: font"); for (int i = 0; i < fonts_to_include_count; i++) { if (++fcount > 3) { fprintf(ps_file, "\n%%%%+ font"); fcount = 1; } fprintf(ps_file, " %s", (font_list[fonts_to_include[i]]).name); } fprintf(ps_file, "\n"); } if (!ps_EPS) fprintf(ps_file, "%%%%Requirements: numcopies(%d)\n", print_copies); fprintf(ps_file, "%%%%EndComments\n\n"); /* Deal with a known paper size */ switch (main_sheetsize) { case sheet_A3: fprintf(ps_file, "%%%%BeginPaperSize: a3\na3\n%%%%EndPaperSize\n\n"); break; case sheet_A4: fprintf(ps_file, "%%%%BeginPaperSize: a4\na4\n%%%%EndPaperSize\n\n"); break; case sheet_A5: fprintf(ps_file, "%%%%BeginPaperSize: a5\na5\n%%%%EndPaperSize\n\n"); break; case sheet_B5: fprintf(ps_file, "%%%%BeginPaperSize: b5\nb5\n%%%%EndPaperSize\n\n"); break; case sheet_letter: fprintf(ps_file, "%%%%BeginPaperSize: letter\nletter\n%%%%EndPaperSize\n\n"); break; default: break; } /* Next, the file's prologue, which contains any bespoke font encodings and the standard PostScript header. */ fprintf(ps_file, "%%%%BeginProlog\n"); for (int i = 0; i < font_tablen; i++) { int j; for (j = 0; j < i; j++) if (font_table[i] == font_table[j]) break; if (j == i) { fontstr *f = font_list + font_table[i]; if (f->encoding != NULL) { for (int k = 0; k < FONTWIDTHS_SIZE; k += 256) { uschar name[128]; sprintf(CS name, "%sEnc%c", f->name, (k == 0)? 'L':'U'); if (k == 0) fprintf(ps_file, "%%%%Custom encodings for %s\n", f->name); fprintf(ps_file, "/%s 256 array def\n", name); /* Scan the relevant half of the encoding */ for (int cc = k; cc < k + 256; ) { int ce, cn; int notdefcount = 0; /* Look for next group of more than 16 .notdefs */ for (cn = cc; cn < k + 256; cn++) { if (f->encoding[cn] == NULL) { int ct; for (ct = cn + 1; ct < k + 256; ct++) if (f->encoding[ct] != NULL) break; if (ct - cn >= 16) { notdefcount = ct - cn; break; } cn = ct; } } /* Set the end of a non-long-notdef sequence */ ce = (cn >= k + 256)? k + 256 : cn; /* Output a sequence */ if (ce - cc == 1) { fprintf(ps_file, "%s %d /%s put\n", name, cc - k, (f->encoding[cc] == NULL)? US".notdef" : f->encoding[cc]); } else if (ce - cc > 0) { int n = 0; fprintf(ps_file, "%s %d [\n", name, cc - k); for (; cc < ce; cc++) { if (n++ > 7) { fprintf(ps_file, "\n"); n = 1; } fprintf(ps_file, "/%s", (f->encoding[cc] == NULL)? US".notdef" : f->encoding[cc]); } fprintf(ps_file, "] putinterval\n"); } /* Set start of next sequence */ cc = ce; /* If we stopped at a sequence of .notdefs, output them */ if (notdefcount > 0) { fprintf(ps_file, "%d 1 %d {%s exch /.notdef put} for\n", cc - k, cc - k + notdefcount - 1, name); cc += notdefcount; } } /* End handling one sequence */ } /* 2 x loop for two encodings */ } /* End handling encoding */ } /* End unique font handling */ } /* End font scan */ /* In testing mode we omit the standard header (to save space in the test output files). The name of the header file is NOT relative to the main input file. If it is not absolute, it is taken relative to the current directory. */ if (!main_testing) ps_include(ps_header, FALSE); else fprintf(ps_file, "%%%%Standard Header Omitted (testing)\n"); fprintf(ps_file, "%%%%EndProlog\n\n"); /* The setup section sets up the printing device. We include the font finding in here, as it seems the right place. Include any relevant fonts in the output file. */ fprintf(ps_file, "%%%%BeginSetup\n"); for (int i = 0; i < fonts_to_include_count; i++) { uschar *name = font_list[fonts_to_include[i]].name; include_font(name, (Ustrcmp(name, "PMW-Alpha") == 0)? "" : ".pfa"); } /* Now set up the fonts */ for (int i = 0; i < font_tablen; i++) { int j; for (j = 0; j < i; j++) if (font_table[i] == font_table[j]) break; if (j == i) { fontstr *f = font_list + font_table[i]; uschar *s = f->name; fprintf(ps_file, "%%%%IncludeResource: font %s\n", s); fprintf(ps_file, "/%s /%sX /%s inf\n", font_IdStrings[i], font_IdStrings[i], s); } } /* Unless EPS, we used to select A4 paper, but only once (to allow concatenated files). However, this seems to give trouble with Ghostview for doing magnify windows, and it doesn't seem to affect modern PostScript printers anyway. So it is no longer done. Select the number of copies if not 1, set manual feed if the flag is set, deal with duplex and tumble options, and end the setup section. */ if (!ps_EPS) { /********* fprintf(ps_file, "currentdict /a4_done known not {a4 /a4_done true def} if\n"); **********/ if (print_copies != 1) fprintf(ps_file, "/#copies %d def\n", print_copies); if (print_manualfeed || print_duplex) { fprintf(ps_file, "statusdict begin"); if (print_manualfeed) fprintf(ps_file, " /manualfeed true def"); if (print_duplex) { fprintf(ps_file, " true setduplexmode"); if (print_tumble) fprintf(ps_file, " true settumble"); } fprintf(ps_file, " end\n"); } } fprintf(ps_file, "%%%%EndSetup\n\n"); /* Now the requested pages. The get_pages() function returns one or two pages. When printing 2-up either one of them may be null. Start with curmovt set to NULL so that a "change of movement" happens at the start. */ curmovt = NULL; for (;;) { pagestr *ps_1stpage, *ps_2ndpage; int32_t scaled = 1000; BOOL recto = FALSE; if (!get_pages(&ps_1stpage, &ps_2ndpage)) break; if (ps_1stpage != NULL && ps_2ndpage != NULL) fprintf(ps_file, "%%%%Page: %d&%d %d\n", ps_1stpage->number, ps_2ndpage->number, ++count); else if (ps_1stpage != NULL) { fprintf(ps_file, "%%%%Page: %d %d\n", ps_1stpage->number, ++count); recto = (ps_1stpage->number & 1) != 0; } else { fprintf(ps_file, "%%%%Page: %d %d\n", ps_2ndpage->number, ++count); recto = (ps_2ndpage->number & 1) != 0; } fprintf(ps_file, "%%%%BeginPageSetup\n/pagesave save def\n"); ps_chcount = 0; /* No characters in the current line. */ ps_curfont = -1; /* No font currently set. */ ps_caj = 0; /* Cap-and-join setting */ /* Not much to do for EPS */ if (ps_EPS) { if (main_righttoleft) ps_printf("%s 0 T -1 1 scale\n", sff(main_sheetwidth)); if (main_magnification != 1000) ps_printf("%s dup scale\n", sff(main_magnification)); } /* Not EPS. Swap pages for righttoleft. Then move the origin to the desired position. The values 1 (upright, 1-up, portrait), 2 (sideways, 2-up, portrait), and 4 (sideways, 1-up, landscape) use bottom left, i.e. no translation, but we have to generate an adjustment for type 2 if sheetwidth isn't half the paper size. The gutter facility is available only when printing 1-up. */ else { if (main_righttoleft) { pagestr *temp = ps_1stpage; ps_1stpage = ps_2ndpage; ps_2ndpage = temp; } switch (print_pageorigin) { case 0: /* A4 Sideways, 1-up, portrait */ ps_printf("0 595 T -90 R\n"); if (print_gutter != 0) ps_printf("%s 0 T\n", sff(recto? print_gutter : -print_gutter)); break; case 1: /* Upright, 1-up, portrait */ if (print_gutter != 0) ps_printf("%s 0 T\n", sff(recto? print_gutter : -print_gutter)); break; case 2: /* Sideways, 2-up, portrait */ if (d/2 != scaled_main_sheetwidth) ps_printf("%s 0 T\n", sff((d/2 - scaled_main_sheetwidth)/(print_pamphlet? 1:2))); break; case 3: /* Upright, 2-up, portrait */ ps_printf("0 %s T -90 R\n", sff(d - (d/2 - scaled_main_sheetwidth)/(print_pamphlet? 1:2))); break; case 4: /* A4 Sideways, 1-up, landscape */ if (print_gutter != 0) ps_printf("%s 0 T\n", sff(recto? print_gutter : -print_gutter)); break; case 5: /* Upright, 1-up, landscape; page size defined by sheetsize */ /* Sheetwidth is original sheet height */ ps_printf("0 %s T -90 R\n", sff(scaled_main_sheetwidth)); break; case 6: /* A4 Sideways, 2-up, landscape */ ps_printf("%s %s T -90 R\n", sff(d/2), sff(w)); break; case 7: /* Upright, 2-up, landscape */ ps_printf("0 %s T\n", sff(d/2)); break; } if (print_image_xadjust != 0 || print_image_yadjust != 0) ps_printf("%s", SFF("%f %f T\n", print_image_xadjust, print_image_yadjust)); if (main_righttoleft) ps_printf("%s 0 T -1 1 scale\n", sff(scaled_main_sheetwidth)); if (main_magnification != 1000 || print_magnification != 1000) { scaled = mac_muldiv(main_magnification, print_magnification, 1000); ps_printf("%s dup scale\n", sff(scaled)); } } /* End of setup */ fprintf(ps_file, "%%%%EndPageSetup\n"); /* When printing 2-up, we may get one or both pages; when not printing 2-up, we may get either page given, but not both. */ if (ps_1stpage != NULL) { curpage = ps_1stpage; out_page(); } if (ps_2ndpage != NULL) { if (ps_chcount > 0) { fprintf(ps_file, "\n"); ps_chcount = 0; } if (print_imposition == pc_a5ona4 || print_imposition == pc_a4ona3) { int sign = main_righttoleft? -1 : +1; int32_t dd = mac_muldiv(d, 500, scaled); if (main_landscape) ps_printf("0 %s T\n", sff(-dd)); else ps_printf("%s 0 T\n", sff(sign * (print_pamphlet? mac_muldiv(main_sheetwidth, 1000, main_magnification) : dd))); } curpage = ps_2ndpage; out_page(); } /* EPS files are permitted to contain showpage, and this is actually useful because it means an EPS file can be printed or displayed. So we don't cut out showpage. */ fprintf(ps_file, "\npagesave restore showpage\n\n"); } /* Do PostScript trailer */ fprintf(ps_file, "%%%%Trailer\n"); if (ps_EPS) { if (main_righttoleft) ps_printf("%s", SFF("%%%%BoundingBox: %f %f %f %f\n", main_sheetwidth - mac_muldiv(psxtran(out_bbox[2]), main_magnification, 1000), mac_muldiv(psytran(out_bbox[1]), main_magnification, 1000), main_sheetwidth - mac_muldiv(psxtran(out_bbox[0]), main_magnification, 1000), mac_muldiv(psytran(out_bbox[3]), main_magnification, 1000))); else ps_printf("%s", SFF("%%%%BoundingBox: %f %f %f %f\n", mac_muldiv(psxtran(out_bbox[0]), main_magnification, 1000), mac_muldiv(psytran(out_bbox[1]), main_magnification, 1000), mac_muldiv(psxtran(out_bbox[2]), main_magnification, 1000), mac_muldiv(psytran(out_bbox[3]), main_magnification, 1000))); } else fprintf(ps_file, "%%%%Pages: %d\n", count); } /* End of ps.c */ pmw-5.22/src/preprocess.c0000644000222100022210000003056414541067540013471 0ustar ph10ph10/************************************************* * PMW preprocess one input line * *************************************************/ /* Copyright Philip Hazel 2022 */ /* This file created: December 2020 */ /* This file last modified: July 2022 */ /* This file contains code for handling pre-processing directives. */ #include "pmw.h" /************************************************* * Deal with pre-processing directive * *************************************************/ /* We enter with read_c containing the first letter of the directive's name, so we are guaranteed to read a word. We can use normal item reading routines, but must take care not to pass the end of the line, because a pre-processing directive cannot straddle a line boundary. */ void preprocess_line(void) { BOOL was_include = FALSE; read_nextword(); read_sigcNL(); DEBUG(D_preprocess) fprintf(stderr, "preprocess *%s\n", read_wordbuffer); /* "if", "else", and "fi" must always be processed, whether or not we are currently skipping. */ if (Ustrcmp(read_wordbuffer, "if") == 0) { BOOL OK; if (read_skipdepth > 0) { read_skipdepth++; read_i = main_readlength; read_c = '\n'; DEBUG(D_preprocess) fprintf(stderr, "already skipping\n"); return; } /* Loop for multiple "or" conditions */ for (;;) { OK = TRUE; read_wordbuffer[0] = 0; if (read_c != '\n') read_nextword(); if (Ustrcmp(read_wordbuffer, "not") == 0) { OK = !OK; read_sigcNL(); read_wordbuffer[0] = 0; if (read_c != '\n') read_nextword(); } if (read_wordbuffer[0] == 0) { error_skip(ERR8, '\n', "word"); break; } if (Ustrcmp(read_wordbuffer, "score") == 0) { if (curmovt->select_staves != ~0uL) OK = !OK; } else if (Ustrcmp(read_wordbuffer, "part") == 0) { if (curmovt->select_staves == ~0uL) OK = !OK; } else if (Ustrcmp(read_wordbuffer, "staff") == 0 || Ustrcmp(read_wordbuffer, "stave") == 0 || Ustrcmp(read_wordbuffer, "staves") == 0) { int rc; uint64_t list; uschar *endptr; read_sigcNL(); if (!isdigit(read_c)) { error_skip(ERR8, '\n', "number"); break; } rc = read_stavelist(main_readbuffer + read_i - 1, &endptr, &list, NULL); if (rc != 0) { error_skip(rc, '\n'); } else { read_i = endptr - main_readbuffer; read_nextc(); } list |= 1uL; /* Stave zero is always selected */ if (curmovt->select_staves != list) OK = !OK; } /* Deal with definition test */ else if (Ustrcmp(read_wordbuffer, "undef") == 0) { int i = 0; read_sigcNL(); /* We cannot use read_nextword() because macro names may start with a digit and are case-sensitive. */ if (isalnum(read_c)) { do { if (i >= WORDBUFFER_SIZE - 1) error(ERR7, "macro name", WORDBUFFER_SIZE - 1); /* Hard */ read_wordbuffer[i++] = read_c; read_nextc(); } while (isalnum(read_c)); } read_wordbuffer[i] = 0; if (read_wordbuffer[0] == 0) error_skip(ERR8, '\n', "macro name"); else { if (tree_search(macro_tree, read_wordbuffer) != NULL) OK = !OK; } } /* Test if any format is set */ else if (Ustrcmp(read_wordbuffer, "format") == 0) { if (main_format == NULL) OK = !OK; } /* Test transposition */ else if (Ustrcmp(read_wordbuffer, "transpose") == 0) { read_sigcNL(); if (isdigit(read_c) || read_c == '-' || read_c == '+') { int x; (void)read_expect_integer(&x, FALSE, TRUE); if (active_transpose != 2 * x) OK = !OK; } else if (active_transpose == NO_TRANSPOSE) OK = !OK; } /* Not recognized; take as format word */ else { if (main_format == NULL || Ustrcmp(read_wordbuffer, main_format) != 0) OK = !OK; else main_format_tested = TRUE; } /* See if the next thing is "or"; if not and if not newline, error. Otherwise, if it's "or" and OK == FALSE, let the loop continue. */ read_sigcNL(); if (read_c == '\n') break; read_nextword(); if (Ustrcmp(read_wordbuffer, "or") != 0) { error_skip(ERR8, '\n', "\"or\""); break; } if (OK) break; read_sigcNL(); } /* Decision taken; act appropriately */ if (OK) read_okdepth++; else read_skipdepth++; DEBUG(D_preprocess) fprintf(stderr, "skip=%d ok=%d\n", read_skipdepth, read_okdepth); return; } /* Deal with "else" */ if (Ustrcmp(read_wordbuffer, "else") == 0) { if (read_skipdepth <= 1) { if (read_skipdepth == 1) { read_skipdepth--; read_okdepth++; } else if (read_okdepth > 0) { read_skipdepth++; read_okdepth--; } else error_skip(ERR11, '\n', "\"*else\""); } DEBUG(D_preprocess) fprintf(stderr, "skip=%d ok=%d\n", read_skipdepth, read_okdepth); return; } /* Deal with "fi" */ if (Ustrcmp(read_wordbuffer, "fi") == 0) { if (read_skipdepth > 0) read_skipdepth--; else if (read_okdepth > 0) read_okdepth--; else error_skip(ERR11, '\n', "\"*fi\""); DEBUG(D_preprocess) fprintf(stderr, "skip=%d ok=%d\n", read_skipdepth, read_okdepth); return; } /* The other preprocessing directives must be ignored when skipping. */ if (read_skipdepth > 0) { DEBUG(D_preprocess) fprintf(stderr, "skipping\n"); return; } /* Deal with defining macros. We can't use read_nextword() because it converts to lower case and also insists on an alphabetic first character. */ if (Ustrcmp(read_wordbuffer, "define") == 0) { usint i = 0; usint argcount = 0; uschar *rep; uschar *args[MAX_MACROARGS]; uschar argbuffer[MAX_MACRODEFAULT + 1]; tree_node *p; macrostr *mm; size_t replen; read_sigcNL(); if (isalnum(read_c)) { do { if (i >= WORDBUFFER_SIZE - 1) error(ERR7, "macro name", WORDBUFFER_SIZE - 1); /* Hard */ read_wordbuffer[i++] = read_c; read_nextc(); } while (isalnum(read_c)); } read_wordbuffer[i] = 0; if (read_wordbuffer[0] == 0) { error_skip(ERR8, '\n', "macro name"); return; } p = mem_get(sizeof(tree_node)); p->name = mem_get(Ustrlen(read_wordbuffer) + 1); Ustrcpy(p->name, read_wordbuffer); p->data = NULL; /* Default no arguments */ /* Handle macro optional default arguments. */ if (read_c == '(') { do { int bracount = 0; usint s = 0; BOOL inquotes = FALSE; if (argcount >= MAX_MACROARGS) error(ERR14, MAX_MACROARGS); /* Hard */ /* Read one argument; there is a length limit. */ read_nextc(); while (read_c != 'n' && ((read_c != ',' && read_c != ')') || bracount > 0 || inquotes)) { if (s >= MAX_MACRODEFAULT) error(ERR7, "macro default argument", MAX_MACRODEFAULT); /* Hard */ if (read_c == '&') /* & is a literal escaper */ { read_nextc(); } else /* Keep track of nested parens and quotes */ { if (read_c == '\"') inquotes = !inquotes; if (!inquotes) { if (read_c == '(') bracount++; else if (read_c == ')') bracount--; } } argbuffer[s++] = read_c; read_nextc(); } /* If the argument is not empty, remember it, else record it as NULL. */ if (s > 0) { uschar *ss = mem_get(s + 1); memcpy(ss, argbuffer, s); ss[s] = 0; args[argcount++] = ss; } else args[argcount++] = NULL; } while (read_c == ','); /* End of "do" loop */ if (read_c == ')') read_nextc(); else if (read_c == '\n') error(ERR15); /* Missing ')' */ } /* Now set up the replacement text and the arguments. The replacement is the rest of the line, excluding the final newline. */ read_sigcNL(); replen = main_readlength - read_i; /* Don't include the newline */ rep = mem_get(replen + 1); memcpy(rep, main_readbuffer + read_i - 1, replen); /* Include current char */ rep[replen] = 0; /* The macrostr structure ends with a vector of size 1, but we need to get memory for however many arguments there actually are. Note: we must not use (argcount-1) because argcount is unsigned and may be zero. */ p->data = mm = mem_get(sizeof(macrostr) - sizeof(uschar *) + argcount*sizeof(uschar *)); mm->argcount = argcount; mm->text = rep; for (i = 0; i < argcount; i++) mm->args[i] = args[i]; DEBUG(D_macro) { fprintf(stderr, "defined macro \"%s\" argcount=%d\n", p->name, argcount); fprintf(stderr, " replacement: >%s<\n", rep); for (i = 0; i < argcount; i++) fprintf(stderr, " %d %s\n", i+1, mm->args[i]); } if (!tree_insert(¯o_tree, p)) error(ERR16, read_wordbuffer); read_i = main_readlength; read_c = '\n'; } /* Deal with included files */ else if (Ustrcmp(read_wordbuffer, "include") == 0) { FILE *f; uschar buffer[256]; if (read_filestackptr >= MAX_INCLUDE) error(ERR33, MAX_INCLUDE); /* Hard */ if (read_c == '\n' || !string_read_plain()) { error(ERR8, "File name in quotes"); return; } /* Remember a short-enough unqualified name for standard macros. */ if (Ustrchr(read_stringbuffer, '/') == NULL && Ustrlen(read_stringbuffer) < 32) { read_wordbuffer[0] = '/'; Ustrcpy(read_wordbuffer + 1, read_stringbuffer); } else read_wordbuffer[0] = 0; /* Not potential standard macro file */ /* First, relativize the name and look for an existing file; if not found and the original string was unqualified, try for a standard macros file. */ string_relativize(); f = Ufopen(read_stringbuffer, "r"); if (f == NULL) { if (read_wordbuffer[0] != 0) { Ustrcpy(read_stringbuffer, stdmacs_dir); Ustrcat(read_stringbuffer, read_wordbuffer); f = Ufopen(read_stringbuffer, "r"); } if (f == NULL) error(ERR23, read_stringbuffer, strerror(errno)); /* Hard */ } /* Stack the current variables. */ read_filestack[read_filestackptr].file = read_filehandle; read_filestack[read_filestackptr].filename = read_filename; read_filestack[read_filestackptr].linenumber = read_linenumber; read_filestack[read_filestackptr++].okdepth = read_okdepth; /* Replace current variables for reading a PMW file. */ read_filehandle = f; read_filename = mem_copystring(read_stringbuffer); read_linenumber = 0; read_okdepth = 0; /* Check the first line of the file to test for MusicXML. */ if (fgets(CS buffer, sizeof(buffer), f) != NULL) { uschar *p = buffer; if (Ustrncmp(main_readbuffer, "\xef\xbb\xbf", 3) == 0) p += 3; if (Ustrncmp(p, "time < mb->time) return -1; if (ma->time > mb->time) return +1; if (ma->seq < mb->seq) return -1; if (ma->seq > mb->seq) return +1; return 0; } /************************************************* * Find length of bar * *************************************************/ /* Scan the staves selected for playing until one with some notes in it is found. If there are none, return zero. If the bar contains only a centred rest, carry on looking for another stave in case this bar is a nocheck whole-bar rest, which might be of different length to the remaining staves' bars. Arguments: none; the required movement/bar are in midi_movt and midi_bar Returns: length of the bar, or zero */ static int32_t find_barlength(void) { int32_t yield = 0; for (int stave = 1; stave <= midi_movt->laststave; stave++) { BOOL notjustrest; int32_t length, moff; int gracecount; if (mac_notbit(midi_staves, stave)) continue; notjustrest = FALSE; length = 0; gracecount = 0; moff = 0; for (bstr *p = (bstr *)((midi_movt->stavetable[stave])->barindex[midi_bar]); p != NULL; p = p->next) { if (p->type == b_reset) { if (moff > length) length = moff; moff = ((b_resetstr *)p)->moff; } else if (p->type == b_note) { b_notestr *note = (b_notestr *)p; moff += note->length; if (note->length == 0) gracecount++; else gracecount = 0; if (note->spitch != 0 || (note->flags & nf_centre) == 0) notjustrest = TRUE; } } /* At bar end check for longest length in case there were resets */ if (moff > length) length = moff; /* If there were grace notes at the end of the bar, increase its length by 1/10 second for each one. */ length += (gracecount*len_crotchet*midi_tempo)/(60*10); /* If we have found a bar with notes in it other than a whole bar rest, we are done. Otherwise carry on, but leave length so far in yield in case there are no staves with notes. */ if (length > yield) yield = length; if (yield > 0 && notjustrest) break; } return yield; } /************************************************* * Write 32-bit number * *************************************************/ /* Write the most significant byte first. Argument: the number Returns: nothing */ static void write32(uint32_t n) { fputc((n>>24)&255, midi_file); fputc((n>>16)&255, midi_file); fputc((n>>8)&255, midi_file); fputc(n&255, midi_file); file_count += 4; } /************************************************* * Write 16-bit number * *************************************************/ /* Write the most significant byte first. Argument: the number Returns: nothing */ static void write16(int n) { fputc((n>>8)&255, midi_file); fputc(n&255, midi_file); file_count += 2; } /************************************************* * Write variable length number * *************************************************/ /* The number is chopped up into 7-bit chunks, and then written with the most significant chunk first. All but the last chunk have the top bit set. This copes with numbers up to 28-bits long. That's all that MIDI needs. Argument: the number Returns: nothing */ static void writevar(int n) { if (n < 0x80) { fputc(n, midi_file); file_count++; } else if (n < 0x4000) { fputc(((n>>7)&127)|0x80, midi_file); fputc(n&127, midi_file); file_count += 2; } else if (n < 0x200000) { fputc(((n>>14)&127)|0x80, midi_file); fputc(((n>>7)&127)|0x80, midi_file); fputc(n&127, midi_file); file_count += 3; } else { fputc(((n>>21)&127)|0x80, midi_file); fputc(((n>>14)&127)|0x80, midi_file); fputc(((n>>7)&127)|0x80, midi_file); fputc(n&127, midi_file); file_count += 4; } } /************************************************* * Write one byte * *************************************************/ static void writebyte(int n) { fputc(n & 255, midi_file); file_count++; } /************************************************* * Write one bar * *************************************************/ /* The bar number is in midi_bar. Argument: TRUE if this is the final bar to be written Returns: nothing */ static void writebar(BOOL is_lastbar) { BOOL oknbar = TRUE; int hadrepeat = HR_NONE; int32_t maxmoff = 0; int stave; uint32_t *ptc = midi_movt->miditempochanges; int32_t this_barlength = find_barlength(); midi_event *eptr, *neptr; TRACE("writebar %d\n", midi_bar); /* Search the list of tempo changes for bars preceding or equal to this one and obtain the tempo for this bar. If it's different to the currently set tempo, output a change. */ if (ptc != NULL && midi_bar >= *ptc) { while (midi_bar >= *ptc) ptc += 2; if (ptc[-1] != midi_tempo) { uint32_t mpc; midi_tempo = ptc[-1]; mpc = 60000000/midi_tempo; /* Microseconds per crotchet */ next_event->time = 0; next_event->seq = next_event_seq++; next_event->data[0] = 6u; next_event->data[1] = 0xffu; next_event->data[2] = 0x51u; next_event->data[3] = 0x03u; next_event->data[4] = (uint8_t)((mpc >> 16) & 0xffu); next_event->data[5] = (uint8_t)((mpc >> 8) & 0xffu); next_event->data[6] = (uint8_t)(mpc & 0xffu); next_event++; } } /* Now scan the staves. When [notes off] appears in the input, a control is placed at the start of each bar into which it continues, so we do not have to keep track between bars. */ for (stave = 1; stave <= midi_movt->laststave; stave++) { BOOL noteson; /* See above comment */ int32_t moff; int midi_stave_status, midi_stave_pitch, midi_stave_velocity; int miditranspose, adjustlength, tremolo; if (mac_notbit(midi_staves, stave)) continue; moff = 0; miditranspose = midi_transpose[stave]; adjustlength = 0; tremolo = -1; noteson = TRUE; /* Set up midi parameters */ midi_stave_status = 0x90 + midi_channel[stave] - 1; midi_stave_pitch = midi_note[stave]; midi_stave_velocity = ((midi_volume * stavevolume[stave] * midi_channel_volume[midi_channel[stave]-1])/225); /* Scan the bar */ for (bstr *p = (bstr *)((midi_movt->stavetable[stave])->barindex[midi_bar]); p != NULL; p = p->next) { switch(p->type) { case b_reset: moff = ((b_resetstr *)p)->moff; break; /* If a previous stave saw a repeat, hadrepeat is set to indicate what has been done. */ case b_rrepeat: if (midi_repeats && !midi_onebar_only) { switch (hadrepeat) { case HR_PLAYON: break; case HR_REPEATED: goto NEXT_STAVE; default: case HR_NONE: if (repeat_count == 1) { hadrepeat = HR_REPEATED; midi_nextbar = repeat_bar; midi_nextbar_moff = repeat_bar_moff; repeat_endbar = midi_bar; repeat_count++; goto NEXT_STAVE; /* Skip rest of bar */ } else { hadrepeat = HR_PLAYON; if (midi_bar == repeat_endbar) repeat_count = 1; } break; } } break; case b_lrepeat: repeat_bar = midi_bar; repeat_bar_moff = moff; break; case b_nbar: if (moff == 0 && !midi_onebar_only && oknbar) { b_nbarstr *b = (b_nbarstr *)p; if (b->n == 1 && repeat_count > 1) { int second = 0; /* Search for a second time bar */ for (int i = midi_bar + 1; i < midi_movt->barcount; i++) { for (bstr *pp = (bstr *)((midi_movt->stavetable[stave])->barindex[i]); pp != NULL; pp = pp->next) { if (pp->type == b_nbar) { second = i; break; } } } if (second > 0) { midi_bar = second; midi_bar_moff = 0; midi_nextbar = midi_bar + 1; midi_nextbar_moff = 0; repeat_bar = midi_bar; repeat_bar_moff = 0; repeat_count = 1; writebar(is_lastbar); } return; } else oknbar = FALSE; } break; case b_notes: noteson = ((b_notesstr *)p)->value; break; case b_midichange: { b_midichangestr *change = (b_midichangestr *)p; miditranspose += change->transpose; midi_transpose[stave] = miditranspose; /* If the relative volume parameter occurs with a change of channel, it is a channel volume change. Otherwise it is a stave volume change. */ if (change->volume < 128 && change->channel == 128) { stavevolume[stave] = change->volume; midi_stave_velocity = ((midi_volume * stavevolume[stave] * midi_channel_volume[midi_channel[stave]-1])/225); } /* Other changes */ if (change->channel < 128) { midi_channel[stave] = change->channel; midi_stave_status = 0x90 + midi_channel[stave] - 1; if (change->volume < 128) midi_channel_volume[change->channel - 1] = change->volume; midi_stave_velocity = ((midi_volume * stavevolume[stave] * midi_channel_volume[midi_channel[stave]-1])/225); } if (change->note < 128) midi_stave_pitch = midi_note[stave] = change->note; /* A voice change must be scheduled to occur in the correct sequence with the notes. */ if (change->voice < 128) { next_event->time = moff; next_event->seq = next_event_seq++; next_event->data[0] = 2; next_event->data[1] = 0xC0 + midi_channel[stave] - 1; next_event->data[2] = change->voice; next_event++; } } break; case b_ornament: { b_ornamentstr *orn = (b_ornamentstr *)p; if (orn->ornament == or_trem1 || orn->ornament == or_trem2) tremolo = orn->ornament; } break; case b_note: { b_notestr *note = (b_notestr *)p; BOOL thisnotetied = FALSE; int length = note->length; int nstart = 0; int scrub = 1; int tiebarcount = 1; int pitchcount = 0; int pitchlist[20]; int pitchlen[20]; int pitchstart[20]; oknbar = FALSE; if (length == 0) { length = (len_crotchet*midi_tempo)/(60*10); /* 1/10 sec */ adjustlength += length; } else { length -= adjustlength; adjustlength = 0; } /* nf_noplay is set when a note has already been played, because of a previous tie, which might have been in a previous bar. */ if ((noteson || main_midifornotesoff) && moff >= midi_bar_moff && note->spitch != 0 && (note->flags & nf_noplay) == 0) { /* Get a list of pitches in a chord, and leave the general pointer p at the final note. */ do { pitchlist[pitchcount] = note->abspitch; pitchlen[pitchcount] = length; pitchstart[pitchcount++] = nstart; p = (bstr *)note; note = (b_notestr *)note->next; } while (note->type == b_chord); /* Advance to start of following note */ nstart += length; /* If the note is followed by a tie, find the next note or chord on the stave. If any of its notes have the same pitch as any of those in the list, extend their playing times. If there are any new notes, add them to the list, with a later starting time. We have to do this because all the notes we are accumulating will be output at the end of this bar. Set the noplay flag in the next notes, to stop them playing again later. Continue for multiple ties. */ while (note->type == b_tie) { int nlength; note = misc_nextnote(note); if (note == NULL && midi_bar + tiebarcount <= (uint32_t)(midi_movt->barcount)) { note = (b_notestr *)((midi_movt->stavetable)[stave])-> barindex[midi_bar + tiebarcount++]; if (note != NULL && note->type != b_note) note = misc_nextnote(note); } if (note == NULL) break; nlength = note->length; do { int i; for (i = 0; i < pitchcount; i++) { if (pitchlist[i] == note->abspitch) { pitchlen[i] += note->length; thisnotetied = TRUE; note->flags |= nf_noplay; break; } } if (i >= pitchcount) { pitchlist[pitchcount] = note->abspitch; pitchlen[pitchcount] = nlength; note->flags |= nf_noplay; pitchstart[pitchcount++] = nstart; } note = (b_notestr *)note->next; } while (note->type == b_chord); nstart += nlength; } /* Handle some common scrubbing */ if (tremolo > 0 && !thisnotetied) { int ttype = (tremolo == or_trem1)? 1 : 2; switch (length) { case len_crotchet: scrub = 2*ttype; break; case (len_crotchet*3)/2: scrub = 3*ttype; break; case len_minim: scrub = 4*ttype; break; case (len_minim*3)/2: scrub = 6*ttype; break; } } /* The value of "scrub" is 1 for ordinary, non-tremolo notes. */ for (int scrubcount = 0; scrubcount < scrub; scrubcount++) { int pc = pitchcount; /* For each required pitch, set up the events to make a sound. The lengths may be different because of tied/non-tied notes in chords, but these can only happen when not scrubbing. Note: PMW operates in quartertones, with middle C at 96, whereas MIDI operates in semitones with middle C at 60. Thus, to get a MIDI pitch from PMW we divide by two and add 12. The MIDI transposition value, however, is in semitones. */ while (--pc >= 0) { int pitch = (midi_stave_pitch != 0)? midi_stave_pitch : pitchlist[pc]/2 + 12 + miditranspose; int start = moff - midi_bar_moff + pitchstart[pc] + scrubcount * (pitchlen[pc]/scrub); if (pitch < 0 || pitch > 127) { char buff[24]; sprintf(buff, "%s", sfb(midi_movt->barvector[midi_bar])); error(ERR172, pitch, buff, stave); } /* We have to schedule a note on and a note off event. Use note on with zero velocity for note off, because that means running status can be used. */ else { next_event->time = start; next_event->seq = next_event_seq++; next_event->data[0] = 3; next_event->data[1] = midi_stave_status; next_event->data[2] = pitch; next_event->data[3] = midi_stave_velocity; next_event++; next_event->time = start + (pitchlen[pc]/scrub); next_event->seq = next_event_seq++; next_event->data[0] = 3; next_event->data[1] = midi_stave_status; next_event->data[2] = pitch; next_event->data[3] = 0; next_event++; } } } } stavetie[stave] = thisnotetied; moff += length; } tremolo = -1; break; } /* End switch on bar item */ } /* End of bar scan */ NEXT_STAVE: if (moff > maxmoff) maxmoff = moff; } /* Sort and output the items we've created, along with any events left over from the previous bar (ending tied notes). We relativize the times, and make use of running status. Stop when we hit either the end, or an event that is past the end of the bar, unless this is the last bar being played. */ qsort(events, next_event - events, sizeof(midi_event), cf); for (eptr = events; eptr < next_event; eptr++) { if (!is_lastbar && eptr->time > this_barlength) break; writevar(mac_muldiv(eptr->time - last_written_time, 24, len_crotchet)); last_written_time = eptr->time; if ((eptr->data[1] & 0xf0) == 0x90) { if (eptr->data[1] != running_status) { writebyte(eptr->data[1]); running_status = eptr->data[1]; } writebyte(eptr->data[2]); writebyte(eptr->data[3]); } else { int i; running_status = 0; for (i = 1; i <= eptr->data[0]; i++) writebyte(eptr->data[i]); } } /* If we haven't written all the items (some notes are tied over the barline), shift down the remaining events, and re-relativize them. */ neptr = events; next_event_seq = 0; for (; eptr < next_event; eptr++, neptr++) { *neptr = *eptr; neptr->time -= this_barlength; next_event_seq = neptr->seq + 1; } next_event = neptr; /* Set time for start of next bar */ last_written_time -= (maxmoff - midi_bar_moff); } /************************************************* * Convert logical bar number to absolute * *************************************************/ /* There is no fast index for this, but it's probably not a huge cost to search the absolute-to-logical index. Argument: a logical bar number (16-bit number, 16-bit fraction) Returns: an absolute bar number or UINT32_MAX if not found */ static uint32_t absbar(uint32_t lb) { for (int i = 0; i < midi_movt->barcount; i++) if (midi_movt->barvector[i] == lb) return i; return UINT32_MAX; } /************************************************* * Write MIDI file * *************************************************/ /* This is the only external entry to this set of functions. The data is all in memory and global variables. Writing a MIDI file is triggered by the use of the -midi command line option, which sets midi_filename non-NULL. Arguments: none Returns: nothing */ void midi_write(void) { int32_t mpc; TRACE("midi_write() movement %d\n", midi_movement); midi_movt = movements[midi_movement - 1]; if (midi_movt->barcount < 1) { error(ERR160, midi_movt->number); return; } midi_tempo = midi_movt->miditempo; /* Default tempo */ mpc = 60000000/midi_tempo; /* Microseconds per crotchet */ /* Convert any tempo changes from logical bar numbers as specified in a header directive into absolute bar numbers. */ if (midi_movt->miditempochanges != NULL) for (uint32_t *p = midi_movt->miditempochanges; *p != UINT32_MAX; p += 2) { uint32_t a = absbar(*p); if (a == UINT32_MAX) { error(ERR159, "tempo change", sfb(*p), midi_movt->number); return; } *p = a; } /* If the starting bar number is unset, set it to the first absolute bar in this movement. Otherwise, convert the logical bar number to an absolute bar. */ if (midi_startbar == UINT32_MAX) midi_startbar = 0; else { uint32_t a = absbar(midi_startbar); if (a == UINT32_MAX) { error(ERR159, "start", sfb(midi_startbar), midi_movt->number); return; } midi_startbar = a; } /* Similarly for the ending bar number. */ if (midi_endbar == UINT32_MAX) midi_endbar = midi_movt->barcount - 1; else { uint32_t a = absbar(midi_endbar); if (a == UINT32_MAX) { error(ERR159, "end", sfb(midi_endbar), midi_movt->number); return; } midi_endbar = a; } midi_onebar_only = (midi_startbar == midi_endbar); /* Stave selection is the movement's stave selection. Currently there's no way of changing this. */ midi_staves = midi_movt->select_staves; /* Initialize the tie information */ for (int stave = 1; stave <= midi_movt->laststave; stave++) stavetie[stave] = FALSE; /* Miscellaneous stuff */ last_written_time = 0; running_status = 0; /* Get store in which to hold a bar's events before sorting. For the first bar, it is empty at the start. */ events = mem_get_independent(sizeof(midi_event) * 1000); next_event = events; next_event_seq = 0; /* Set up the initial per-stave vectors */ memcpy(midi_channel, midi_movt->midichannel, sizeof(midi_channel)); memcpy(midi_channel_volume, midi_movt->midistavevolume, sizeof(midi_channel_volume)); memcpy(midi_note, midi_movt->midinote, sizeof(midi_note)); /* Open the output file */ midi_file = Ufopen(midi_filename, "w"); if (midi_file == NULL) error(ERR23, midi_filename, strerror(errno)); /* Hard */ /* Write header chunk */ fprintf(midi_file, "MThd"); write32(6); /* length */ write16(0); /* format */ write16(1); /* number of tracks */ write16(24); /* ticks per crotchet (MIDI standard) */ /* Now write the track, leaving space for the length */ fprintf(midi_file, "MTrk"); write32(0); file_count = 0; /* For computing the length */ /* Output any user-supplied initialization. The user's data is a plain MIDI stream, without any time deltas. Ensure that each event is set to occur at the beginning (time zero). */ if (midi_movt->midistart != NULL) { for (int i = 1; i <= midi_movt->midistart[0]; i++) { if ((midi_movt->midistart[i] & 0x80) != 0) writebyte(0); writebyte(midi_movt->midistart[i]); } } /* Default tempo - can change for specific bars */ writebyte(0); writebyte(0xff); writebyte(0x51); writebyte(0x03); writebyte(mpc >> 16); writebyte(mpc >> 8); writebyte(mpc); /* Assign MIDI voices to MIDI channels if required. */ for (int i = 1; i <= MIDI_MAXCHANNEL; i++) { if (midi_movt->midivoice[i-1] < 128) { writebyte(0); /* delta time */ writebyte(0xC0 + i - 1); writebyte(midi_movt->midivoice[i-1]); } } /* Initialize the per-stave relative volume & transpose vectors */ memcpy(stavevolume, midi_movt->midistavevolume, sizeof(stavevolume)); memcpy(midi_transpose, midi_movt->miditranspose, sizeof(midi_transpose)); /* If not starting at the beginning, we must scan through the stave data for all preceding bars, in order to pick up any in-line MIDI changes. */ for (midi_bar = 0; midi_bar < midi_startbar; midi_bar++) { for (int stave = 1; stave <= midi_movt->laststave; stave++) { if (mac_notbit(midi_staves, stave)) continue; for (bstr *p = (bstr *)((midi_movt->stavetable[stave])->barindex[midi_bar]); p != NULL; p = p->next) { b_midichangestr *change; if (p->type != b_midichange) continue; change = (b_midichangestr *)p; midi_transpose[stave] += change->transpose; /* If the relative volume parameter occurs with a change of channel, it is a channel volume change. Otherwise it is a stave volume change. */ if (change->volume < 128 && change->channel == 128) stavevolume[stave] = change->volume; /* Other changes */ if (change->channel < 128) { midi_channel[stave] = change->channel; if (change->volume < 128) midi_channel_volume[change->channel - 1] = change->volume; } if (change->note < 128) midi_note[stave] = change->note; if (change->voice < 128) { writebyte(0); /* delta time */ writebyte(0xC0 + midi_channel[stave] - 1); writebyte(change->voice); } } } } /* Now write the bars */ repeat_bar = midi_bar; repeat_bar_moff = 0; repeat_endbar = -1; repeat_count = 1; for (midi_bar = midi_startbar; midi_bar <= midi_endbar;) { midi_nextbar = midi_bar + 1; midi_nextbar_moff = 0; writebar(midi_bar == midi_endbar); midi_bar = midi_nextbar; midi_bar_moff = midi_nextbar_moff; } /* Mark the end of the track, and fill in its length before closing the file */ writebyte(0); writebyte(0xff); writebyte(0x2f); writebyte(0); fseek(midi_file, 18, SEEK_SET); write32(file_count); fclose(midi_file); } /* End of midi.c */ pmw-5.22/src/xml_functions.h0000644000222100022210000000406714541067540014200 0ustar ph10ph10/************************************************* * MusicXML input for PMW * *************************************************/ /* Copyright (c) Philip Hazel, 2022 */ /* This file last updated: April 2022 */ /* This header defines all the global XML functions */ extern void xml_add_attrval_to_tree(tree_node **, xml_item *, xml_attrstr *); extern BOOL xml_analyze(void); extern size_t xml_convert_utf8(uint32_t *, uschar *, uint32_t, BOOL); extern void xml_debug_print_item_list(xml_item *, const char *); extern void xml_do_heading(void); extern void xml_do_parts(void); extern void xml_Eerror(xml_item *, int, ...); extern void xml_error(int, ...); extern xml_attrstr *xml_find_attr(xml_item *, uschar *); extern xml_item *xml_find_item(xml_item *, uschar *); extern xml_item *xml_find_next(xml_item *, xml_item *); extern xml_item *xml_find_part(xml_item *, uschar *); extern xml_item *xml_find_prev(xml_item *, xml_item *); extern int32_t xml_get_attr_mils(xml_item *, uschar *, int, int, int, BOOL); extern int xml_get_attr_number(xml_item *, uschar *, int, int, int, BOOL); extern uschar *xml_get_attr_string(xml_item *, uschar *, uschar *, BOOL); extern int xml_get_mils(xml_item *, uschar *, int, int, int, BOOL); extern int xml_get_number(xml_item *, uschar *, int, int, int, BOOL); extern uschar *xml_get_string(xml_item *, uschar *, uschar *, BOOL); extern int xml_get_this_number(xml_item *, int, int, int, BOOL); extern uschar *xml_get_this_string(xml_item *); extern void xml_insert_item(xml_item *, xml_item *); extern xml_item *xml_new_item(uschar *); extern int xml_pmw_fontsize(int); extern BOOL xml_read_file(uschar *, FILE *, xml_item *); extern void xml_set_number(xml_item *, uschar *, int); extern int xml_string_check_number(uschar *, int, int, int, BOOL *); extern int xml_string_to_number(uschar *, BOOL); /* End of xml_functions.h */ pmw-5.22/src/pmw_read_stavedirs.c0000644000222100022210000016106514541067540015167 0ustar ph10ph10/************************************************* * PMW native stave directive reading functions * *************************************************/ /* Copyright Philip Hazel 2023 */ /* This file created: February 2021 */ /* This file last modified: December 2023 */ #include "pmw.h" /************************************************* * Local static variables * *************************************************/ static BOOL assumeflag; /* Set true after "assume " */ static dirstr *dir; /* Points to found header directive */ static BOOL nextwordread; /* TRUE if directive reads a word ahead */ /************************************************* * Local data tables * *************************************************/ /* Clef to be assumed for pitch purposes. */ static uschar real_clef[] = { clef_alto, clef_baritone, clef_bass, clef_cbaritone, clef_bass, /* contrabass */ clef_deepbass, clef_treble, /* hclef */ clef_mezzo, clef_treble, /* none */ clef_bass, /* soprabass */ clef_soprano, clef_tenor, clef_treble, clef_treble, /* trebledescant */ clef_treble, /* trebletenor */ clef_treble /* trebletenorB */ }; /* Octave adjustment associated with each clef. */ static int clef_octave[] = { 0, /* alto */ 0, /* baritone */ 0, /* bass */ 0, /* cbaritone */ -12, /* contrabass */ 0, /* deepbass */ 0, /* hclef */ 0, /* mezzo */ 0, /* none */ 12, /* soprabass */ 0, /* soprano */ 0, /* tenor */ 0, /* treble */ 12, /* trebledescant */ -12, /* trebletenor */ -12 /* trebletenorB */ }; /************************************************* * Common function for dataless item * *************************************************/ /* These items are just a basic bstr. */ static void p_common(void) { (void)mem_get_item(sizeof(bstr), dir->arg1); } /************************************************* * Common function for positive dimension * *************************************************/ static void p_pvalue(void) { if (isdigit(read_c)) { b_intvaluestr *p = mem_get_item(sizeof(b_intvaluestr), dir->arg1); p->value = read_fixed(); } else error(ERR8, "Number"); } /************************************************* * Common function for signed dimension * *************************************************/ static void p_svalue(void) { int32_t x; b_intvaluestr *p; if (!read_expect_integer(&x, TRUE, TRUE)) return; p = mem_get_item(sizeof(b_intvaluestr), dir->arg1); p->value = x; } /************************************************* * Common function for font type setting * *************************************************/ static void p_fonttype(void) { uint16_t *p; uint32_t f; switch(dir->arg1) { default: /* Should never occur */ case 0: p = &srs.fbfont; break; case 1: p = &srs.textfont; break; case 2: p = &srs.ulfont; break; case 3: p = &srs.olfont; break; } f = font_readtype(FALSE); if (f != font_unknown) *p = f; } /************************************************* * Common function for font size setting * *************************************************/ static void p_fontsize(void) { int32_t size; uint16_t *p; switch(dir->arg1) { default: /* Should never occur */ case 0: p = &srs.fbsize; break; case 1: p = &srs.textsize; break; case 2: p = &srs.ulsize; break; case 3: p = &srs.olsize; break; } if (!read_expect_integer(&size, FALSE, FALSE)) return; if (size == 0 || --size >= UserFontSizes) { error(ERR75, UserFontSizes); return; } *p = size; } /************************************************* * Common function for reset and backup * *************************************************/ static void resetorbackup(const char *name, uint32_t whereto, BOOL reset) { b_resetstr *r = mem_get_item(sizeof(b_resetstr), b_reset); /* Do things that are otherwise done at bar end */ if (srs.beaming) read_setbeamstems(); if (brs.barlength > brs.maxbarlength) brs.maxbarlength = brs.barlength; /* Test for a valid reset/backup */ if (!brs.resetOK) error((brs.barlength == 0)? ERR105 : ERR106, name); else if (brs.pletlen != 0 && reset) error(ERR107, name); /* We do the action anyway, to prevent spurious over-long bar errors. */ if (reset) read_init_baraccs(read_baraccs, srs.key); brs.barlength = r->moff = whereto; brs.resetOK = FALSE; } /************************************************* * Clef and octave setting * *************************************************/ static void p_octave(void) { int32_t x; if (!read_expect_integer(&x, FALSE, TRUE)) return; if (x < -3 || x > +4) error(ERR168, x); else srs.octave = 24*x; srs.lastnoteptr = NULL; } static void p_clef(void) { b_clefstr *p = mem_get_item(sizeof(b_clefstr), b_clef); p->clef = dir->arg1; p->suppress = FALSE; p->assume = assumeflag; assumeflag = FALSE; srs.clef = real_clef[p->clef]; srs.clef_octave = clef_octave[p->clef]; srs.lastnoteptr = NULL; read_sigc(); if (isdigitorsign(read_c)) p_octave(); } /************************************************* * Read string for [name] * *************************************************/ /* Returns TRUE if the string and its options ends with /" which implies that a continuation string follows. */ static usint snflags[] = { snf_hcentre, snf_rightjust, snf_vcentre, snf_vertical }; static BOOL read_name_string(snamestr *p) { uint32_t *ss; /* Read the string, then check it, passing "|" as the special separator string. This is interpreted to mean ss_verticalbar. Then count the number of lines. */ p->text = ss = string_check(string_read(font_rm, FALSE), "|", FALSE); p->linecount = 1; while (*ss != 0) if (PCHAR(*ss++) == ss_verticalbar) p->linecount += 1; /* Handle options */ while (read_c == '/') { int32_t size; uschar *t; const uschar *s = US"cemv"; read_nextc(); if (read_c == '\"') return TRUE; else if ((t = Ustrchr(s, read_c)) != NULL) { p->flags |= snflags[t - s]; read_nextc(); } else switch(read_c) { case 'S': read_nextc(); if (!read_expect_integer(&size, FALSE, FALSE)) break; if (--size < 0 || size >= FixedFontSizes) error(ERR75, FixedFontSizes); p->size = size + UserFontSizes; break; case 's': read_nextc(); if (!read_expect_integer(&size, FALSE, FALSE)) break; if (--size < 0 || size >= UserFontSizes) error(ERR75, UserFontSizes); p->size = size; break; case 'd': p->adjusty -= read_movevalue(); break; case 'l': p->adjustx -= read_movevalue(); break; case 'r': p->adjustx += read_movevalue(); break; case 'u': p->adjusty += read_movevalue(); break; default: return error_skip(ERR8, ']', "/d, /c, /e, /l, /m, /r, /s, /u or /v"); /* FALSE */ } } return FALSE; } /****************************************************************************/ /****************************************************************************/ /************************************************* * Assume * *************************************************/ static const char *assume_list[] = { "alto", "baritone", "bass", "contrabass", "deepbass", "hclef", "key", "mezzo", "noclef", "soprabass", "soprano", "tenor", "time", "treble", "trebledescant", "trebletenor", "trebletenorb" }; static void p_assume(void) { usint i; read_nextword(); for (i = 0; i < (sizeof(assume_list)/sizeof(char *)); i++) { if (Ustrcmp(read_wordbuffer, assume_list[i]) == 0) { nextwordread = assumeflag = TRUE; return; } } error_skip(ERR8, ']', "clef, key, or time setting"); } /************************************************* * Backup * *************************************************/ static void p_backup(void) { if (srs.lastnoteptr == NULL) error(ERR177); else resetorbackup("backup", brs.barlength - srs.lastnoteptr->length, FALSE); } /************************************************ * Barlinestyle * ************************************************/ static void p_barlinestyle(void) { int32_t x = 0; (void)read_expect_integer(&x, FALSE, FALSE); srs.barlinestyle = x; } /************************************************* * Barnumber * *************************************************/ static void p_barnum(void) { b_barnumstr *p = mem_get_item(sizeof(b_barnumstr), b_barnum); p->x = p->y = 0; p->flag = TRUE; read_sigc(); if (isalpha(read_c)) { read_nextword(); if (Ustrcmp(read_wordbuffer, "off") == 0) p->flag = FALSE; else nextwordread = TRUE; } else while (read_c == '/') { int sign; int32_t *a, b; read_nextc(); switch (read_c) { case 'u': sign = +1; a = &(p->y); break; case 'd': sign = -1; a = &(p->y); break; case 'l': sign = -1; a = &(p->x); break; case 'r': sign = +1; a = &(p->x); break; default: error(ERR8, "/u, /d, /l, or /r"); return; } read_nextc(); if (!read_expect_integer(&b, TRUE, TRUE)) break; *a += sign * b; } } /************************************************* * Beamacc and Beamrit * *************************************************/ static void p_beamaccrit(void) { b_beamaccritstr *p = mem_get_item(sizeof(b_beamaccritstr), dir->arg1); if (isdigit(read_c)) { usint n = read_usint(); if (n != 2 && n != 3) error(ERR8, "2 or 3"); else srs.accrit = n; } p->value = srs.accrit; } /************************************************* * Bowing * *************************************************/ static void p_bowing(void) { b_bowingstr *p = mem_get_item(sizeof(b_bowingstr), b_bowing); p->value = FALSE; read_nextword(); if (Ustrcmp(read_wordbuffer, "above") == 0) p->value = TRUE; else if (Ustrcmp(read_wordbuffer, "below") != 0) error(ERR8, "\"above\" or \"below\""); } /************************************************* * Couple * *************************************************/ static void p_couple(void) { read_nextword(); if (Ustrcmp(read_wordbuffer, "up") == 0) srs.couplestate = +1; else if (Ustrcmp(read_wordbuffer, "down") == 0) srs.couplestate = -1; else if (Ustrcmp(read_wordbuffer, "off") == 0) srs.couplestate = 0; else error(ERR8, "\"up\", \"down\", or \"off\""); } /************************************************* * Cue * *************************************************/ static void p_cue(void) { srs.noteflags = (srs.noteflags & ~nf_cuedotalign) | nf_cuesize; if (read_c == '/') { read_nextc(); read_nextword(); if (Ustrcmp(read_wordbuffer, "dotalign") == 0) srs.noteflags |= nf_cuedotalign; else error(ERR8, "\"dotalign\""); } } /************************************************* * Dots * *************************************************/ static void p_dots(void) { read_nextword(); if (Ustrcmp(read_wordbuffer, "above") == 0) srs.noteflags &= ~nf_lowdot; else if (Ustrcmp(read_wordbuffer, "below") == 0) srs.noteflags |= nf_lowdot; else error(ERR8, "\"above\" or \"below\""); } /************************************************* * Doublenotes * *************************************************/ static void p_doublenotes(void) { srs.notenum *= 2; } /************************************************* * Draw & Overdraw * *************************************************/ static void p_draw(void) { b_drawstr *d = mem_get_item(sizeof(b_drawstr), b_draw); d->overflag = dir->arg1; read_draw(&(d->drawing), &(d->drawargs), ']'); } /************************************************* * Endcue * *************************************************/ static void p_endcue(void) { srs.noteflags &= ~(nf_cuesize|nf_cuedotalign); } /************************************************* * Endline & Endslur * *************************************************/ static void p_endline(void) { int id = 0; if (read_c == '/') { read_nextc(); if (read_c != '=') error(ERR8, "\"=\""); else { read_nextc(); if (!isalnum(read_c)) error_skip(ERR167, ']'); id = read_c; read_nextc(); } } if (srs.slurcount > 0) { b_endslurstr *p = mem_get_item(sizeof(b_endslurstr), dir->arg1); p->value = id; srs.slurcount--; } else error(ERR171); /* Unexpected (and ignored) */ } /************************************************* * Footnote * *************************************************/ static void p_footnote(void) { b_footnotestr *f = mem_get_item(sizeof(b_footnotestr), b_footnote); read_headfootingtext(&(f->h), rh_footnote, ']'); } /************************************************* * Hairpins * *************************************************/ static void p_hairpins(void) { srs.hairpinflags = srs.hairpiny = 0; read_nextword(); if (Ustrcmp(read_wordbuffer, "below") == 0) srs.hairpinflags = hp_below; else if (Ustrcmp(read_wordbuffer, "middle") == 0) srs.hairpinflags = hp_below | hp_middle; else if (Ustrcmp(read_wordbuffer, "above") != 0) { error(ERR8, "\"above\", \"below\", or \"middle\""); return; } /* Default adjustment is allowed for all three positions */ read_sigc(); if (read_c == '+' || read_c == '-') { (void)read_expect_integer(&srs.hairpiny, TRUE, TRUE); } /* Absolute value is allowed only for above and below */ else if ((srs.hairpinflags & hp_middle) == 0 && isdigit(read_c)) { srs.hairpinflags |= hp_abs; srs.hairpiny = read_fixed(); if ((srs.hairpinflags & hp_below) != 0) srs.hairpiny = -srs.hairpiny; } } /************************************************* * Hairpinwidth * *************************************************/ static void p_hairpinwidth(void) { (void)read_expect_integer(&srs.hairpinwidth, TRUE, FALSE); } /************************************************* * Halvenotes * *************************************************/ static void p_halvenotes(void) { if (srs.notenum > 1) srs.notenum /= 2; else srs.noteden *= 2; } /************************************************* * Justify * *************************************************/ static void p_justify(void) { if (read_c != '+' && read_c != '-') { error(ERR8, "\"+\" or \"-\""); return; } do { b_justifystr *p = mem_get_item(sizeof(b_justifystr), b_justify); p->value = (read_c == '+')? just_add : 0; read_nextc(); read_nextword(); if (Ustrcmp(read_wordbuffer, "top") == 0) p->value |= just_top; else if (Ustrcmp(read_wordbuffer, "bottom") == 0) p->value |= just_bottom; else if (Ustrcmp(read_wordbuffer, "left") == 0) p->value |= just_left; else if (Ustrcmp(read_wordbuffer, "right") == 0) p->value |= just_right; else { error(ERR8, "\"top\", \"bottom\", \"left\", or \"right\""); return; } read_sigc(); } while (read_c == '+' || read_c == '-'); } /************************************************* * Key * *************************************************/ static void p_key(void) { BOOL warn = MFLAG(mf_keywarn); uint32_t oldkey = srs.key_tp; uint32_t oldwidth, newwidth; b_keystr *p = mem_get_item(sizeof(b_keystr), b_key); p->assume = assumeflag; assumeflag = FALSE; srs.key = read_key(); srs.key_tp = transpose_key(srs.key); read_init_baraccs(read_baraccs, srs.key); read_init_baraccs(read_baraccs_tp, srs.key_tp); read_sigc(); if (isalpha(read_c)) { read_nextword(); if (Ustrcmp(read_wordbuffer, "nowarn") == 0) warn = FALSE; else nextwordread = TRUE; } oldwidth = misc_keywidth(oldkey | key_reset, srs.clef); newwidth = misc_keywidth(srs.key_tp, srs.clef); /* If both the old (cancellation) width and the new key width are zero, there's nothing we can do about warning. */ if (oldwidth == 0 && newwidth == 0) warn = FALSE; /* If not "assume" create a cancellation key item if the new signature is empty and the old one is not. */ if (!p->assume && newwidth == 0 && oldwidth != 0) { p->key = oldkey | key_reset; p->warn = warn; p->suppress = FALSE; p = mem_get_item(sizeof(b_keystr), b_key); p->assume = FALSE; } /* Now set up the new key. */ p->key = srs.key_tp; p->warn = warn; p->suppress = FALSE; } /************************************************* * Midichannel, Midipitch, Midivoice, * * Midivolume, Miditranspose * *************************************************/ /* These are all variations on the same theme. All of them create a MIDI change item, with various different parameters. We start with a local subroutine that they can all use. Arguments: channel channel number void voice number note note pitch volume volumne transpose transpose value Returns: nothing */ static void makechange(int channel, int voice, int note, int volume, int transpose) { b_midichangestr *p = mem_get_item(sizeof(b_midichangestr), b_midichange); p->channel = channel; p->voice = voice; p->note = note; p->volume = volume; p->transpose = transpose; } /*** Midichannel & Midivoice ***/ static void p_midichanvoice(void) { int32_t channel = 128; /* No change */ int voicenumber = 129; /* No change */ int volume = 128; /* Nochange */ if (dir->arg1) /* Midichannel */ { if (!read_expect_integer(&channel, FALSE, FALSE)) return; if (channel < 1 || channel > MIDI_MAXCHANNEL) { error(ERR48, "channel", channel, MIDI_MAXCHANNEL); return; } } if (string_read_plain()) { if (read_stringbuffer[0] == '#') voicenumber = Uatoi(read_stringbuffer + 1); else if (read_stringbuffer[0] != 0) voicenumber = read_getmidinumber(midi_voicenames, read_stringbuffer, US"voice"); if (voicenumber < 1 || voicenumber > 128) { error(ERR48, "voice", voicenumber, 128); voicenumber = 1; } if (read_c == '/') { int32_t vol; read_nextc(); if (read_expect_integer(&vol, FALSE, FALSE)) { if (vol > 15) error(ERR8, "Number between 0 and 15"); else volume = vol; } } } else if (!dir->arg1) error(ERR8, "string"); /* Mandatory for Midivoice */ makechange((int)channel, voicenumber - 1, 128, volume, 0); /* 128 => no change */ } /*** Midipitch ***/ static void p_midipitch(void) { int note = 0; /* No more forcing */ if (string_read_plain()) { if (read_stringbuffer[0] == '#') note = Uatoi(read_stringbuffer + 1); else if (read_stringbuffer[0] != 0) note = read_getmidinumber(midi_percnames, read_stringbuffer, US"percussion instrument"); makechange(128, 128, note, 128, 0); /* 128 => no change */ } else error(ERR8, "string"); } /*** Miditranspose ***/ static void p_miditranspose(void) { int32_t transpose; if (!read_expect_integer(&transpose, FALSE, TRUE)) return; makechange(128, 128, 128, 128, transpose); } /*** Midivolume ***/ static void p_midivolume(void) { int32_t volume; if (!read_expect_integer(&volume, FALSE, FALSE)) return; if (volume > 15) { error(ERR8, "Number between 0 and 15"); return; } makechange(128, 128, 128, volume, 0); } /************************************************* * Move, Rmove, Smove, & Rsmove * *************************************************/ static void p_move(void) { b_movestr *p = mem_get_item(sizeof(b_movestr), b_move); p->relative = dir->arg1; if (!read_expect_integer(&(p->x), TRUE, TRUE)) return; read_sigc(); if (read_c == ',') { read_nextc(); if (!read_expect_integer(&(p->y), TRUE, TRUE)) return; } else p->y = 0; /* Handle Smove and Rsmove - save horizontal data to insert space after the next note. */ if (dir->name[0] == 's' || dir->name[1] == 's') { brs.smove = p->x; brs.smove_isrelative = p->relative; } } /************************************************* * Name * *************************************************/ /* The stave magnification is used only if an explicit size is given; otherwise the fixed size is used. This function is global because it is also called when handling [stave ... at the beginning of a stave. */ void read_stavename(void) { snamestr *p, **pp; /* Handle [name ] */ if (isdigit(read_c)) { b_namestr *pn = mem_get_item(sizeof(b_namestr), b_name); pn->value = read_usint(); return; } /* Else handle any number of pairs (either or both may be present in each case) and add onto any existing chain for the stave. */ pp = &(st->stave_name); while (*pp != NULL) pp = &((*pp)->next); p = NULL; read_sigc(); while(read_c == '\"' || Ustrncmpic(main_readbuffer + read_i - 1, "draw ", 5) == 0) { /* If this is a string, always start a new item (snamestr). If it is a drawing, add onto a previous string item if there is one that doesn't already have a drawing. */ if (read_c == '\"' || p == NULL || p->drawing != NULL) { p = mem_get(sizeof(snamestr)); *p = init_snamestr; *pp = p; pp = &(p->next); } /* Read a string with possible extra strings attached. One or more additional strings are hung off the extra field; this allows for different options. Such strings must follow immediately. */ if (read_c == '\"') { if (read_name_string(p)) { snamestr **ppe = &(p->extra); for (;;) { snamestr *pe = *ppe = mem_get(sizeof(snamestr)); *pe = init_snamestr; if (!read_name_string(pe)) break; ppe = &(pe->extra); } } } /* Handle a drawing */ else { read_i += 4; read_c = ' '; read_draw(&(p->drawing), &(p->drawargs), ']'); } /* Prepare for next item */ read_sigc(); } } /************************************************* * Newmovement * *************************************************/ /* [newmovement] is unexpected here - give a tidy error message */ static void p_newmovement(void) { error(ERR102); /* Hard */ } /************************************************* * Nocheck * *************************************************/ static void p_nocheck(void) { brs.checklength = FALSE; } /************************************************* * Nocount * *************************************************/ static void p_nocount(void) { brs.nocount = TRUE; } /************************************************* * Noteheads * *************************************************/ /* There some single-character shorthands that have a fixed notehead type. */ static void p_noteheads(void) { usint value; srs.noteflags |= nf_stem; /* All except "only" and "direct" set a stem */ if (dir->arg1 < nh_number) { value = dir->arg1; } else { read_nextword(); if (Ustrcmp(read_wordbuffer, "only") == 0) { value = srs.noteheadstyle & nh_mask; /* Existing value */ srs.noteflags &= ~nf_stem; } else if (Ustrcmp(read_wordbuffer, "direct") == 0) { value = nh_direct; srs.noteflags &= ~nf_stem; } else if (Ustrcmp(read_wordbuffer, "normal") == 0) value = nh_normal; else if (Ustrcmp(read_wordbuffer, "harmonic") == 0) value = nh_harmonic; else if (Ustrcmp(read_wordbuffer, "cross") == 0) value = nh_cross; else if (Ustrcmp(read_wordbuffer, "none") == 0) value = nh_none; else if (Ustrcmp(read_wordbuffer, "circular") == 0) value = nh_circular; else { error(ERR8, "\"normal\", \"harmonic\", \"cross\", \"circular\", \"none\", \"only\", or \"direct\""); value = nh_normal; } } srs.noteheadstyle = (srs.noteheadstyle & ~nh_mask) | value; } /************************************************* * Notes * *************************************************/ static void p_notes(void) { b_notesstr *p = mem_get_item(sizeof(b_notesstr), b_notes); read_nextword(); p->value = Ustrcmp(read_wordbuffer, "off") != 0; if (p->value && Ustrcmp(read_wordbuffer, "on") != 0) error(ERR8, "\"on\" or \"off\""); srs.noteson = p->value; } /************************************************* * Notespacing * *************************************************/ /* There are three formats: multiplicative or individual additive changes, or a reset request. */ static void p_ns(void) { if (read_c == '*') /* Multiplicative */ { int32_t f; b_nsmstr *p; read_nextc(); if (!read_expect_integer(&f, TRUE, FALSE)) return; if (read_c == '/') { int32_t d; read_nextc(); if (!read_expect_integer(&d, TRUE, FALSE)) return; f = mac_muldiv(f, 1000, d); } p = mem_get_item(sizeof(b_nsmstr), b_nsm); p->value = f; } /* Read individual change values */ else if (isdigitorsign(read_c)) { int i; b_nsstr *p = mem_get_item(sizeof(b_nsstr), b_ns); for (i = 0; i < NOTETYPE_COUNT; i++) p->ns[i] = 0; for (i = 0; i < NOTETYPE_COUNT; i++) { read_sigc(); if (!isdigitorsign(read_c)) break; if (!read_expect_integer(&(p->ns[i]), TRUE, TRUE)) break; if (read_c == ',') read_nextc(); } if (i == 1) error(ERR104); /* Single change only may be a typo: warn */ } /* Reset to original values */ else mem_get_item(sizeof(bstr), b_ens); } /************************************************* * Octave * *************************************************/ /* p_octave() appears higher up so that it can be called from p_clef() */ /************************************************* * Olevel/Ulevel * *************************************************/ static void p_uolevel(void) { b_uolevelstr *p = mem_get_item(sizeof(b_uolevelstr), dir->arg1); if (read_c == '*') { p->value = FIXED_UNSET; read_nextc(); } else (void) read_expect_integer(&(p->value), TRUE, TRUE); } /************************************************* * Omitempty * *************************************************/ /* This is obsolete; "omitempty" is now part of the "stave" directive. Give a minor error and ignore it. */ static void p_omitempty(void) { error(ERR165); } /************************************************* * Page * *************************************************/ static void p_page(void) { b_pagestr *p = mem_get_item(sizeof(b_pagestr), b_page); if (read_c == '+') { p->relative = TRUE; read_nextc(); } else p->relative = FALSE; (void)read_expect_integer(&(p->value), FALSE, FALSE); } /************************************************* * Printpitch * *************************************************/ static void p_printpitch(void) { if (read_c == '*') { srs.printpitch = 0; read_nextc(); } else srs.printpitch = read_stavepitch(); } /************************************************* * Reset * *************************************************/ static void p_reset(void) { resetorbackup("reset", 0, TRUE); brs.resetOK = FALSE; } /************************************************* * Resume/Suspend * *************************************************/ static void p_ressus(void) { (void)mem_get_item(sizeof(bstr), (dir->arg1)? b_suspend : b_resume); srs.suspended = dir->arg1; } /************************************************* * Rlevel * *************************************************/ static void p_rlevel(void) { (void)read_expect_integer(&srs.rlevel, TRUE, TRUE); } /************************************************* * Rspace & Space * *************************************************/ static void p_rspace(void) { b_spacestr *p = mem_get_item(sizeof(b_spacestr), b_space); p->relative = dir->arg1; (void)read_expect_integer(&(p->x), TRUE, TRUE); } /************************************************* * Sgabove, Sghere, Sgnext * *************************************************/ static void p_sg(void) { b_sgstr *p = mem_get_item(sizeof(b_sgstr), dir->arg1); p->relative = (read_c == '+' || read_c == '-'); (void)read_expect_integer(&(p->value), TRUE, TRUE); } /************************************************* * Skip * *************************************************/ static void p_skip(void) { int32_t x; if (brs.bar->next != NULL) error(ERR103); /* Warn if not at bar start */ (void)read_expect_integer(&x, FALSE, FALSE); brs.skip += x; } /************************************************* * Slur and line * *************************************************/ /* A line is just a special kind of slur. The basic slur structure is quite small; separate structures are used for sets of modifications. They are chained together in reverse order. The sequence number 0 means "the unsplit slur" while other counts are for parts of a split slur. For backwards compatiblity, we retain the following synonyms: sly = 1ry sry = 2ly slc = 1c src = 2c A local subroutine is used to find the relevant slurmod on the chain, or to create a new one if it isn't found. Arguments: sequence the sequence number anchor points to the anchor of the chain Returns: pointer to the required slurmod */ static b_slurmodstr * findmods(usint sequence, b_slurmodstr **anchor) { b_slurmodstr *m; for (m = *anchor; m != NULL; m = m->next) if (m->sequence == sequence) return m; m = mem_get(sizeof(b_slurmodstr)); memset(m, 0, sizeof(b_slurmodstr)); m->next = *anchor; *anchor = m; m->sequence = sequence; return m; } /* The slur/line function */ static void p_slur(void) { b_slurmodstr *mod; b_slurstr *p = mem_get_item(sizeof(b_slurstr), b_slur); mod = p->mods = NULL; p->flags = dir->arg1; p->ally = 0; p->id = 0; srs.slurcount++; /* Loop to read the many options. */ while (read_c == '/') { BOOL left, in; int32_t x; read_nextsigc(); /* Some things may appear only before the first split number qualifier. */ if (mod != NULL && mod->sequence != 0) { if (strchr("=abeshiow", read_c) != NULL) error(ERR99, read_c); } switch (read_c) { case '=': read_nextc(); if (!isalnum(read_c)) { error_skip(ERR167, ']'); break; } p->id = read_c; read_nextc(); break; case 'a': p->flags &= ~(sflag_b | sflag_abs | sflag_lay); read_nextc(); if (read_c == 'o') { read_nextc(); p->flags |= sflag_lay; } else if (isdigitorsign(read_c)) { if (!read_expect_integer(&x, TRUE, TRUE)) return; p->flags |= sflag_abs; p->ally += x; } break; case 'b': p->flags = (p->flags & ~(sflag_abs | sflag_lay)) | sflag_b; read_nextc(); if (read_c == 'u') { read_nextc(); p->flags |= sflag_lay; } else if (isdigitorsign(read_c)) { if (!read_expect_integer(&x, TRUE, TRUE)) return; p->flags |= sflag_abs; p->ally -= x; } break; case 'c': read_nextc(); if (read_c == 'x') { read_nextc(); p->flags |= sflag_cx; break; } if (mod == NULL) mod = findmods(0, &(p->mods)); if ((in = read_c == 'i') || read_c == 'o') { read_nextc(); if (!read_expect_integer(&x, TRUE, FALSE)) return; mod->c += in? -x : x; } else if ((left = read_c == 'l') || read_c == 'r') { read_nextc(); if (read_c == 'u' || read_c == 'd' || read_c == 'l' || read_c == 'r') { int cc = read_c; read_nextc(); if (!read_expect_integer(&x, TRUE, FALSE)) return; switch(cc) { case 'u': if (left) mod->cly += x; else mod->cry += x; break; case 'd': if (left) mod->cly -= x; else mod->cry -= x; break; case 'l': if (left) mod->clx -= x; else mod->crx -= x; break; case 'r': if (left) mod->clx += x; else mod->crx += x; break; } } else error(ERR8, "clu, cld, cll, clr, cru, crd, crl, or crr"); } else error(ERR8, "ci, co, clu, cld, cll, clr, cru, crd, crl, or crr"); break; case 'u': read_nextc(); if (!read_expect_integer(&x, TRUE, FALSE)) return; if (mod == NULL || mod->sequence == 0) p->ally += x; else { mod->ly += x; mod->ry += x; } break; case 'd': read_nextc(); if (!read_expect_integer(&x, TRUE, FALSE)) return; if (mod == NULL || mod->sequence == 0) p->ally -= x; else { mod->ly -= x; mod->ry -= x; } break; case 'e': p->flags |= sflag_e; read_nextc(); break; case 'l': case 'r': if (mod == NULL) mod = findmods(0, &(p->mods)); x = (read_c == 'l')? 0 : 1; read_nextc(); switch(read_c) { case 'l': break; case 'r': x |= 2; break; case 'd': x |= 4; break; case 'u': x |= 6; break; default: x = -1; break; } read_nextc(); if (read_c == 'c') { read_nextc(); if ((x & 4) == 0) x |= 8; else x = -1; } if (x < 0) { error(ERR8, "lu, ld, ll, llc, lr, lrc, ru, rd, rl, rlc, rr, or rrc"); } else { int32_t s; int32_t *z = NULL; /* Stop compiler unset warning */ switch (x) /* 12-15 won't occur because c is only with left/right */ { case 0: /* ll */ case 2: /* lr */ z = &(mod->lx); x -= 1; /* -1 or +1 */ break; case 1: /* rl */ case 3: /* rr */ z = &(mod->rx); x -= 2; /* -1 or +1 */ break; case 4: /* ld */ case 6: /* lu */ z = &(mod->ly); x -= 5; /* -1 or +1 */ break; case 5: /* rd */ case 7: /* ru */ z = &(mod->ry); x -= 6; /* -1 or +1 */ break; case 8: /* llc */ case 10: /* lrc */ z = &(mod->lxoffset); x -= 9; /* -1 or +1 */ break; case 9: /* rlc */ case 11: /* rrc */ z = &(mod->rxoffset); x -= 10; /* -1 or +1 */ break; } if (!read_expect_integer(&s, TRUE, FALSE)) return; *z += x*s; } break; case 'h': p->flags |= sflag_h; read_nextc(); break; case 'i': p->flags |= sflag_i; read_nextc(); if (read_c == 'p') { p->flags |= sflag_idot; read_nextc(); } break; case 'o': read_nextc(); if (read_c == 'l') p->flags |= sflag_ol; else if (read_c == 'r') p->flags |= sflag_or; else error(ERR8, "ol or or"); read_nextc(); break; case 'w': p->flags |= sflag_w; read_nextc(); break; default: if (isdigit(read_c)) { usint n = read_usint(); if (n == 0) error(8, "number greater than zero"); mod = findmods(n, &(p->mods)); read_sigc(); } else error(ERR8, "=, a, b, w, ci, co, d, e, u, lu, ld, ru, rd, h, i, ol, or, or number"); break; } read_sigc(); } /* We don't allow wiggly with line slurs */ if ((p->flags & (sflag_l|sflag_w)) == (sflag_l|sflag_w)) error(ERR100, "lines"); } /************************************************* * Slurgap & Linegap * *************************************************/ static void p_slurgap(void) { b_slurgapstr *p = mem_get_item(sizeof(b_slurgapstr), (dir->arg1)? b_slurgap : b_linegap); p->drawing = NULL; p->drawargs = NULL; p->gaptext = NULL; p->hfraction = -1; p->xadjust = 0; p->width = -1; p->textx = p->texty = 0; p->textflags = p->textsize = 0; p->id = 0; /* Read the options */ while (read_c == '/') { int32_t x; read_nextsigc(); switch (read_c) { case '=': read_nextc(); p->id = read_c; read_nextsigc(); break; case 'd': if (Ustrncmp(main_readbuffer + read_i, "raw ", 4) == 0) { read_i += 3; read_nextc(); read_draw(&(p->drawing), &(p->drawargs), ']'); } else error(ERR8, "\"draw\""); break; case 'h': read_nextc(); if (isdigit(read_c)) { if (!read_expect_integer(&(p->hfraction), TRUE, FALSE)) return; } else p->hfraction = 500; break; case 'l': read_nextc(); if (!read_expect_integer(&x, TRUE, FALSE)) return; p->xadjust -= x; break; case 'r': read_nextc(); if (!read_expect_integer(&x, TRUE, FALSE)) return; p->xadjust += x; break; case 'w': read_nextc(); if (!read_expect_integer(&(p->width), TRUE, FALSE)) return; break; case '\"': p->gaptext = string_read(font_rm, TRUE); while (read_c == '/') { read_nextc(); switch (read_c) { case 'b': if (Ustrncmp(main_readbuffer + read_i, "ox", 2) == 0) { read_i += 2; read_nextc(); p->textflags |= text_boxed; } else error(ERR8, "/box"); break; case 'd': p->texty -= read_movevalue(); break; case 'l': p->textx -= read_movevalue(); break; case 'S': read_nextc(); read_expect_integer(&x, FALSE, FALSE); if (x == 0 || --x >= FixedFontSizes) { error(ERR75, FixedFontSizes); x = 0; } p->textsize = x + UserFontSizes; break; case 's': read_nextc(); read_expect_integer(&x, FALSE, FALSE); if (x == 0 || --x >= UserFontSizes) { error(ERR75, UserFontSizes); x = 0; } p->textsize = x; break; case 'r': if (Ustrncmp(main_readbuffer + read_i, "box", 3) == 0) { read_i += 3; read_nextc(); p->textflags |= text_boxed | text_boxrounded; } else if (Ustrncmp(main_readbuffer + read_i, "ing", 3) == 0) { read_i += 3; read_nextc(); p->textflags |= text_ringed; } else p->textx += read_movevalue(); break; case 'u': p->texty += read_movevalue(); break; default: error(ERR8, "/box, /d, /l, /r, /rbox, /ring, /s, or /u"); break; } } break; default: error(ERR8, "=, l, r, w, or a string"); break; } read_sigc(); } if (srs.slurcount == 0) error(ERR13, (dir->arg1)? "unexpected [slurgap]" : "unexpected [linegap]"); /* Width defaults to width of text plus the fontsize, or 4 points if no text. */ if (p->width < 0) { if (p->gaptext == NULL) p->width = 4000; else { fontinststr *fdata = &(curmovt->fontsizes->fontsize_text[p->textsize]); p->width = mac_muldiv(string_width(p->gaptext, fdata, NULL) + fdata->size, curmovt->stavesizes[srs.stavenumber], 1000); } } } /************************************************* * Ssabove, Sshere, Ssnext * *************************************************/ static void p_ss(void) { uint64_t done = 0; for (;;) { int value, stave; BOOL relative = (read_c == '+' || read_c == '-'); if (!read_expect_integer(&value, TRUE, TRUE)) return; if (read_c != '/') stave = srs.stavenumber; else { if (relative || value < 0 || (value%1000) != 0) { error(ERR8, "Stave number"); return; } stave = value/1000; read_nextc(); relative = (read_c == '+' || read_c == '-'); if (!read_expect_integer(&value, TRUE, TRUE)) return; } if (stave > MAX_STAVE) error(ERR10); else { b_ssstr *p = mem_get_item(sizeof(b_ssstr), dir->arg1); p->relative = relative; p->stave = stave; p->value = value; } if ((done & (1 << stave)) != 0 ) error(ERR54, stave, dir->name); done |= (1 << stave); read_sigc(); if (read_c == ',') read_nextsigc(); if (!isdigitorsign(read_c)) break; } } /************************************************* * Stavelines * *************************************************/ /* This directive is now deprecated */ static void p_stavelines(void) { int32_t n; if (!read_expect_integer(&n, FALSE, FALSE)) return; if (n > 6) error(ERR8, "Number in the range 0-6"); else st->stavelines = n; error(ERR170); /* Warning */ } /************************************************* * Stemlength (aka Sl) * *************************************************/ static void p_stemlength(void) { (void)read_expect_integer(&srs.stemlength, TRUE, TRUE); } /************************************************* * Stems/Ties * *************************************************/ static void p_stems(void) { int8_t *p; read_nextword(); if (dir->arg1) /* "Stems" directive has additional settings */ { if (Ustrcmp(read_wordbuffer, "central") == 0) { srs.noteflags |= nf_stemcent; return; } if (Ustrcmp(read_wordbuffer, "beside") == 0) { srs.noteflags &= ~nf_stemcent; return; } p = &srs.stemsdirection; } else p = &srs.tiesplacement; /* Common to stems and ties */ if (Ustrcmp(read_wordbuffer, "auto") == 0) *p = 0; else if (Ustrcmp(read_wordbuffer, "up") == 0 || Ustrcmp(read_wordbuffer, "above") == 0) *p = +1; else if (Ustrcmp(read_wordbuffer, "down") == 0 || Ustrcmp(read_wordbuffer, "below") == 0) *p = -1; else error(ERR8, "\"auto\", \"above\", \"up\", \"below\", or \"down\""); } /************************************************* * Text * *************************************************/ static void p_text(void) { int sign = 1; read_nextword(); srs.textabsolute = 0; if (Ustrcmp(read_wordbuffer, "underlay") == 0) srs.textflags = text_ul; else if (Ustrcmp(read_wordbuffer, "overlay") == 0) srs.textflags = text_ul | text_above; else if (Ustrcmp(read_wordbuffer, "fb") == 0) srs.textflags = text_fb; else { if (Ustrcmp(read_wordbuffer, "above") == 0) srs.textflags = text_above; else if (Ustrcmp(read_wordbuffer, "below") == 0) { srs.textflags = 0; sign = -1; } else { error(ERR8, "\"underlay\", \"fb\", \"above\", or \"below\""); return; } /* Check for absolute setting */ read_sigc(); if (isdigit(read_c)) { srs.textflags |= text_absolute; srs.textabsolute = sign*read_fixed(); } } } /************************************************* * Time * *************************************************/ static void p_time(void) { b_timestr *p; uint32_t t = read_time(); uint32_t tt; if (t == 0) return; /* Error in time signature */ tt = t = read_scaletime(t); /* Scale to header double/halve */ p = mem_get_item(sizeof(b_timestr), b_time); p->time = t; p->assume = assumeflag; p->warn = MFLAG(mf_timewarn); p->suppress = !MFLAG(mf_showtime); assumeflag = FALSE; /* If the time signature is followed by "->" we read a second signature to which bars are to be musically stretched or compressed. This makes it possible to have different non-compatible time signatures on different staves, for example, 6/8 vs 2/4. */ read_sigc(); if (read_c == '-' && main_readbuffer[read_i] == '>') { uint32_t t3; read_i++; read_nextc(); t3 = read_time(); if (t3 != 0) tt = read_scaletime(t3); } /* The required bar length is the length of the target time signature. */ srs.required_barlength = read_compute_barlength(tt); /* If the two signatures are different, set up adjustment numerator and denominator. So as not to waste time multiplying in the common case, indicate "unset" with numerator == 0. */ if (t == tt) srs.matchnum = 0; else { srs.matchnum = srs.required_barlength; srs.matchden = read_compute_barlength(t); } /* Now test for "nowarn" */ read_sigc(); if (isalpha(read_c)) { read_nextword(); if (Ustrcmp(read_wordbuffer, "nowarn") == 0) p->warn = FALSE; else nextwordread = TRUE; } } /************************************************* * Transpose * *************************************************/ /* A stave transpose does not of itself change the key signature. This is a facility, not a bug! However, we must call the routine in order to set up the letter count for transposing notes. The yield is discarded. */ static void p_transpose(void) { int32_t x; if (!read_expect_integer(&x, FALSE, TRUE)) return; if (active_transpose == NO_TRANSPOSE) active_transpose = 0; active_transpose += x * 2; /* Quarter tones */ if (abs(active_transpose) > MAX_TRANSPOSE) error(ERR64, (active_transpose == x)? "":"accumulated ", active_transpose/2, MAX_TRANSPOSE/2); /* Hard error */ (void)transpose_key(srs.key); srs.lastnoteptr = NULL; } /************************************************* * Transposedacc * *************************************************/ static void p_transposedacc(void) { read_nextword(); if (Ustrcmp(read_wordbuffer, "force") == 0) active_transposedaccforce = TRUE; else if (Ustrcmp(read_wordbuffer, "noforce") == 0) active_transposedaccforce = FALSE; else error(ERR8, "\"force\" or \"noforce\""); } /************************************************* * Tremolo * *************************************************/ /* Force a beam break beforehand if we are beaming. */ static void p_tremolo(void) { b_beambreakstr *bb; b_tremolostr *p; int32_t count = 2; int32_t join = 0; if (srs.beaming) { bb = mem_get_item(sizeof(b_beambreakstr), b_beambreak); bb->value = BEAMBREAK_ALL; } while (read_c == '/') { read_nextc(); if (read_c == 'x' || read_c == 'j') { int32_t *xp = (read_c == 'x')? &count : &join; read_nextc(); if (!read_expect_integer(xp, FALSE, FALSE)) return; } else error(ERR8, "\"x\" or \"j\""); read_sigc(); } p = mem_get_item(sizeof(b_tremolostr), b_tremolo); p->count = count; p->join = join; } /************************************************* * Tripletize * *************************************************/ static void p_tripletize(void) { if (isalpha(read_c)) read_nextword(); else Ustrcpy(read_wordbuffer, "on"); if (Ustrcmp(read_wordbuffer, "off") == 0) { srs.noteflags &= ~nf_tripletize; } else { if (Ustrcmp(read_wordbuffer, "on") != 0) nextwordread = TRUE; srs.noteflags |= nf_tripletize; brs.checktripletize = TRUE; /* Check completed bar for tripletizing */ } } /************************************************* * Triplets * *************************************************/ static void p_triplets(void) { BOOL hadone = FALSE; BOOL onflag = TRUE; b_bytevaluestr *p = mem_get_item(sizeof(b_tripswstr), b_tripsw); for (;;) { read_nextword(); if (Ustrcmp(read_wordbuffer, "above") == 0 || Ustrcmp(read_wordbuffer, "below") == 0) { srs.pletflags &= ~(plet_a | plet_b | plet_abs); srs.pletflags |= (read_wordbuffer[0] == 'a')? plet_a : plet_b; srs.plety = 0; read_sigc(); if (read_c == '+' || read_c == '-') (void)read_expect_integer(&srs.plety, TRUE, TRUE); else if (isdigit(read_c)) { srs.pletflags |= plet_abs; srs.plety = read_fixed(); if ((srs.pletflags & plet_b) != 0) srs.plety = -srs.plety; } } else if (Ustrcmp(read_wordbuffer, "auto") == 0) { srs.pletflags &= ~(plet_a | plet_b | plet_abs | plet_bn | plet_by); srs.plety = 0; } else if (Ustrcmp(read_wordbuffer, "bracket") == 0 || Ustrcmp(read_wordbuffer, "nobracket") == 0) { srs.pletflags &= ~(plet_by | plet_bn); srs.pletflags |= (read_wordbuffer[0] == 'b')? plet_by : plet_bn; } else if (Ustrcmp(read_wordbuffer, "off") == 0) onflag = FALSE; else if (Ustrcmp(read_wordbuffer, "on") == 0) onflag = TRUE; else /* Unrecognized */ { nextwordread = read_wordbuffer[0] != 0; break; } hadone = TRUE; } if (!hadone) error(ERR8, "\"above\", \"below\", \"auto\", \"[no]bracket\", " "\"on\", or \"off\""); p->value = onflag; } /************************************************* * Table of stave directives * *************************************************/ static dirstr read_stavedirlist[] = { { "all", p_common, b_all, TRUE }, { "alto", p_clef, clef_alto, FALSE }, { "assume", p_assume, 0, TRUE }, { "backup", p_backup, 0, TRUE }, { "baritone", p_clef, clef_baritone, FALSE }, { "barlinestyle", p_barlinestyle, 0, TRUE }, { "barnumber", p_barnum, 0, TRUE }, { "bass", p_clef, clef_bass, FALSE }, { "beamacc", p_beamaccrit, b_beamacc, FALSE }, { "beammove", p_svalue, b_beammove, TRUE }, { "beamrit", p_beamaccrit, b_beamrit, FALSE }, { "beamslope", p_svalue, b_beamslope, TRUE }, { "bottommargin", p_pvalue, b_pagebotmargin, TRUE }, { "bowing", p_bowing, 0, TRUE }, { "breakbarline", p_common, b_breakbarline, TRUE }, { "c", p_noteheads, nh_circular, TRUE }, { "cbaritone", p_clef, clef_cbaritone, FALSE }, { "comma", p_common, b_comma, FALSE }, { "contrabass", p_clef, clef_contrabass, FALSE }, { "copyzero", p_svalue, b_zerocopy, TRUE }, { "couple", p_couple, 0, TRUE }, { "cue", p_cue, 0, TRUE }, { "deepbass", p_clef, clef_deepbass, FALSE }, { "dots", p_dots, 0, TRUE }, { "doublenotes", p_doublenotes, 0, TRUE }, { "draw", p_draw, FALSE, FALSE }, { "el", p_endline, b_endline, TRUE }, { "endcue", p_endcue, 0, TRUE }, { "endline", p_endline, b_endline, TRUE }, { "endslur", p_endline, b_endslur, TRUE }, { "endstaff", NULL, 0, TRUE }, { "endstave", NULL, 0, TRUE }, { "ensure", p_pvalue, b_ensure, FALSE }, { "es", p_endline, b_endslur, TRUE }, { "fbfont", p_fonttype, 0, TRUE }, { "fbtextsize", p_fontsize, 0, TRUE }, { "footnote", p_footnote, 0, TRUE }, { "h", p_noteheads, nh_harmonic, TRUE }, { "hairpins", p_hairpins, 0, TRUE }, { "hairpinwidth", p_hairpinwidth, 0, TRUE }, { "halvenotes", p_halvenotes, 0, TRUE }, { "hclef", p_clef, clef_hclef, FALSE }, { "justify", p_justify, 0, TRUE }, { "key", p_key, 0, FALSE }, { "line", p_slur, sflag_l, FALSE }, { "linegap", p_slurgap, FALSE, FALSE }, { "mezzo", p_clef, clef_mezzo, FALSE }, { "midichannel", p_midichanvoice, TRUE, TRUE }, { "midipitch", p_midipitch, 0, TRUE }, { "miditranspose", p_miditranspose, 0, TRUE }, { "midivoice", p_midichanvoice, FALSE, TRUE }, { "midivolume", p_midivolume, 0, TRUE }, { "move", p_move, FALSE, FALSE }, { "name", read_stavename, 0, TRUE }, { "newline", p_common, b_newline, TRUE }, { "newmovement", p_newmovement, 0, TRUE }, { "newpage", p_common, b_newpage, TRUE }, { "nocheck", p_nocheck, 0, TRUE }, { "noclef", p_clef, clef_none, FALSE }, { "nocount", p_nocount, 0, TRUE }, { "noteheads", p_noteheads, nh_number, TRUE }, { "notes", p_notes, 0, TRUE }, { "notespacing", p_ns, 0, TRUE }, { "ns", p_ns, 0, TRUE }, { "o", p_noteheads, nh_normal, TRUE }, { "octave", p_octave, 0, TRUE }, { "olevel", p_uolevel, b_olevel, TRUE }, { "olhere", p_svalue, b_olhere, TRUE }, { "oltextsize", p_fontsize, 3, TRUE }, { "omitempty", p_omitempty, 0, TRUE }, { "overdraw", p_draw, TRUE, FALSE }, { "overlayfont", p_fonttype, 3, TRUE }, { "page", p_page, 0, TRUE }, { "printpitch", p_printpitch, 0, TRUE }, { "reset", p_reset, 0, TRUE }, { "resume", p_ressus, FALSE, TRUE }, { "rlevel", p_rlevel, 0, TRUE }, { "rmove", p_move, TRUE, FALSE }, { "rsmove", p_move, TRUE, FALSE }, { "rspace", p_rspace, TRUE, FALSE }, { "sgabove", p_sg, b_sgabove, TRUE }, { "sghere", p_sg, b_sghere, TRUE }, { "sgnext", p_sg, b_sgnext, TRUE }, { "skip", p_skip, 0, TRUE }, { "sl", p_stemlength, 0, TRUE }, { "slur", p_slur, 0, FALSE }, { "slurgap", p_slurgap, TRUE, FALSE }, { "smove", p_move, FALSE, FALSE }, { "soprabass", p_clef, clef_soprabass, FALSE }, { "soprano", p_clef, clef_soprano, FALSE }, { "space", p_rspace, FALSE, FALSE }, { "ssabove", p_ss, b_ssabove, TRUE }, { "sshere", p_ss, b_sshere, TRUE }, { "ssnext", p_ss, b_ssnext, TRUE }, { "stafflines", p_stavelines, 0, TRUE }, { "stavelines", p_stavelines, 0, TRUE }, { "stemlength", p_stemlength, 0, TRUE}, { "stems", p_stems, TRUE, TRUE }, { "suspend", p_ressus, TRUE, TRUE }, { "tenor", p_clef, clef_tenor, FALSE }, { "text", p_text, 0, TRUE }, { "textfont", p_fonttype, 1, TRUE }, { "textsize", p_fontsize, 1, TRUE }, { "tick", p_common, b_tick, FALSE }, { "ties", p_stems, FALSE, TRUE }, { "time", p_time, 0, FALSE }, { "topmargin", p_pvalue, b_pagetopmargin, TRUE }, { "transpose", p_transpose, 0, TRUE }, { "transposedacc", p_transposedacc, 0, TRUE }, { "treble", p_clef, clef_treble, FALSE }, { "trebledescant", p_clef, clef_trebledescant, FALSE }, { "trebletenor", p_clef, clef_trebletenor, FALSE }, { "trebletenorb", p_clef, clef_trebletenorB, FALSE }, { "tremolo", p_tremolo, 0, TRUE }, { "tripletize", p_tripletize, 0, TRUE }, { "triplets", p_triplets, 0, TRUE }, { "ulevel", p_uolevel, b_ulevel, TRUE }, { "ulhere", p_svalue, b_ulhere, TRUE }, { "ultextsize", p_fontsize, 2, TRUE }, { "unbreakbarline", p_common, b_unbreakbarline, TRUE }, { "underlayfont", p_fonttype, 2, TRUE }, { "x", p_noteheads, nh_cross, TRUE }, { "xline", p_slur, sflag_x+sflag_l, FALSE }, { "xslur", p_slur, sflag_x, FALSE }, { "z", p_noteheads, nh_none, TRUE } }; static int read_stavedirsize = sizeof(read_stavedirlist)/sizeof(dirstr); /************************************************* * Search directive list * *************************************************/ /* This function is used below, but is also called when processing the header directive "printkey" in order to check a clef name. This avoids having multiple lists for clefs. The directive name is already in read_wordbuffer. */ dirstr * read_stave_searchdirlist(BOOL justclef) { dirstr *first = read_stavedirlist; dirstr *last = first + read_stavedirsize; while (last > first) { int c; dirstr *d = first + (last-first)/2; c = Ustrcmp(read_wordbuffer, d->name); if (c == 0) { if (justclef && d->proc != p_clef) return NULL; return d; } if (c > 0) first = d + 1; else last = d; } return NULL; } /************************************************* * Handle a stave directive * *************************************************/ /* The directive name is already in read_wordbuffer. The nextwordread variable is set by a directive if it has read a word ahead that is not one of its keywords. When this occurs, we process that word too. Arguments: the current head of bar structure Returns: TRUE when [endstave] reached */ BOOL read_do_stavedirective(void) { do { dir = read_stave_searchdirlist(FALSE); if (dir == NULL) { error_skip(ERR86, ']', read_wordbuffer); return FALSE; } else { if (dir->proc == NULL) return TRUE; /* [endstave] */ nextwordread = FALSE; read_sigc(); (dir->proc)(); if (!dir->arg2) brs.resetOK = FALSE; /* [reset] not allowed */ } } while (nextwordread); return FALSE; } /* End of pmw_read_stavedirs.c */ pmw-5.22/src/xml_globals.h0000644000222100022210000000362014541067540013605 0ustar ph10ph10/************************************************* * MusicXML input for PMW * *************************************************/ /* Copyright (c) Philip Hazel, 2022 */ /* This file last edited: April 2022 */ /* Header file for all the XML global variables */ /************************************************* * General global variables * *************************************************/ extern uint8_t xml_couple_settings[]; extern xml_entity_block xml_entity_list[]; extern int xml_entity_list_count; extern int xml_error_max; extern int32_t xml_first_system_distance; extern int32_t xml_fontsizes[]; extern int xml_fontsize_next; extern int32_t xml_fontsize_word_default; extern xml_group_data *xml_groups_list; extern BOOL xml_group_symbol_set; extern tree_node *xml_ignored_element_tree; extern uschar *xml_layout_list; extern size_t xml_layout_list_size; extern size_t xml_layout_top; extern xml_item *xml_main_item_list; extern uint32_t xml_movt_setflags; extern uint32_t xml_movt_unsetflags; extern xml_part_data *xml_parts_list; extern xml_item *xml_partwise_item_list; extern int xml_pmw_stave_count; extern xml_item *xml_read_addto; extern BOOL xml_read_done; extern uschar *xml_read_filename; extern int xml_read_linenumber; extern BOOL xml_right_justify_stave_names; extern BOOL xml_set_stave_size; extern int xml_stave_sizes[]; extern xml_elliststr xml_supported_elements[]; extern int xml_supported_elements_count; extern int xml_time_signature_seen; extern tree_node *xml_unrecognized_element_tree; extern BOOL xml_warn_unrecognized; /* End of xml_globals.h */ pmw-5.22/src/pmw_read.c0000644000222100022210000010023014541067540013066 0ustar ph10ph10/***?********************************************** * PMW native input reading functions * *************************************************/ /* Copyright Philip Hazel 2021 */ /* This file created: December 2020 */ /* This file last modified: April 2022 */ /* This file contains the top-level function and character handling functions that are called from the modules that read headings and staves. */ #include "pmw.h" /* Default "macro" for the &* replication feature */ static macrostr replicate_macro = { 1, US"&1", { US"" } }; /************************************************* * Get MIDI number from file * *************************************************/ /* This function scans a list of MIDI voice or percussion names to find the number for a given name. If we are not generating MIDI (midi_filename is NULL), there is no search, but we do not give an error. Just return zero. Arguments: list the list of MIDI names string the string to search for text text for use in the error message Returns: the MIDI number */ int read_getmidinumber(uschar *list, uschar *string, uschar *text) { int yield = -1; if (list != NULL) while (*list != 0) { int len = Ustrlen(list); if (Ustrcmp(list, string) == 0) { yield = list[len+1]; break; } list += len + 2; } if (yield < 0) { error(ERR49, text, string); yield = 1; } return yield; } /************************************************* * Double/halve time signature * *************************************************/ /* The variables curmovt->notenum and curmovt->noteden contain the numerator and denominator of any note scaling (doublenotes, halvenotes) that was set up in the movement's header. This affects a previously-defined time signature. The stave directives [doublenotes] and [halvenotes] do not affect time signatures. Argument: the unscaled time signature Returns: the scaled time signature */ uint32_t read_scaletime(uint32_t ts) { int m, n, d; if (curmovt->notenum == 1 && curmovt->noteden == 1) return ts; m = (ts & 0xffff0000u) >> 16; /* multiplier */ n = (ts & 0x0000ff00u) >> 8; /* numerator */ d = (ts & 0x000000ffu); /* denominator */ if (d == time_common || d == time_cut) { m *= curmovt->notenum; if (curmovt->noteden > 1) { if (m % (curmovt->noteden) == 0) m /= curmovt->noteden; else error(ERR41); /* Hard */ } return (m << 16) | d; } d *= curmovt->noteden; if (d % (curmovt->notenum) == 0) d /= curmovt->notenum; else n *= curmovt->notenum; return (m << 16) + (n << 8) + d; } /************************************************* * Read time signature * *************************************************/ /* Return zero after an error. A time signature can be of the form m*n/d. Arguments: none Returns: the packed up time signature */ uint32_t read_time(void) { BOOL gotnum = FALSE; int32_t m, n, d; if (isdigit(read_c)) { (void)read_expect_integer(&m, FALSE, FALSE); read_sigc(); if (read_c == '*') read_nextc(); else { n = m; /* m becomes numerator */ m = 1; /* multiplier becomes 1 */ gotnum = TRUE; /* numerator has been read */ } } else m = 1; /* non-numeric time sig */ /* Look for A or C or a numerator */ if (!gotnum) { read_c = tolower(read_c); if (read_c == 'a' || read_c == 'c') { uint32_t type = (read_c == 'c')? time_common : time_cut; read_nextc(); return (m << 16) | type; } if (!read_expect_integer(&n, FALSE, FALSE)) return 0; } /* Look for denominator */ read_sigc(); if (read_c != '/') { error(ERR8, "\"/\""); return 0; } read_nextc(); if (!read_expect_integer(&d, FALSE, FALSE)) return 0; if (d < 1 || d > 64 || d != (d & (-d))) error(ERR46); /* hard error */ return (m << 16) | (n << 8) | d; } /************************************************* * Read key signature * *************************************************/ /* Arguments: none Returns: the key signature (C major after an error) */ uint32_t read_key(void) { uint32_t key = key_C; read_c = tolower(read_c); if ('a' <= read_c && read_c <= 'g') { key = read_c - 'a'; read_nextc(); if (read_c == '#') { key += 7; read_nextc(); } else if (read_c == '$') { key += 14; read_nextc(); } if (tolower(read_c) == 'm') { key += 21; read_nextc(); } if (keysigtable[key][0] == ks_bad) { key = key_C; error(ERR43); } } else if (read_c == 'n') { key = key_N; read_nextc(); } else if (read_c == 'x') { int32_t n; read_nextc(); if (!read_expect_integer(&n, FALSE, FALSE) || n == 0 || n > MAX_XKEYS) error(ERR44, MAX_XKEYS); else key = key_X + n - 1; } else error(ERR8, "key signature"); return key; } /************************************************* * Read and lowercase next word * *************************************************/ void read_nextword(void) { int i = 0; read_sigc(); if (isalpha(read_c)) { do { if (i >= WORDBUFFER_SIZE - 1) error(ERR7, "word", WORDBUFFER_SIZE - 1); /* Hard */ read_wordbuffer[i++] = tolower(read_c); read_nextc(); } while (isalnum(read_c) || read_c == '_'); } read_wordbuffer[i] = 0; } /************************************************* * Read unsigned integer * *************************************************/ /* Called when we know the current character is a digit. */ uint32_t read_usint(void) { uint32_t yield = 0; do { usint x = read_c - '0'; if (yield > (UINT32_MAX - x)/10) error(ERR36, "integer"); yield = yield*10 + x; read_nextc(); } while (isdigit(read_c)); return yield; } /************************************************* * Read logical bar number * *************************************************/ /* Called when we know the current character is a digit. */ uint32_t read_barnumber(void) { uint32_t bar = read_usint() << 16; if (read_c == '.') { read_nextc(); if (!isdigit(read_c)) error(ERR8, "fractional part for bar number"); else bar |= read_usint(); } return bar; } /************************************************* * Read fixed-point number * *************************************************/ /* Called when we know the current character is a digit. */ uint32_t read_fixed(void) { uint32_t yield = read_usint(); if (yield > UINT32_MAX/1000) error(ERR36, "fixed point number"); yield *= 1000; if (read_c == '.') { usint d = 100; while (read_nextc(), isdigit(read_c)) { yield += (read_c - '0')*d; d /= 10; } } return yield; } /************************************************* * Read an expected movement dimension * *************************************************/ /* This function is called after /u, /d, /l, or /r has been read. Arguments: none Returns: the value, or zero after an error */ int32_t read_movevalue(void) { int32_t x; read_nextc(); return (read_expect_integer(&x, TRUE, FALSE))? x : 0; } /************************************************* * Read an expected int or fixed * *************************************************/ /* This is called when the first character hasn't been checked, and an error indication is required if the value is missing. Arguments: yield where to put the value fixed TRUE for a fixed point value, FALSE for an integer allowsign TRUE if a sign is permitted Returns: TRUE if OK, FALSE on error */ BOOL read_expect_integer(int32_t *yield, BOOL fixed, BOOL allowsign) { int sign = 1; uint32_t n; read_sigc(); if (allowsign) { if (read_c == '+') read_nextc(); else if (read_c == '-') { sign = -1; read_nextc(); } } if (!isdigit(read_c)) { error(ERR8, allowsign? "number" : "unsigned number"); return FALSE; } n = fixed? read_fixed() : read_usint(); if (n > INT32_MAX) error(ERR36, "number"); *yield = n * sign; return TRUE; } /************************************************* * Read accent or ornament * *************************************************/ /* Accents and ornaments are listed in the same table. They are distinguished by the value. */ uint32_t read_accororn(uint32_t eskip) { accent *ap; uschar *s = main_readbuffer + read_i - 1; for (ap = accent_chars; ap->string != NULL; ap++) { if (Ustrncmp(s, ap->string, ap->len) == 0) { read_i += ap->len - 1; read_nextc(); return ap->flag; } } error_skip(ERR92, eskip); return or_unset; } /************************************************* * Read a font size and stretch/shear * *************************************************/ /* This is always called with the first digit already read. Arguments: fdata pointer to fontinststr to receive the data stretchOK TRUE if stretching is allowed Returns: nothing */ void read_fontsize(fontinststr *fdata, BOOL stretchOK) { int32_t stretch; int32_t shear; fdata->size = read_fixed(); fdata->matrix = NULL; if (read_c != '/') return; /* Handle optional stretch and shear */ shear = 0; read_nextc(); if (!read_expect_integer(&stretch, TRUE, FALSE)) return; /* Fixed, unsigned */ if (read_c == '/') { read_nextc(); if (!read_expect_integer(&shear, TRUE, TRUE)) return; /* Fixed, signed */ } if (!stretchOK) error(ERR35, "allowed", "with this directive"); else { int32_t *matrix = mem_get(6*sizeof(int32_t)); fdata->matrix = matrix; matrix[0] = mac_muldiv(stretch, 65536, 1000); matrix[1] = 0; matrix[2] = (int32_t)(tan(((double)shear)*atan(1.0)/45000.0)*65536.0); matrix[3] = 65536; matrix[4] = 0; /* Sine of rotation */ matrix[5] = 1000; /* Cosine of rotation */ } } /************************************************* * Read a drawing call with arguments * *************************************************/ /* This function is called in a number of contexts where the word "draw" has just been read. It reads arguments and a drawing name. */ void read_draw(tree_node **drawptr, drawitem **argsptr, uint32_t eskip) { tree_node *node; int argcount = 0; drawitem *drawargs = NULL; drawitem args[20]; /* Read optional arguments */ read_sigc(); while (isdigitorsign(read_c) || read_c == '\"') { if (read_c == '\"') { args[++argcount].d.ptr = read_draw_text(); args[argcount].dtype = dd_text; } else { if (!read_expect_integer(&(args[++argcount].d.val), TRUE, TRUE)) break; args[argcount].dtype = dd_number; } read_sigc(); } if (argcount > 0) { drawargs = mem_get((argcount+1)*sizeof(drawitem)); drawargs[0].dtype = dd_number; drawargs[0].d.val = argcount; memcpy(drawargs+1, args+1, argcount * sizeof(drawitem)); } read_nextword(); node = tree_search(draw_tree, read_wordbuffer); if (node == NULL) { error_skip(ERR70, eskip, read_wordbuffer); return; } *drawptr = node; *argsptr = drawargs; } /************************************************* * Read arguments for heading/footing * *************************************************/ /* This code is called when reading headers. It is also called to read the text of footnotes, which occur within staves. Arguments: new the new headstr type type of heading/footing eskip character to skip to on error Returns: nothing */ void read_headfootingtext(headstr *new, uint32_t type, uint32_t eskip) { int32_t followspace = 0; new->next = NULL; new->drawing = NULL; /* If the next character is a letter, we expect to read "draw [] ". */ if (isalpha(read_c)) { read_nextword(); if (Ustrcmp(read_wordbuffer, "draw") != 0) { error_skip(ERR8, eskip, "\"draw\""); return; } read_draw(&(new->drawing), &(new->drawargs), eskip); } /* Otherwise we expect a PMW string. Set the type size, either by reading, or by algorithm. If explicit, it can be followed by stretch and possibly shear. */ else { int i; uint32_t *p; new->spaceabove = 0; new->fdata.matrix = NULL; new->fdata.spacestretch = 0; /* Explicit size given */ if (isdigit(read_c)) read_fontsize(&(new->fdata), TRUE); /* No size was given */ else switch(type) { case rh_heading: new->fdata.size = read_headingsizes[read_nextheadsize]; break; case rh_footing: case rh_pagefooting: case rh_lastfooting: new->fdata.size = READ_FOOTINGSIZE; break; case rh_pageheading: new->fdata.size = READ_PAGEHEADINGSIZE; break; case rh_footnote: new->fdata.matrix = curmovt->fontsizes->fontsize_footnote.matrix; new->fdata.size = curmovt->fontsizes->fontsize_footnote.size; break; } /* Default following space is type size */ followspace = new->fdata.size; /* Must increment next heading size whether explicit size supplied or not, up to the end of the list. */ if (type == rh_heading && read_headingsizes[read_nextheadsize + 1] != 0) read_nextheadsize++; /* We now read a PMW string and split it into left/middle/right. After the split, run the string check on each segment separately. This is necessary in case there is B2PF processing that reverses the order of characters - we don't want to reverse the order of the segments. */ p = new->string[0] = string_read(font_rm, FALSE); for (i = 1; i < 3; i++) { while (*p != 0) { if (PCHAR(*p++) != ss_verticalbar) continue; p[-1] = 0; new->string[i] = p; break; } if (*p == 0) break; } for (int j = 0; j < i; j++) new->string[j] = string_check(new->string[j], NULL, FALSE); for (; i < 3; i++) new->string[i] = NULL; /* Missing parts */ } /* In both cases (either drawing or text), if another number follows, it is an explicit following space. */ read_sigc(); if (isdigitorsign(read_c)) read_expect_integer(&followspace, TRUE, TRUE); new->space = followspace; } /************************************************* * Handle continued input line * *************************************************/ /* White space before a line's terminating \n is removed when the line is read, so we can just test for &&& before the newline. If found, remove it, and add the next line, repeating as necessary. */ static void handle_continuation(void) { for (;;) { uschar *p; if (main_readlength < 4) return; p = main_readbuffer + main_readlength - 4; if (Ustrncmp(p, "&&&", 3) != 0) return; *p = '\n'; main_readlength -= 3; /* In case no further lines */ if (!read_physical_line(main_readlength - 1)) return; } } /************************************************* * Extend line or argument buffers * *************************************************/ /* This is called from expand_string() below, either to extend the line buffers (if an expanded line is too long) or to extend the buffer into which macro arguments and their expansions are placed. Expanding an argument uses a separate buffer at each level. Both input (the raw argument) and output use the same buffer for this. We use the same extension amount and maximum size in both cases. Arguments: next macro expansion nest level: negative => expanding an input line inptr points to existing input buffer ) for an argument, these outptr points to existing output buffer ) are the same buffer outsizeptr points to current output buffer size Returns: nothing */ static void extend_expand_buffers(int nest, uschar **inptr, uschar **outptr, size_t *outsizeptr) { if (nest >= 0) /* Expanding an argument */ { if (main_argbuffer_size[nest] >= MAIN_READBUFFER_SIZELIMIT) error(ERR5, "argument expansion", MAIN_READBUFFER_SIZELIMIT); /* Hard */ main_argbuffer_size[nest] += MAIN_READBUFFER_CHUNKSIZE; main_argbuffer[nest] = realloc(main_argbuffer[nest], main_argbuffer_size[nest]); if (main_argbuffer[nest] == NULL) error(ERR0, "re-", "macro expansion buffer", main_argbuffer_size[nest]); /* Hard */ *inptr = *outptr = main_argbuffer[nest]; *outsizeptr = main_argbuffer_size[nest]; } /* Extend the line buffers at top level. */ else { read_extend_buffers(); *inptr = main_readbuffer_raw; *outptr = main_readbuffer; *outsizeptr = main_readbuffer_size; } } /************************************************* * Expand string with macros substitutions * *************************************************/ /* This is called for input lines, and also for the arguments of nested macro calls. It copies the input string, expanding any macros encountered. Macro arguments are expanded recursively. Arguments: inbuffer buffer containing the input in offset to start of input string inlen offset to end of input string (points to zero) outbuffer buffer containing the output out offset to start of where to put the output outlen length of output buffer nest nest level; negative = top level, i.e. the line buffers Returns: offset one past the end of the active part of the expanded string in outbuffer */ static size_t expand_string(uschar *inbuffer, size_t in, size_t inlen, uschar *outbuffer, size_t out, size_t outlen, int nest) { DEBUG(D_macro) fprintf(stderr, "Macro expand: %s", inbuffer); if (nest >= MAX_MACRODEPTH) error(ERR22, MAX_MACRODEPTH); /* Hard */ while (in <= inlen) /* Include terminating zero to get buffer extension */ { macrostr *mm; BOOL had_semicolon; usint count; usint ch = inbuffer[in++]; if (nest < 0) macro_in = in; /* For error messages */ /* Handle a literal character. */ if (ch != '&' || inbuffer[in] == '&') { if (out >= outlen) extend_expand_buffers(nest, &inbuffer, &outbuffer, &outlen); outbuffer[out++] = ch; if (ch == '&') in++; continue; } /* Deal with macro insertions, possibly with arguments. Also deal with &*() repetitions, which use very similar code. */ mm = NULL; had_semicolon = FALSE; count = 1; /* Set up for a macro call. Note that macro names may start with a digit and are case-sensitive, so we can't use read_nextword(). */ if (isalnum(inbuffer[in])) { usint i = 0; tree_node *s; read_wordbuffer[i++] = inbuffer[in++]; while (isalnum(inbuffer[in])) { if (i >= WORDBUFFER_SIZE - 1) error(ERR7, "macro name", WORDBUFFER_SIZE - 1); /* Hard */ read_wordbuffer[i++] = inbuffer[in++]; } read_wordbuffer[i] = 0; if (inbuffer[in] == ';') { in++; /* Optional semicolon after name is */ had_semicolon = TRUE; /* skipped, and no args allowed */ } if ((s = tree_search(macro_tree, read_wordbuffer)) != NULL) { mm = (macrostr *)s->data; if (mm == NULL) continue; /* NULL means no replacement */ } else { error(ERR17, read_wordbuffer); /* Couldn't find name */ continue; } } /* Set up for a replication call */ else if (inbuffer[in] == '*') { int len; if (sscanf((char *)(inbuffer + in + 1), "%u(%n", &count, &len) <= 0) { error(ERR8, "after &* unsigned number followed by \"(\""); continue; } in += len; mm = &replicate_macro; /* Pseudo macro for code sharing below */ } /* Invalid character follows '&'. */ else { error(ERR18); continue; } /* Found a macro or &*. For a macro, mm points to its data, and count is 1. For a replication, mm points to a dummy with 1 empty default argument, count contains the replication count, and we know there is an argument. */ /* Optimize the case when macro is defined with no arguments */ if (mm->argcount == 0) { size_t len = Ustrlen(mm->text); while (outlen - out < len + inlen - in) extend_expand_buffers(nest, &inbuffer, &outbuffer, &outlen); Ustrcpy(outbuffer + out, mm->text); out += len; } /* Otherwise we have to process the replacement text character by character, having read any arguments that are present. There need not be; they can all be defaulted. Arguments are read, serially, into main_argbuffer[nest+1], and then expanded for nested macros into what remains of that buffer, which can be extended if necessary. */ else { int argcount = mm->argcount; int nestarg = nest + 1; uschar *argbuff = main_argbuffer[nestarg]; size_t args[MAX_MACROARGS]; size_t ap = 0; /* Offset in argbuff */ /* Set up with no arguments */ for (int i = 0; i < argcount; i++) args[i] = SIZE_UNSET; /* Read given arguments, if any, increasing the count if more than the default number, but only if the name was not followed by a semicolon. */ if (!had_semicolon && inbuffer[in] == '(') { for (int i = 0;; i++) { int bracount = 0; BOOL inquotes = FALSE; size_t ss = ap; if (argcount >= MAX_MACROARGS) error(ERR19, MAX_MACROARGS); /* Hard */ while ((ch = inbuffer[++in]) != '\n' && ch != 0 && ((ch != ',' && ch != ')') || bracount > 0 || inquotes)) { if (ap >= main_argbuffer_size[nestarg]) { extend_expand_buffers(nestarg, &(main_argbuffer[nestarg]), &(main_argbuffer[nestarg]), &(main_argbuffer_size[nestarg])); argbuff = main_argbuffer[nestarg]; } if (ch == '&' && !isalnum(inbuffer[in+1]) && inbuffer[in+1] != '*') argbuff[ap++] = inbuffer[++in]; /* Escaped literal */ else { if (ch == '\"') inquotes = !inquotes; if (!inquotes) { if (ch == '(') bracount++; else if (ch == ')') bracount--; } argbuff[ap++] = ch; } } /* There are more arguments in the call than were defaulted. */ if (i >= argcount) { args[i] = SIZE_UNSET; argcount++; } /* Save a non-empty argument */ if (ap - ss > 0) { argbuff[ap++] = 0; args[i] = ss; } /* Missing closing parenthesis */ if (ch == '\n' || ch == 0) { error(ERR15); break; } /* Reached the end of the arguments */ if (ch == ')') { in++; break; } } /* Only one argument is currently allowed for a replication. Any others are ignored. */ if (mm == &replicate_macro && argcount > 1) error(ERR20); } /* Check the arguments for nested macro calls. */ for (int i = 0; i < argcount; i++) { size_t new_ap; if (args[i] == SIZE_UNSET || Ustrchr(argbuff + args[i], '&') == NULL) continue; new_ap = expand_string(argbuff, args[i], Ustrlen(argbuff + args[i]), argbuff, ap, main_argbuffer_size[nestarg], nestarg); args[i] = ap; ap = new_ap + 1; /* Final zero must remain */ } /* Now copy the replacement, inserting the args. For a replication we repeat many times. For a macro, count is always 1. */ while (count-- > 0) { uschar *pp = mm->text; while (*pp != 0) { if (*pp == '&' && isdigit(pp[1])) { int arg = 0; while (isdigit(*(++pp))) arg = arg*10 + *pp - '0'; if (*pp == ';') pp++; if (--arg < argcount) { uschar *ss = NULL; if (args[arg] != SIZE_UNSET) ss = argbuff + args[arg]; else ss = mm->args[arg]; if (ss != NULL) { size_t ssl = Ustrlen(ss); if (ssl > outlen - out) extend_expand_buffers(nest, &inbuffer, &outbuffer, &outlen); Ustrcpy(outbuffer + out, ss); out += ssl; } } } else { if (out >= outlen) extend_expand_buffers(nest, &inbuffer, &outbuffer, &outlen); outbuffer[out++] = *pp++; } } } outbuffer[out] = 0; } } DEBUG(D_macro) fprintf(stderr, "Expanded: %s", outbuffer); return out - 1; /* Exclude terminating zero */ } /************************************************* * Expand macros in an input line * *************************************************/ /* First remove any trailing comment. Then, if the line contains at least one ampersand, swap the input buffer so it becomes the raw input buffer, then process it into the new buffer, expanding macros. */ static void expand_macros(void) { BOOL inquotes = FALSE; for (size_t i = 0; i < main_readlength; i++) { usint c = main_readbuffer[i]; if (c == '\"') inquotes = !inquotes; else if (!inquotes && c == '@') { while (i > 0 && isspace(main_readbuffer[i-1])) i--; main_readbuffer[i++] = '\n'; main_readbuffer[i] = 0; main_readlength = i; break; } } if (Ustrchr(main_readbuffer, '&') != NULL) { uschar *temp = main_readbuffer; main_readbuffer = main_readbuffer_raw; main_readbuffer_raw = temp; macro_expanding = TRUE; main_readlength = expand_string(main_readbuffer_raw, 0, main_readlength, main_readbuffer, 0, main_readbuffer_size, -1); macro_expanding = FALSE; } } /************************************************* * Check an input line for pre-processing * *************************************************/ /* This function is called when a new line has been read. If it begins with '*' (ignoring leading spaces and tabs), it is a pre-processing directive. We process it, and treat as an empty line. If not, we also treat it as an empty line if we are skipping lines. */ static void handle_preprocessing(void) { BOOL skip; read_i = 0; while ((read_c = main_readbuffer[read_i++]) == ' ' || read_c == '\t') {} if (read_c == '*') { if (isalpha(read_c = main_readbuffer[read_i++])) preprocess_line(); else error(ERR6); skip = TRUE; } else skip = read_skipdepth > 0; /* Either skip to the end of the line or reset to the start. Either way, the current character must be a newline. */ read_c = '\n'; read_i = skip? main_readlength : 0; } /************************************************* * Get next input character * *************************************************/ /* This function updates the global variable read_c with the next character, including a newline at the end of each line, leaving the global pointer read_i pointing at the next character. It deals with macro expansions and preprocessing directives, and it skips comments. */ void read_nextc(void) { for (;;) /* Loop until a character is obtained or very end is reached. */ { if (read_i < main_readlength) { read_c = main_readbuffer[read_i++]; return; } /* There are no more characters in the current line, so we have to read the next one. This loop is for handling included files. */ for (;;) { /* Get next logical line, joining together physical lines that end with &&&. At end of file, check for missing "*fi" and deal with popping included files. */ if (read_physical_line(0)) { handle_continuation(); if (read_skipdepth <= 0) expand_macros(); break; } /* Handle reaching the end of an input file. Set up a suitable text for error reflection, but also set up as an empty line. */ fclose(read_filehandle); read_filehandle = NULL; Ustrcpy(main_readbuffer, "---- End of file ----\n"); read_i = main_readlength = Ustrlen(main_readbuffer); read_c = ENDFILE; /* Check for missing *fi */ if (read_skipdepth > 0 || read_okdepth > 0) error(ERR21); /* End of outermost file */ if (read_filestackptr == 0) return; /* Pop stack at end of an included file */ TRACE("end of %s: popping include stack\n", read_filename); read_filename = read_filestack[--read_filestackptr].filename; read_filehandle = read_filestack[read_filestackptr].file; read_linenumber = read_filestack[read_filestackptr].linenumber; read_okdepth = read_filestack[read_filestackptr].okdepth; read_skipdepth = 0; } /* Loop after reaching the end of an included file */ /* Another line has been read. Check for a pre-processing directive. If found and processed, it leaves this as an empty line. */ handle_preprocessing(); } /* Loop to get the next character */ /* Control never reaches here. */ } /************************************************* * Read a PMW input file * *************************************************/ /* We enter with the first physical line of the line already read, because it has been checked to see what kind of input it is. So the first thing to do is to complete its processing as a PMW input line. */ void pmw_read(void) { uint32_t movtopts = 0; handle_continuation(); expand_macros(); handle_preprocessing(); /* Loop for reading movements. */ for (;;) { int i; movtstr *newmovt; uint16_t nextbarnumber; uint16_t nextbarfraction = 1; /* Set up or expand the vector that points to the movements. */ if (movement_count >= movements_size) { movements_size += MOVTVECTOR_CHUNKSIZE; movements = realloc(movements, movements_size * sizeof(movtstr *)); if (movements == NULL) error(ERR0, "re-", "movements vector", movements_size); /* Hard */ } /* Set up a new movement. For the first movement, the "previous movement" pointer points to the default movement data. */ premovt = (curmovt == NULL)? &default_movtstr : curmovt; movements[movement_count++] = newmovt = mem_get(sizeof(movtstr)); read_init_movement(newmovt, 0, movtopts); curmovt = newmovt; /* The header is terminated either by EOF or '[' */ read_sigc(); pmw_read_header(); curmovt->select_staves |= 1; /* Stave 0 is always selected */ if (read_c == ENDFILE) break; /* Read data for all the staves. After each stave, remember the final barline style. This is used if empty bars have to be created for this stave. */ if (Ustrncmpic(main_readbuffer+read_i, "stave", 5) == 0 || Ustrncmpic(main_readbuffer+read_i, "staff", 5) == 0) { for (;;) { read_i += 5; pmw_reading_stave = TRUE; pmw_read_stave(); pmw_reading_stave = FALSE; barlinestyles[srs.stavenumber] = srs.barlinestyle; if (read_c == ENDFILE) break; read_nextsigc(); if (Ustrncmpic(main_readbuffer + read_i - 1, "[stave ", 7) != 0 && Ustrncmpic(main_readbuffer + read_i - 1, "[staff ", 7) != 0) break; } } /* Remember the highest stave used in any movement. */ if (curmovt->laststave > main_maxstave) main_maxstave = curmovt->laststave; /* Create dummies for empty staves and omitted bars. */ read_tidy_staves(TRUE); /* Scan movement's bar index and handle printing bar numbers. Nocount bars are identified as x.1, x.2, etc, except that the very first bar is just 0. */ nextbarnumber = curmovt->baroffset + 1; for (i = 0; i < (int)curmovt->barcount; i++) { if (curmovt->barvector[i] != 0) /* Indicates [nocount] */ { curmovt->barnocount++; curmovt->barvector[i] = (i == 0) ? 0 : ((nextbarnumber - 1) << 16 | nextbarfraction++); } else { curmovt->barvector[i] = (nextbarnumber++ << 16); nextbarfraction = 1; } } /* The only thing that can follow staves is a new movement */ if (read_c == ENDFILE) break; if (Ustrncmpic(main_readbuffer + read_i - 1, "[newmovement", 12) != 0) error(ERR9, "[stave] or [newmovement]"); /* Hard */ /* Read options for the new movement, checking that only one of newpage, thispage, or thisline is set. */ read_i += 11; read_nextsigc(); movtopts = 0; while (read_c != ']') { uint32_t x; read_nextword(); read_sigc(); if (Ustrcmp(read_wordbuffer, "thispage") == 0) movtopts |= mf_thispage; else if (Ustrcmp(read_wordbuffer, "thisline") == 0) movtopts |= mf_thisline; else if (Ustrcmp(read_wordbuffer, "newpage") == 0) movtopts |= mf_newpage; else if (Ustrcmp(read_wordbuffer, "nopageheading") == 0) movtopts |= mf_nopageheading; else if (Ustrcmp(read_wordbuffer, "uselastfooting") == 0) movtopts |= mf_uselastfooting; else error(ERR8, "\"thispage\", \"thisline\", \"newpage\", " "\"nopageheading\", or \"uselastfooting\""); x = movtopts & (mf_newpage|mf_thispage|mf_thisline); if ((x & (~x + 1)) != x) error(ERR135); } read_nextc(); } /* End movements loop */ TRACE("End PMW read\n"); } /* End of pmw_read.c */ pmw-5.22/src/setbeam.c0000644000222100022210000012066614541067540012727 0ustar ph10ph10/************************************************* * PMW beaming functions * *************************************************/ /* Copyright Philip Hazel 2021 */ /* This file created: June 2021 */ /* This file last modified: October 2023 */ #include "pmw.h" /************************************************* * Static variables * *************************************************/ static int32_t retryslopes[] = { 100, 50, 0, -50, -100, -300 }; static int32_t minoffset; /************************************************* * Determine slope for beam * *************************************************/ /* This procedure is called only when there are more than two notes in the beam. It is a totally heuristic function, but it seems to produce reasonable slopes pretty nearly all the time. Arguments: none Returns: slope */ static int32_t findslope(void) { b_notestr *left = beam_first; int32_t slope = 0; /* Pitches in notes are uint16_t, but here we are going to be working with positive and negative intervals, so use ints. */ int leftpitch = left->spitch; int rightpitch = beam_last->spitch; int thispitch = leftpitch; int nextpitch; int max = 0; int min = INT_MAX; int thisrun = 0; int runindex; int lastrunindex = -1; int lasttype = left->notetype; int interval; int lastinterval = 0; int firstslope = beam_upflag? (-1) : (+1); /* in case rest first */ int runs[3]; BOOL downs_less_than_up = TRUE; BOOL ups_less_than_down = TRUE; mac_couplepitch(leftpitch, left->flags); mac_couplepitch(rightpitch, beam_last->flags); /* If the two ends of the beam are at the same pitch, draw a level beam. */ if (leftpitch == rightpitch) return 0; /* Otherwise do some analysis */ runs[0] = runs[1] = runs[2] = 0; /* equal, up, down */ while (left != beam_last) { b_notestr *next = misc_nextnote(left); nextpitch = next->spitch; /* Totally ignore grace/non-grace as required */ if ((out_gracenotes && next->length != 0) || (!out_gracenotes && next->length == 0)) { left = next; continue; } /* Skip over rests, but keep the note type (below) */ if (nextpitch != 0) { mac_couplepitch(nextpitch, next->flags); if (left == beam_first) firstslope = nextpitch - thispitch; if (next != beam_last) { if (nextpitch > max) max = nextpitch; /* Max/min of all but the first */ if (nextpitch < min) min = nextpitch; /* and last notes */ } interval = nextpitch - thispitch; runindex = (interval == 0)? 0 : (interval > 0)? 1 : 2; /* Slope is same as previous */ if (runindex == lastrunindex) { if (next->notetype >= lasttype || (beam_upflag && runindex == 1) || (!beam_upflag && runindex == 2)) thisrun++; } /* Slope is different from previous */ else { if (lastrunindex >= 0) { if (thisrun > runs[lastrunindex]) runs[lastrunindex] = thisrun; if (interval > 0 && interval >= abs(lastinterval)) ups_less_than_down = FALSE; if (interval < 0 && abs(interval) >= lastinterval) downs_less_than_up = FALSE; } thisrun = 1; lastrunindex = runindex; } /* Save for next note */ lastinterval = interval; thispitch = nextpitch; } lasttype = next->notetype; left = next; } if (lastrunindex >= 0 && thisrun > runs[lastrunindex]) runs[lastrunindex] = thisrun; /* This is the heuristic algorithm that produces a default slope */ if (runs[1] > runs[0] && runs[1] > runs[2]) slope = curmovt->maxbeamslope[1]; else if (runs[2] > runs[0] && runs[2] > runs[1]) slope = -curmovt->maxbeamslope[1]; /* Some special cases override the heuristic */ if (leftpitch > rightpitch) { if (beam_upflag && leftpitch - rightpitch >= 8 && max <= rightpitch + 4) slope = -curmovt->maxbeamslope[1]; else if (!beam_upflag && min <= rightpitch) slope = 0; else if (slope > 0) slope = 0; } else { if (!beam_upflag && rightpitch - leftpitch >= 8 && min >= rightpitch - 4) slope = curmovt->maxbeamslope[1]; else if (beam_upflag && max >= rightpitch) slope = 0; else if (slope < 0) slope = 0; } if (beam_upflag) { if (slope < 0 && (firstslope >= 0 || runs[1] > 2 || !ups_less_than_down)) return 0; } else { if (slope > 0 && (firstslope <= 0 || runs[2] > 2 || !downs_less_than_up)) return 0; } return slope; } /************************************************* * Compute Beam Offset * *************************************************/ /* The original code dealt only with beams where all the notes had stems in the same direction. The addition of logic to deal with other cases leaves this code alone, but adds additional computations to compute the two offsets for the two sets of notes. If this is successful, then a middle position is chosen at the end. Arguments: lastopposite TRUE if the last note's stem goes the opposite way adjusts x-adjustments for the notes longestnote longest note in the beam Returns: FALSE if notes on opposite sides are wanted, but cannot be handled; otherwise TRUE. */ static BOOL ComputeBeamOffset(BOOL lastopposite, int32_t *adjusts, int longestnote) { b_notestr *thisnote = beam_first; BOOL forcelength = TRUE; BOOL hemidemisemiquavers = FALSE; int32_t diff_thisoffset; int32_t diff_thatoffset = INT32_MAX; /* => unset */ int32_t moff = beam_firstmoff; int32_t xfirst = out_findXoffset(beam_firstmoff) + adjusts[0]; int32_t yadjust = beam_first->yextra; int32_t yfirst; int adjustptr = 0; int yfirstpitch = beam_first->spitch; int tremolo = -1; /* Note that yadjust does not include a value from "stemlengths", since those values are mainly aimed at non-beamed notes. Impose a minimum shortening, just in case someone specifies a ridiculous stem length with the note. */ if (yadjust < -8000) yadjust = -8000; mac_couplepitch(yfirstpitch, beam_first->flags); yfirst = (yfirstpitch - P_1S)*out_pitchmagn; beam_splitOK = TRUE; /* Scan any ornaments for tremolos */ if (n_ornament != NULL) { for (b_ornamentstr *op = n_ornament; op->type == b_ornament; op = (b_ornamentstr *)(op->next)) { if (op->ornament == or_trem2 || op->ornament == or_trem3) tremolo = op->ornament; } } /* Initialize from the first note, forcing a stem length if not coupled. */ if (beam_upflag) { beam_offset = diff_thisoffset = yadjust; if ((beam_first->flags & nf_coupleD) == 0) { forcelength = FALSE; if (yfirstpitch < P_0L - P_T) /* Space below 0th line */ beam_offset += (P_0L - P_T - yfirstpitch)*out_pitchmagn; } } else { beam_offset = diff_thisoffset = -yadjust; if ((beam_first->flags & nf_coupleU) == 0) { forcelength = FALSE; if (yfirstpitch > P_6S) beam_offset -= (yfirstpitch - P_6S)*out_pitchmagn; } } minoffset = abs(beam_offset) + 8000; /* Loop through the beam */ for (;;) { BOOL note_upflag = (thisnote->flags & nf_stemup) != 0; int32_t xnote = out_findXoffset(moff) - ((lastopposite && thisnote == beam_last)? beam_Xcorrection : 0) + adjusts[adjustptr]; int32_t thatynote; int32_t ybasic = yfirst + mac_muldiv(beam_slope, xnote-xfirst, 1000); int32_t ybeam = ybasic + beam_offset; int32_t thisybeam = ybasic + diff_thisoffset; int32_t ynote; int ypitch = thisnote->spitch; mac_couplepitch(ypitch, thisnote->flags); yadjust = thisnote->yextra; if (yadjust < -8000) yadjust = -8000; /* Adjust for tremolos: if the note is in a space, the pitch will have the 4 bit set. */ if (tremolo == or_trem2) yadjust += ((ypitch & 4) == 0)? 4000 : 2000; else if (tremolo == or_trem3) yadjust += ((ypitch & 4) == 0)? 8000 : 6000; ynote = (ypitch - P_1S)*out_pitchmagn + n_upfactor*yadjust; /* If this is the first note of the beam, it might really be a rest in disguise. We can tell this from the absolute pitch. If so, adjust for longestnote. */ if (thisnote->abspitch == 0) { ynote = ynote + n_upfactor*(longestnote - quaver)*4*out_stavemagn; } /* Else if this is the first non-coupled note, force a stem length. We don't force for more than one note in a beam, because that leads to excessively long stems. */ else if (forcelength) { if (beam_upflag) { if ((thisnote->flags & nf_coupleD) == 0) { forcelength = FALSE; if (ynote < L_0L - 2000) ynote += (L_0L - 2000) - ynote; } } else { if ((thisnote->flags & nf_coupleU) == 0) { forcelength = FALSE; if (ynote > L_6L + 2000) ynote -= ynote - (L_6L + 2000); } } } thatynote = ynote - 2*n_upfactor*yadjust; if (thisnote->notetype == hdsquaver) hemidemisemiquavers = TRUE; if (beam_upflag) { int32_t m; if (ynote > ybeam) beam_offset += ynote - ybeam; m = ybasic + beam_offset - ynote + yadjust + 8000; if (m < minoffset) minoffset = m; } else { int32_t m; if (ynote < ybeam) beam_offset -= ybeam - ynote; m = ynote - (ybasic + beam_offset) + yadjust + 8000; if (m < minoffset) minoffset = m; } if (note_upflag == beam_upflag) { if (beam_upflag) { if (ynote > thisybeam) diff_thisoffset += ynote - thisybeam; } else if (ynote < thisybeam) diff_thisoffset -= thisybeam - ynote; } else if (beam_splitOK) { int32_t thatybeam; /* If this is the first opposed note, calculate an initial offset, else adjust the offset. */ if (diff_thatoffset == INT32_MAX) diff_thatoffset = (thatynote - n_upfactor*28000) - ybasic; else { thatybeam = ybasic + diff_thatoffset + n_upfactor*28000; if (!beam_upflag) { if (thatynote > thatybeam) diff_thatoffset += thatynote - thatybeam; } else if (thatynote < thatybeam) diff_thatoffset -= thatybeam - thatynote; } } /* If this is a split beam, check that it's still possible */ if (beam_splitOK && diff_thatoffset != INT32_MAX && ((beam_upflag && diff_thatoffset < diff_thisoffset) || (!beam_upflag && diff_thatoffset > diff_thisoffset))) return FALSE; /* We're done if this is the last note */ if (thisnote == beam_last) break; /* Advance to next note, skipping grace notes unless we are doing a grace note beam. If we hit a rest, deal with it and then if it is the last note of the beam, exit from both loops */ for (;;) { adjustptr++; moff += thisnote->length; thisnote = misc_nextnote(thisnote); tremolo = -1; if (main_nextnoteornament != NULL) { for (b_ornamentstr *op = main_nextnoteornament; op->type == b_ornament; op = (b_ornamentstr *)(op->next)) { if (op->ornament == or_trem2 || op->ornament == or_trem3) tremolo = op->ornament; } } if (out_gracenotes) moff++; else if (thisnote->length == 0) continue; /* Not a rest - go round the outer loop again */ if (thisnote->spitch != 0) break; /* Deal with rests */ xnote = out_findXoffset(moff) - adjusts[adjustptr]; ybasic = yfirst + mac_muldiv(beam_slope, xnote-xfirst, 1000); ybeam = ybasic + beam_offset; if (beam_upflag) { int32_t yrest = (thisnote->yextra*out_stavemagn)/1000; if (thisnote->notetype > squaver) yrest += 4*out_stavemagn; if (longestnote > quaver) yrest += (longestnote - quaver)*4*out_stavemagn; if (yrest > ybeam) beam_offset += yrest - ybeam; } else { int32_t yrest = 12*out_stavemagn + (thisnote->yextra*out_stavemagn)/1000; if (thisnote->notetype > quaver) yrest -= 4*out_stavemagn; if (longestnote > quaver) yrest -= (longestnote - quaver)*4*out_stavemagn; if (yrest < ybeam) beam_offset -= ybeam - yrest; } /* At the end of the beam, break out of 2 loops. Otherwise, go round the inner loop again. */ if (thisnote == beam_last) goto ENDBEAMLOOP; } } ENDBEAMLOOP: /* Hemidemisemiquavers require some additional space */ if (hemidemisemiquavers) { beam_offset += n_upfactor*1000; diff_thisoffset += n_upfactor*1000; if (diff_thatoffset != INT32_MAX) diff_thatoffset -= n_upfactor*1000; } /* If notes on the other side of the beam have been successfully processed, use the compromise offset. The flag is still TRUE if none have been encountered, so we set it FALSE to save wasting time with additional processing later. */ if (beam_splitOK && diff_thatoffset != INT32_MAX) beam_offset = (diff_thisoffset + diff_thatoffset)/2; else beam_splitOK = FALSE; /* this is the normal case! */ return TRUE; } /************************************************* * Draw a set of beams * *************************************************/ /* The coordinates for the start of the beam are in global variables (for use when computing stem lengths). Arguments: xright x-coordinate for the right-hand end adjusts the x-adjusts for the notes longestnote the longest note in the beam lastopposite TRUE if the last note is on the opposite side rightbreak2 flag for funny stub (see comment below) Returns: nothing */ static void DrawBeams(int32_t xright, int32_t *adjusts, int longestnote, BOOL lastopposite, BOOL rightbreak2) { int lastlen = (len_minim*out_pletnum)/out_pletden; int throughlevel = longestnote - quaver + 1; int thisnotetype = longestnote + 1; int32_t sladjust = mac_muldiv(75*out_stavemagn, n_fontsize, 1000000) + n_cueadjust; int32_t sradjust = mac_muldiv(115*out_stavemagn, n_fontsize, 1000000) + n_cueadjust; uint8_t taildirflags[MAX_BEAMNOTES]; /* Add possible cue note adjustment into endpoints */ beam_firstX += n_cueadjust; xright += n_cueadjust; /* Adjust for centralized stems */ if ((beam_first->flags & nf_stemcent) != 0) { beam_firstX += (beam_upflag? -1 : +1) * mac_muldiv(STEMCENTADJUST + ((beam_first->noteheadstyle == nh_circular)? -900 : 0), out_stavemagn, 1000); } if ((beam_last->flags & nf_stemcent) != 0) { xright += (beam_upflag? -1 : +1) * mac_muldiv(STEMCENTADJUST + ((beam_first->noteheadstyle == nh_circular)? -900 : 0), out_stavemagn, 1000); } /* Adjust parameters for cue or grace notes */ if (n_fontsize != 10000) { int32_t adjust = (14*(10000 - n_fontsize))/10; if (beam_upflag) beam_firstY -= adjust; else beam_firstY += adjust; } /* If we have drawn more than one beam, and there are notes on the other side of it, we must lengthen all of their stems. This code is obeyed even for one beam, as it then correctly sets the values to zero. */ if (beam_splitOK) { int adjust = (throughlevel - 1)*3; b_notestr *p = beam_first; for (int i = beam_count; i >= 1 ; i--) { beam_stemadjusts[i] = (((p->flags & nf_stemup) != 0) == beam_upflag)? 0 : adjust; p = misc_nextnote(p); while (p != NULL && p->spitch == 0) { p = misc_nextnote(p); i--; } } } /* If this is an accellerando or ritardando beam, just draw the appropriate lines; there should not be any beamlets, etc. The number of lines is in the beam_accrit variable (2 or 3); its sign indicates an acc or a rit. */ if (beam_accrit != 0) { int count = abs(beam_accrit); int sign = beam_accrit/count; for (int i = 0; i < count; i++) { ps_beam(beam_firstX, xright, 1, i*sign); } beam_accrit = 0; return; } /* "Normal" beams - first draw beams that go right through all notes */ for (int i = 1; i <= throughlevel; i++) { ps_beam(beam_firstX, xright, i, 0); lastlen /= 2; } /* Clear the flags which remember about subtail directions and opposites */ for (int i = 0; i <= beam_count; i++) taildirflags[i] = 0; /* Now scan the notes and add internal beams or beamlets - thisnotetype contains the notetype for the beam under consideration. */ for (int level = throughlevel + 1; level <= 4; level++) { b_notestr *left = beam_first; b_notestr *postleft = left; int adjustptr = 0; int notenumber = 1; int32_t leftmoff = beam_firstmoff; int32_t rightmoff = leftmoff; BOOL donesomething = FALSE; BOOL firstbreak2 = FALSE; BOOL leftdone = FALSE; BOOL leftextended = FALSE; BOOL rightextended = FALSE; /* Determine whether there is a second-level break after the very first note - this is a special (unusual) case. */ do postleft = (b_notestr *)(postleft->next); while (postleft->type == b_chord || postleft->type == b_tie); firstbreak2 = postleft->type == b_beambreak && ((b_beambreakstr *)postleft)->value != BEAMBREAK_ALL; /* Now scan the beam */ while (left != beam_last) { b_notestr *right = misc_nextnote(left); b_notestr *postright; int rightadjustptr = adjustptr + 1; int leftnotetype = left->notetype; int rightnotetype; BOOL left_up = (left->flags & nf_stemup) != 0; BOOL right_up; rightmoff += left->length; /* Rests under beams are totally ignored, except that they must cause a beam break if longer than the note on their left; if beamendrests is on, a beam can end on a rest. We must also skip over grace notes when not doing a grace beam. */ while ((right->spitch == 0 && right != beam_last) || (right->length == 0 && !out_gracenotes)) { rightmoff += right->length; right = misc_nextnote(right); rightadjustptr++; } /* Set parameters for the right note, and find out if there is a secondary break after it. */ right_up = (right->spitch == 0)? left_up : (right->flags & nf_stemup) != 0; rightnotetype = right->notetype; postright = right; do postright = (b_notestr *)(postright->next); while (postright->type == b_chord || postright->type == b_tie); rightbreak2 = postright->type == b_beambreak && ((b_beambreakstr *)postright)->value != BEAMBREAK_ALL; /* Check for rest beyond right note and see if it requires a beam break. */ if (right != beam_last) { b_notestr *afterright = misc_nextnote(right); if (afterright->spitch == 0 && afterright->notetype < rightnotetype) rightbreak2 = TRUE; } /* Something gets drawn only if at least one of the notes is shorter or equal to the current note type. */ if (leftnotetype >= thisnotetype || rightnotetype >= thisnotetype) { BOOL skipnote = FALSE; int32_t XLadjust = 0; int32_t XRadjust = 0; int Dlevel = level; donesomething = TRUE; /* note to keep going */ /* If both notes are shorter or equal to the current notetype, draw a complete beam at this level, unless we are at the first note and there is a beam break after it, or the notes are on opposite sides of the beam and are of different lengths or if the right note is a rest at the end of a bar. The right note can be a rest only at the end of the beam, either because of a continued beam at system end, or because of beamendrests. In the latter case we want to draw complete beamlets. */ if (leftnotetype >= thisnotetype && rightnotetype >= thisnotetype && !firstbreak2 && (left_up == right_up || leftnotetype == rightnotetype) && (right->spitch != 0 || !beam_overbeam || !out_lineendflag)) { BOOL useopposite = FALSE; int ns = beam_count - notenumber; /* for addressing stemadjusts */ int32_t xr; /* If the first note already has a beamlet drawn on the opposite side, then we must use the opposite side. */ if ((taildirflags[notenumber] & 4) != 0) useopposite = TRUE; else { /* If both notes are on the opposite side of the beam, draw the the beamlet on the opposite side. */ if (left_up != beam_upflag && right_up != beam_upflag) useopposite = TRUE; /* If the notes are on different sides of the beam, use the notehead side of the left-hand note, except at the very start of a beam. */ else if (left_up != right_up) useopposite = left_up != beam_upflag || left == beam_first; } /* If using the opposite side, adjust beamlet vertical position and flag the notes as having opposite side beamlets. Adjust stem lengths where necessary. Note that the stem length adjust vector goes back- wards. The value of ns addresses the righthand note. */ if (useopposite) { Dlevel = throughlevel - level + 1; taildirflags[notenumber] |= 4; taildirflags[notenumber+1] |= 4; if (left_up == beam_upflag && !leftextended) beam_stemadjusts[ns+1] += 3; if (right_up == beam_upflag) { beam_stemadjusts[ns] += 3; rightextended = TRUE; } } /* If not using the opposite side, there may still be stem length adjustments for notes with stems the other way. */ else { if (left_up != beam_upflag && !leftextended) beam_stemadjusts[ns+1] += 3; if (right_up != beam_upflag) { beam_stemadjusts[ns] += 3; rightextended = TRUE; } } /* Make adjustments to the x positions in all cases. Note that we test for a left-hand rest by the absolute pitch, as its spitch has been fudged to be like a real note. */ if (left_up && left->abspitch != 0) XLadjust = beam_Xcorrection; if (right_up || right->spitch == 0) XRadjust = beam_Xcorrection; /* Hack for centred stems */ if ((left->flags & nf_stemcent) != 0) XLadjust += mac_muldiv(left_up? -STEMCENTADJUST : +STEMCENTADJUST, out_stavemagn, 1000); if ((right->flags & nf_stemcent) != 0) XRadjust += mac_muldiv(right_up? -STEMCENTADJUST : +STEMCENTADJUST, out_stavemagn, 1000); /* If the right note is a rest, we must be at the end of a beam, beaming over a rest, so make the right hand end the same as the end of the main beams. */ xr = (right->spitch == 0)? xright : out_findXoffset(rightmoff) + sradjust + adjusts[rightadjustptr] + XRadjust; /* Now generate the beam */ ps_beam( out_findXoffset(leftmoff) + sladjust + adjusts[adjustptr] + XLadjust, xr, Dlevel, 0); taildirflags[notenumber] |= 1; taildirflags[notenumber+1] |= 2; leftdone = TRUE; } /* Only one note is shorter than the current note type, or, exceptionally, both are, but are on different sides of the beam and are of different lengths. Don't draw anything if the relevant note is a rest. */ else { /* If the left-hand note requires a beam at this level, then give it the part beam, pointing right, unless its beam has already been drawn. Note that the rest test must be on abspitch. */ if (leftnotetype >= thisnotetype && !leftdone && left->abspitch != 0) { int32_t x = out_findXoffset(leftmoff) + adjusts[adjustptr] + sladjust + (left_up? beam_Xcorrection : 0); /* Hack for centred stems */ if ((left->flags & nf_stemcent) != 0) x += mac_muldiv(left_up? -STEMCENTADJUST : +STEMCENTADJUST, out_stavemagn, 1000); if (left_up != beam_upflag) Dlevel = throughlevel - level + 1; ps_beam(x, x + mac_muldiv(curmovt->beamflaglength, out_stavemagn, 1000), Dlevel, 0); taildirflags[notenumber] |= 1; } /* If the right hand note requires a beam at this level, give it a part beam pointing left, and then skip a note. Same comment about the flags. */ if (rightnotetype >= thisnotetype && right->spitch != 0 && (right == beam_last || rightbreak2 || ((misc_nextnote(right))->notetype < rightnotetype && (rightmoff%lastlen != 0 || (taildirflags[notenumber+1] & 3) == 2)))) { int32_t x = out_findXoffset(rightmoff) + adjusts[rightadjustptr] + sradjust + (right_up? beam_Xcorrection : 0); /* Hack for centred stems */ if ((right->flags & nf_stemcent) != 0) x += mac_muldiv(right_up? -STEMCENTADJUST : +STEMCENTADJUST, out_stavemagn, 1000); if (right_up != beam_upflag) Dlevel = throughlevel - level + 1; ps_beam(x - mac_muldiv(curmovt->beamflaglength, out_stavemagn, 1000), x, Dlevel, 0); taildirflags[notenumber+1] |= 2; skipnote = TRUE; } leftdone = FALSE; /* New left note has no leftwards beam(let) */ } /* Skip a note if flag has been set to do so or if secondary break */ if ((skipnote || rightbreak2) && right != beam_last) { left = right; leftmoff = rightmoff; right = misc_nextnote(right); rightmoff += left->length; rightadjustptr++; while ((right->spitch == 0 && right != beam_last) || (right->length == 0 && !out_gracenotes)) { rightmoff += right->length; right = misc_nextnote(right); rightadjustptr++; } leftdone = FALSE; leftextended = rightextended; rightextended = FALSE; notenumber++; } } /* Advance left to end of group and loop for next pair */ left = right; leftextended = rightextended; rightextended = FALSE; leftmoff = rightmoff; adjustptr = rightadjustptr; notenumber++; /* If we have had a break after the first note of the beam, set up as though just done a pair, in case it's a 2-note beam (weird notation!), and then clear the flag. */ if (firstbreak2) { rightbreak2 = TRUE; firstbreak2 = FALSE; } } /* If there was a beam break immediately before the last note of the beamed group, then we need to draw a short beam pointing to the left on the last note. This is an unusual special case; normally beam breaks occur in the middle of groups. It can also occur at the start of a stave on a continued beam that has only one note in the new bar. Check for a rest, as this can happen when a beam over a barline occurs at the end of a system and the last thing in the first bar is a rest. Can also happen when beamendrests is set. */ if (rightbreak2 && left->notetype >= thisnotetype && left->spitch != 0) { int32_t x = out_findXoffset(leftmoff) + adjusts[adjustptr] + sradjust + ((beam_upflag && !lastopposite)? beam_Xcorrection: 0); ps_beam(x - mac_muldiv(curmovt->beamflaglength, out_stavemagn, 1000), x, level, 0); } /* Move on to next note type and loop, unless seen no shorter notes */ thisnotetype++; lastlen /= 2; if (!donesomething) break; } } /************************************************* * Set up Beaming * *************************************************/ /* This function is called at the start of a potential sequence of beamed notes. It must test whether beaming is possible, and if so, output the beams and set the beam line parameters for adjusting the tails of the actual notes. Various other parameters are also set up. This function is also called during paginating, from page_setcont(), when it discovers the flag for beams crossing bar lines at the end of a system. The purpose of this is to determine the slope for the beam so that it can be set up in the bar_cont->overbeam structure for the start of the next system. Various global variables are fudged up when this happens, and the "nodraw" flag is set true. Arguments: p point to the start of the beam moff the musical offset nodraw see comment above (if TRUE, don't draw) restatstart TRUE if there is a rest at the start of the beam Returns: TRUE if beaming is set up; FALSE otherwise. */ BOOL out_setupbeam(b_notestr *p, int32_t moff, BOOL nodraw, BOOL restatstart) { b_notestr *pp; int adjustptr = 1; int longestnote = p->notetype; /* A secondary beam break forces this */ int overbarcount = 0; int pendingrests = 0; int trailingrests = 0; int32_t adjusts[MAX_BEAMNOTES]; int32_t currentmoff = moff; int32_t lastadjust = 0; int32_t lastmoff = 0; int32_t lastmoffinbar = 0; int32_t move_adjust = 0; int32_t xright, yright; b_notestr *lastp = p; b_notestr *lastinbar = NULL; BOOL lastopposite; BOOL rightbreak2 = FALSE; adjusts[0] = out_Xadjustment; /* From preceding [move] */ beam_count = 1; beam_first = beam_last = p; beam_firstmoff = beam_lastmoff = moff; beam_overbeam = FALSE; beam_upflag = n_upflag; TRACE("out_setupbeam() start\n"); /* Scan to find end of beam. We have to use gotos to jump out of the loop from within the switch. */ for (pp = (b_notestr *)(p->next); pp->type != b_barline; pp = (b_notestr *)(pp->next)) { BOOL included; b_beambreakstr *bb; switch (pp->type) { case b_barline: goto ENDBEAM; case b_overbeam: if (beam_overbeam) goto ENDBEAM; /* Can only beam over one barline */ /* The bar line has been flagged for continuation of a beam over it. We arrange to keep on scanning from the start of the next bar, if there is one. */ pp = (b_notestr *)(((b_overbeamstr *)pp)->nextbar); if (pp == NULL) goto ENDBEAM; beam_overbeam = TRUE; overbarcount = move_adjust = 0; lastinbar = lastp; /* May point to a rest */ lastmoffinbar = lastmoff; break; case b_note: included = TRUE; if (out_gracenotes) { if (pp->length != 0) goto ENDBEAM; } else { if (pp->length == 0) included = FALSE; } if (included) { int notetype = pp->notetype; if (notetype < quaver) goto ENDBEAM; if (lastp->length != 0) currentmoff += lastp->length; else currentmoff++; adjusts[adjustptr] = lastadjust = move_adjust + out_gracefudge; if (pp->spitch != 0 || MFLAG(mf_beamendrests)) { beam_lastmoff = currentmoff; beam_last = pp; if (notetype < longestnote) longestnote = notetype; /* for full beams */ if (pp->spitch == 0) trailingrests++; else trailingrests = 0; pendingrests = 0; } else pendingrests++; beam_count++; overbarcount++; lastp = pp; lastmoff = currentmoff; } adjustptr++; move_adjust = 0; break; /* For a secondary beam break, adjust longestnote to correspond to the length of note implied by the number of beams that are left. */ case b_beambreak: bb = (b_beambreakstr *)pp; if (bb->value == BEAMBREAK_ALL) goto ENDBEAM; /* Break all */ if (quaver - 1 + bb->value < longestnote) longestnote = quaver - 1 + bb->value; break; case b_reset: goto ENDBEAM; /* Set up move amount in case the next thing is a note. We need to keep track of movements to get the beams moved too. */ case b_move: move_adjust = ((b_movestr *)pp)->x; break; /* Miscellaneous things that are permitted in the middle of beams. If it's a printing thing, cancel any pending move, since that will apply to the thing, not the following note. */ case b_dotbar: case b_clef: case b_lrepeat: case b_rrepeat: case b_comma: case b_caesura: case b_tick: move_adjust = 0; break; } } /* Label to jump to to get out of the switch in the loop. */ ENDBEAM: /* Correct the count for rests that might have been beamed over, but weren't. */ beam_count -= pendingrests; /* There must be at least two notes, except in the case of a continued beam at the start of a system. In this case, a forced slope will be set. */ if (beam_last == beam_first && !beam_continued) { TRACE("out_setupbeam() FALSE\n"); return FALSE; } /* Catch the case where beaming over the barline wasn't. If it's the paginating case, just return. */ if (beam_overbeam && overbarcount <= 0) { if (nodraw) { TRACE("out_setupbeam() FALSE\n"); return FALSE; } beam_overbeam = FALSE; } /* Note if the last note's stem goes the opposite way. A rest must be treated as an upstem so that the beam gets drawn past it. */ if (beam_last->spitch == 0) lastopposite = !beam_upflag; else lastopposite = (((beam_last->flags) & nf_stemup) != 0) != beam_upflag; /* Compute the xcorrection for any notes with stems up, and for notes on the opposite side of the beam. */ beam_Xcorrection = mac_muldiv(51*out_stavemagn, n_fontsize, 100000); /* Set up the coordinates of the left-hand end of the beam, relative to the stave base and the start of the bar (with the y coordinate going upwards). The x correction of 0.75 point is required because the downward stems start that far from the note's origin. */ beam_firstX = out_findXoffset(beam_firstmoff) + adjusts[0] + mac_muldiv(n_fontsize, 75*out_stavemagn, 1000000); beam_firstpitch = p->spitch; if (beam_upflag && !restatstart) beam_firstX += beam_Xcorrection; mac_couplepitch(beam_firstpitch, p->flags); beam_firstY = (beam_firstpitch - P_1L)*out_pitchmagn + n_upfactor*14*out_stavemagn; /* This "loop", which computes a slope and an offset, is obeyed twice if on the first pass we fail to arrange for notes on the opposite side of the beam, and therefore have to do it all again. Exit should always be via "break", but code it with a counter, just in case. */ for (int i = 0; i < 2; i++) { int j, pitchright; BOOL offsetOK = FALSE; /* Set up coordinates of end notes and default parameters. The 0.115 point correction is the 0.75 pt offset to the left of a downward stem, plus the 0.4pt thickness of stems. */ xright = out_findXoffset(beam_lastmoff) + lastadjust + mac_muldiv(n_fontsize, 115*out_stavemagn, 1000000); if (beam_upflag != lastopposite) xright += beam_Xcorrection; pitchright = beam_last->spitch; mac_couplepitch(pitchright, beam_last->flags); yright = (pitchright - P_1L)*out_pitchmagn + (((beam_last->flags & nf_stemup) != 0)? 14 : -14)*out_stavemagn; /* Now we must select a slope for the beam. First check to see if something has been forced. */ if (beam_forceslope != INT32_MAX) beam_slope = beam_forceslope; /* If there is only one real note in the beam (can happen with leading and/or trailing rests) the slope is horizontal. */ else if (beam_count - trailingrests < 2) beam_slope = 0; /* If there are only two notes in the beam, we are just going to join the ends of their stems. If the stems are in the same direction, calculate a slope without taking into account any stem extensions. Then an extension on either note moves the beam outwards, without changing its slope. For stems in opposite directions, however, we must take note of the stem extensions, and further fudge the right-hand y coordinate because the beam offset will be taken from the left-hand note's stem extension. For non-opposite notes whose stems stick out above or below the stave, we shorten the stems slightly if they are not already so shortened. */ else if (beam_count == 2) { int yyright = yright; int yyleft = beam_firstY; if (lastopposite) { int yleftadjust = beam_first->yextra; int yrightadjust = beam_last->yextra; yyleft += n_upfactor*yleftadjust; yyright -= n_upfactor*yrightadjust; yright -= n_upfactor*(yleftadjust + yrightadjust); } beam_slope = mac_muldiv(1000, yyright - yyleft, xright - beam_firstX); /* Apply a maximum slope */ if (abs(beam_slope) > curmovt->maxbeamslope[0]) beam_slope = (beam_slope/abs(beam_slope))*curmovt->maxbeamslope[0]; } /* More than two notes in the beam. Select a slope using the heuristics in the findslope() routine with some additional constraints. */ else { int32_t abs_slope; int32_t slope = findslope(); int32_t yslope = beam_firstY + mac_muldiv(slope, xright-beam_firstX, 1000); /* If the slope supplied by the heuristic is zero, or if it is less than the slope of the line joining the end notes, use it. Otherwise join the end notes. (Not strictly true for split-sided beams.) */ if (slope == 0 || (slope > 0 && yslope < yright) || (slope < 0 && yslope > yright)) yright = yslope; beam_slope = mac_muldiv(1000, yright - beam_firstY, xright - beam_firstX); /* When the final note is on the other side of the beam, it is helpful to keep the slope down to a smaller maximum to enable more cases to be fitted in without retries. */ abs_slope = abs(beam_slope); if (lastopposite && abs_slope > 200) beam_slope = mac_muldiv(beam_slope, 200, abs_slope); } /* Inner loop for retrying with a smaller maximum slope when we fail to find an offset for a beam with notes on either side of it. For ordinary beams, the loop will be broken on the first pass. */ for (j = 0; j < 5; j++) { //int ornament = (n_ornament == NULL)? -1 : n_ornament->ornament; if ((offsetOK = ComputeBeamOffset(lastopposite, adjusts, longestnote)) == TRUE) break; beam_slope = n_upfactor*retryslopes[j]; } /* Break out of the outer loop if we have successfully found an offset. Otherwise, we have to put all notes on the same side of the beam, and give an error message. Then try again -- success is now assured! */ if (offsetOK) break; else { b_notestr *bfp = beam_first; usint flag = beam_upflag? nf_stemup : 0; for (;;) { if ((bfp->flags & nf_stemup) != flag) { b_notestr *xp = bfp; /* Before we reset the flag for a chord, we must reset the offsets of any accidentals, unless there is an explicit setting, because when the stem of a chord is set, the accidental positions are calculated, assuming that what is there already is the basic width of the accidental. As this is an error situation, we don't have to get it perfect. */ do { if (xp->acc != 0) { xp->accleft += curmovt->accspacing[xp->acc] - curmovt->accadjusts[xp->notetype]; if ((xp->flags & (nf_accrbra+nf_accsbra)) != 0) xp->accleft += (xp->acc == ac_df)? 6800 : 5300; } xp->flags &= ~nf_stemup; xp = (b_notestr *)(xp->next); } while (xp->type == b_chord); mac_setstemflag(bfp, flag); } if (bfp == beam_last) break; bfp = misc_nextnote(bfp); } error(ERR143); lastopposite = FALSE; } } /* End of loop to retry on failure */ /* Reset the forced slope */ beam_forceslope = INT32_MAX; /* Incorporate the computed and manual adjustment offset into the first y position. */ if (beam_upflag) { if (beam_offsetadjust < -minoffset) beam_offsetadjust = -minoffset; } else if (beam_offsetadjust > minoffset) beam_offsetadjust = minoffset; beam_firstY += beam_offset + beam_offsetadjust; beam_offsetadjust = 0; /* If beam_continued is set, it means we are drawing a continued beam at the start of a new system. We need to extend it a little bit to the left. Do this by adjusting firstX and firstY. Also set the longestnote value for the whole beam, to control how many beams are extended left, and set rightbreak2 so that if there is only one note, and it is shorter than the main beams, a stub to the left is drawn. */ if (beam_continued) { int32_t beamadjust = 4 * out_stavemagn; if (beam_upflag) beamadjust += beam_Xcorrection; beam_firstX -= beamadjust; beam_firstY -= (beam_slope * beamadjust) / 1000; longestnote = (bar_cont->overbeam)->longestnote; if (beam_count == 1) rightbreak2 = TRUE; } /* Now we can draw the beams, adjusting for grace or cue notes. We don't draw in the case of being called while paginating, while if we are at the end of a line and drawing a continued beam, we must chop it. */ if (!nodraw) { if (beam_overbeam && out_lineendflag) { beam_lastmoff = lastmoffinbar; beam_last = lastinbar; xright = out_barlinex - 300 - out_barx; } DrawBeams(xright, adjusts, longestnote, lastopposite, rightbreak2); } /* If this beam extends over the bar line, set up the data for the start of the next bar, and cancel the special flag, because it affects the behaviour of various subroutines. */ if (beam_overbeam) { obeamstr *b; if (bar_cont->overbeam == NULL) bar_cont->overbeam = mem_get(sizeof(obeamstr)); b = bar_cont->overbeam; b->firstX = beam_firstX - out_poslast->xoff - out_sysblock->barlinewidth; b->firstY = beam_firstY; b->slope = beam_slope; b->count = overbarcount; b->longestnote = longestnote; b->Xcorrection = beam_Xcorrection; b->splitOK = beam_splitOK; b->upflag = beam_upflag; beam_overbeam = FALSE; } /* A yield of TRUE indicates that beaming is now in force */ TRACE("out_setupbeam() TRUE\n"); return TRUE; } /* End of setbeam.c */ pmw-5.22/src/paginate.c0000644000222100022210000045312614541067540013077 0ustar ph10ph10/************************************************* * PMW pagination functions * *************************************************/ /* Copyright Philip Hazel 2021 */ /* This file created: April 2021 */ /* This file last modified: July 2023 */ #include "pmw.h" /* State values used to control what happens in the main loop. */ enum { page_state_newmovt, page_state_newsystem, page_state_insystem, page_state_donesystem, page_state_donemovt }; /* Initializing values for page structures */ static pagestr init_curpage = { NULL, /* next */ NULL, /* sysblocks */ NULL, /* footing */ 0, /* topspace */ 0, /* spaceleft */ 0, /* overrun */ 0 /* number */ }; /* Initializing values for cont structures at movement start. */ static contstr init_cont = { NULL, /* slurs */ NULL, /* hairpin */ NULL, /* nbar */ NULL, /* overbeam */ NULL, /* tie */ NULL, /* ulay */ 0, /* tiex */ 0, /* time - reset from curmovt */ cf_default, /* flags */ clef_treble, /* clef */ 0 /* key - reset from curmovt */ }; /* Tables of accidental heights/depths */ /* - % #- # ## $- $ $$ */ static int32_t accdowntab[] = { 0, 4000, 4000, 4000, 0, 0, 0, 0 }; static int32_t accuptab[] = { 0, 4000, 4000, 4000, 0, 4000, 4000, 4000 }; /* Table for adjusting overlay and underlay levels, depending on stem direction and whether a dynamic is on that side or not. */ static int32_t accboundtable[] = { 4000, 0, 0, 4000, 0, -4000, -4000, 0 }; /* Widths of long rest bars, in whole points. First value is for a long rest sign; the next are for the coded rest signs (1 is not relevant, then 2-8). */ static int32_t longrest_barwidths[] = { 50, 0, 30, 35, 30, 35, 35, 45, 40 }; /* Flags used while creating the position table, for remembering what precedes a note */ #define xf_caesura 0x0001u #define xf_comma 0x0002u #define xf_tick 0x0004u #define xf_dotbar 0x0008u #define xf_rrepeat 0x0010u #define xf_clef 0x0020u #define xf_lrepeat 0x0040u #define xf_keytime 0x0080u #define xf_grace 0x0100 /************************************************* * Local static variables * *************************************************/ /* Static variables are used for communication between the main paginating function and various subroutines in this module. Three versions of pagedatastr are kept: prevdata points to the version that was current after accepting the previous bar; accepteddata points to the current structure after accepting a bar; nextdata points to the values that have changed as a result of measuring the bar that is being checked. We use pointers so that they can easily be swapped round. */ static pagedatastr data1; static pagedatastr data2; static pagedatastr data3; static pagedatastr *accepteddata = &data1; static pagedatastr *nextdata = &data2; static pagedatastr *prevdata = &data3; /* The pl_barnumber variable keeps track of where we are in the pagination. However, we often have to process extra bars when there are multiple bars rest, so the processing is done using the global curbarnumber, which shows up in error messages. At other times, curbarnumber == pl_barnumber. */ static int32_t pl_accexistedavail; static uint64_t pl_allstavebits; static int32_t pl_barlinewidth; static int32_t pl_barnumber; static BOOL pl_barstartrepeat; static uint32_t pl_botmargin; static barposstr *pl_bp; static usint pl_countsystems; static int32_t pl_footnotespacing; static uint8_t pl_justify; static uint8_t pl_justifyLR; static BOOL pl_lastenddouble; static BOOL pl_lastendwide; static headstr *pl_lastnewfootnote; static sysblock *pl_lastsystem; static uint32_t pl_manyrest; static int32_t pl_newfootnotedepth; static headstr *pl_newfootnotes; static BOOL pl_newpagewanted; static int32_t pl_olaysize; static int32_t *pl_olevel; static int32_t *pl_olhere; static headstr *pl_pagefooting; static int32_t pl_pagefootnotedepth; static headstr *pl_pagefootnotes; static workposstr *pl_posptr; static workposstr *pl_postable; static uint32_t pl_sgnext; static uint64_t pl_showtimes; static int32_t *pl_ssehere; static int32_t *pl_ssenext; static int32_t *pl_ssnext; static BOOL pl_startlinebar; static uint64_t pl_stavemap; static int32_t pl_stretchd; static int32_t pl_stretchn; static sysblock *pl_sysblock; static uint8_t pl_sysclef[MAX_STAVE + 1]; static sysblock **pl_sysprevptr; static int32_t pl_sys_botmargin; static int32_t pl_sys_justify; static int32_t pl_sys_topmargin; static int32_t pl_topmargin; static int32_t pl_ulaysize; static int32_t *pl_ulevel; static int32_t *pl_ulhere; static BOOL pl_warnkey; static BOOL pl_warntime; static int32_t pl_xxwidth; /************************************************* * Update times/keys for start of line * *************************************************/ /* This function is called at the start of a system, to see if the first bar contains clef, key, or time items that should be transferred into the basic setting for the bar. Arguments: none Returns: nothing */ static void setsignatures(void) { int stave; for (stave = 0; stave <= curmovt->laststave; stave++) { stavestr *s; bstr *p; BOOL hadclef, hadkey, hadtime; if ((curmovt->select_staves & (1Lu << stave)) == 0) continue; /* Unselected */ s = curmovt->stavetable[stave]; hadclef = hadkey = hadtime = FALSE; /* Scan bar items until the first note, left repeat, or end */ for (p = (bstr *)(s->barindex[pl_barnumber]); p != NULL; p = p->next) { switch (p->type) { case b_clef: if (!hadclef) { b_clefstr *c = (b_clefstr *)p; (pl_sysblock->cont[stave]).clef = c->clef; c->suppress = hadclef = TRUE; } break; case b_key: if (!hadkey || pl_sysblock->cont[stave].key == key_C || pl_sysblock->cont[stave].key == key_Am) { b_keystr *k = (b_keystr *)p; if ((k->key & key_reset) == 0 || !k->warn) { (pl_sysblock->cont[stave]).key = k->key; hadkey = TRUE; } k->suppress = TRUE; } break; case b_time: if (!hadtime) { b_timestr *t = (b_timestr *)p; (pl_sysblock->cont[stave]).time = t->time; t->suppress = hadtime = TRUE; if (!t->assume) mac_setbit(pl_showtimes, stave); } break; case b_barline: case b_note: case b_lrepeat: goto NEXTSTAVE; default: break; } } NEXTSTAVE: continue; } } /************************************************* * Calculate typographic width * *************************************************/ /* This function calculates the magnified typographic width for a note of given length, with given flags. For a chord, the flags should be the 'or' of those for all the notes. Arguments: used the basic minimum width for the note (unmagnified) length the note's musical length (identifies the note) flags the note's flags Returns: the valued of "used" plus the calculated width */ static int32_t pos_typewidth(int32_t used, int32_t length, uint32_t flags) { /* Invisible notes use nothing, breves and semibreves need some extra, as do freestanding upquavers and shorter, to allow for the tail on the right. */ if ((flags & nf_hidden) != 0) return 0; if (length >= len_breve) used += 3300; else if (length >= len_semibreve) used += 800; else if ((flags & nf_fuq) != 0) used += 5000; /* Extra width for chord with inverted note and stem up, and even more if dotted. */ if ((flags & (nf_stemup|nf_invert)) == (nf_stemup|nf_invert) && used < 12400) { used = 12400; if ((flags & (nf_dot | nf_plus)) != 0) used += 2000; } /* Extra width for dots or plus */ if ((flags & nf_plus) != 0) used += 8000; else if ((flags & nf_dot) != 0) { used += 3000; if ((flags & nf_dot2) != 0) used += 3500; } /* Allow for magnification */ return mac_muldiv(used, curmovt->stavesizes[curstave], 1000); } /************************************************* * Calculate horizontal width * *************************************************/ /* This function calculates the magnified basic horizontal width required for a note of a given musical length. Argument: the note's musical length Returns: the magnified width */ static int32_t pos_notewidth(int32_t length) { int32_t thislength = len_breve; int32_t width; usint type = breve; while (length < thislength) { type++; thislength /= 2; } /* Notes shorter than the shortest note type can be created only by triplets or the like. These are rare; ensure something non-crashy happens. NOTE: the tuplets test contains some of these. If ever shorter notes are added, causing the width here to become non-zero, the spacing in that test will change. */ if (type >= NOTETYPE_COUNT) { width = 0; type = NOTETYPE_COUNT; } else width = nextdata->note_spacing[type]; /* If we don't have an exact note length, first check for a single or double dot; otherwise it's a note in an irregular group. */ if (length != thislength) { int32_t extra = length - thislength; if (extra == thislength/2) { width = mac_muldiv(width, curmovt->dotspacefactor, 1000); } else if (extra == (3*thislength)/4) width = mac_muldiv(width, 3*curmovt->dotspacefactor - 1000, 2000); /* Breve tuplets are rarer than hen's teeth, so fudge the "next note" spacing to make things work. We then set the width as a pro rata amount between the relevant two kinds of note. */ else { int32_t nextup = (type == breve)? (3*width)/2 : nextdata->note_spacing[type-1]; width += mac_muldiv(nextup - width, extra, thislength); } } /* When we are re-evaluating bar widths because a system is being squashed, it works best if the notewidths themselves are squashed at this point. The layout of the underlay can then be better computed. */ if (pl_stretchn < pl_stretchd) width = mac_muldiv(width, pl_stretchn, pl_stretchd); /* Now apply the magnification factor and return */ return mac_muldiv(width, curmovt->stavesizes[curstave], 1000); } /************************************************* * Make space for non-note or grace note * *************************************************/ /* The musical offset supplied is always negative. We have to check whether a position for the auxiliary item already exists, and if so, to adjust its place if necessary. The yield is the new value for this position. The "here" flag determines whether the item can be put to the left of the current position if there is space. Arguments: previous pointer to postable entry for the previous position, or NULL this pointer to current postable entry auxoffset offset for the non-note item (always negative) Rwidth unmagnified width for the item used space used by previous note, if any here see above Returns: pointer to the postable entry after "this" */ static workposstr * pos_insertXpos(workposstr *previous, workposstr *this, int auxoffset, int32_t Rwidth, int used, BOOL here) { workposstr *aux = NULL; workposstr *insertpoint, *t; Rwidth = mac_muldiv(Rwidth, curmovt->stavesizes[curstave], 1000); /* See if any auxiliaries already exist; find the leftmost. */ for (t = this - 1; t >= pl_postable && t->auxid != 0; t--) aux = t; /* If there are no auxiliaries, or the previously existing auxiliaries are to the right of this one, the space available is the sum from the previous position (if any) to this position. We can insert a new position with an appropriate offset in both cases. */ if (aux == NULL || auxoffset < aux->auxid) { insertpoint = (aux == NULL)? this : aux; memmove(insertpoint + 1, insertpoint, (pl_posptr + 1 - insertpoint) * sizeof(workposstr)); /* Move up to make space */ pl_posptr++; /* Increase the end */ this++; /* For yielding */ aux = insertpoint++; aux->moff = this->moff + auxoffset; aux->auxid = auxoffset; /* identifies the aux */ aux->auxstaves = 1u << curstave; /* identifies which stave(s) */ insertpoint->space = 0; /* leave space on the new insert */ if (here) aux->xoff = insertpoint->xoff; else { int32_t avail = aux->xoff; if (previous != NULL) { t = previous + 1; while (t < aux) avail += (t++)->xoff; } avail -= Rwidth + used; if (avail < 0) insertpoint->xoff -= avail; aux->xoff = insertpoint->xoff - Rwidth; } insertpoint->xoff = Rwidth; } /* Either there are existing auxiliaries to the left of this one, or this one already exists. */ else { for (insertpoint = aux; insertpoint != this; insertpoint++) if (insertpoint->auxid >= auxoffset) break; /* If this auxiliary already exists, test that there is enough space between it and the previous note. This works because we process the auxiliaries for one note from right to left. In the case of accidentals, we must adjust the space by the difference between this accidental's requirements and whatever is already there. There is one complicated case -- see below. */ if (insertpoint->auxid == auxoffset) { int32_t avail = 0; workposstr *next = insertpoint + 1; t = (previous == NULL)? pl_postable : previous + 1; while (t <= insertpoint) avail += (t++)->xoff; avail -= used; /* For accidentals, all we need to do is check that there is enough space on the left, since accidental printing doesn't actually use a calculated position - chords need several positions, for a start. However, we do need to remember how much space was available in case some of it gets taken up by an auxiliary to the left (which is handled subsequently). */ if (auxoffset == posx_acc) { avail += next->xoff - Rwidth; pl_accexistedavail = avail; } /* For non-accidentals, check that there is enough space to the right, and increase if necessary. If the next thing is an accidental whose original position was set in a previous stave, we must adjust in case it intruded into the space where this item is going. */ else { if (Rwidth > next->xoff) next->xoff = Rwidth; if (next->moff == posx_acc && pl_accexistedavail > 0 && Rwidth > pl_accexistedavail) next->xoff += Rwidth - pl_accexistedavail; } /* If there is insufficient space, move *all* the auxiliaries to the right. */ if (avail < 0) aux->xoff -= avail; /* Remember which staves */ mac_setbit(insertpoint->auxstaves, curstave); } /* If this auxiliary does not exist, we must insert it. See if there is space on *all* staves between the first auxiliary and the previous note position. If there is, we can move those auxiliaries to the left of this one to the left. */ else { workposstr *new = insertpoint; memmove(insertpoint + 1, insertpoint, (pl_posptr + 1 - insertpoint) * sizeof(workposstr)); /* Move up to make space */ pl_posptr++; /* List is one longer now */ this++; /* For yielding */ insertpoint++; new->space = 0; new->moff = this->moff + auxoffset; new->auxid = auxoffset; /* identifies the aux */ new->auxstaves = 1u << curstave; /* identifies which stave(s) */ /* Distance from previous aux is its standard distance */ new->xoff = insertpoint->xoff; insertpoint->xoff = Rwidth; if (!here) { int32_t avail = aux->xoff - Rwidth - used; if (avail > -Rwidth) aux->xoff -= (avail < 0)? Rwidth + avail : Rwidth; } } } return this; } /************************************************* * Insert non-note items * *************************************************/ /* This function is called to insert entries into the postable for non-note things such as accidentals, grace notes, and other markings. Arguments: moff music offset for the note xflags flags for various marks (comma, caesura, etc) accleft width required for accidental keyvector timevector gracevector previous pointer to the previous position item prevlength prevflags Returns: pointer to final inserted item */ static workposstr * pos_insertextras(int32_t moff, uint32_t xflags, int32_t accleft, int *keyvector, int *timevector, int *gracevector, workposstr *previous, int32_t prevlength, uint32_t prevflags) { workposstr *this; int rrepeatextra = 0; int used; int i; /* Find the postable entry for this note */ this = (previous == NULL)? pl_postable : previous; while (this->moff < moff) this++; /* Now process the auxiliary items, in order from right to left. This makes it possible to do the best thing when more than one exists on a single note. They may come out of order when on different notes, and in this case the spacing may not be as perfect. But the likelihood is pretty rare. They are given conventional "musical offsets" that are just prior to that of the note they precede. First handle accidentals. Because these are much more common than anything else, it's worth a special test to avoid the rest of the function if there's nothing else to do. Note that "this" might already be pointing at an accidental entry -- so that extra space isn't inserted after it. Preserve this state of affairs. We compute "used" here specially, with a different default to the rest. */ pl_accexistedavail = -1; /* Unset existing accidental available space */ if (accleft > 0) { used = (prevlength < 0)? 0 : pos_typewidth(7250, prevlength, prevflags); this = pos_insertXpos(previous, this, posx_acc, accleft, used, FALSE); if (xflags == 0) return this; } /* Insert positions for grace notes. This is messy. We give the widths as including the accidental widths so as to space them out correctly, but then we have to go back afterwards and correct the positions. We also have to take special action if there are already grace notes at this position, in case the accidentals are different (rare). "Used" also gets a special value for grace notes. */ if (gracevector[0] > 0) { int32_t lastspacing = curmovt->gracespacing[0]; int first = 0; workposstr *pp = this; workposstr *p = this - 1; if (this >= pl_posptr) lastspacing += ((xflags & xf_rrepeat) == 0)? 4000 : 8000; used = (prevlength < 0)? 0 : pos_typewidth(7250, prevlength, prevflags); /* As we process them from right to left, any new ones will be inserted first. When we get to pre-existing ones, save where to stop the moving scan, and instead just check existing widths. */ for (i = gracevector[0]; i >= 1; i--) { int id = posx_gracefirst + i - 1; if (pp == pl_postable || p->auxid != id) { this = pos_insertXpos(previous, this, id, ((i == gracevector[0])? lastspacing : curmovt->gracespacing[1]) + gracevector[i], used, FALSE); } else { int32_t spacing = (p->xoff == 0)? 0 : curmovt->gracespacing[1]; /* When we hit what was the last (rightmost) gracenote, but is no longer, adjust the appropriate spacing, just in case the gracespacing values are different. This is the first of the pre-existing grace notes. Remember which it was. */ if (first == 0) { int32_t adjust = curmovt->gracespacing[1] - curmovt->gracespacing[0]; (p+1)->xoff += adjust; first = i; } if (p->xoff < spacing + gracevector[i]) p->xoff = spacing + gracevector[i]; p--; pp--; } } /* Go back from right to left and adjust positions, starting at the first additional grace note, and stopping when we get to any that were there before. */ p = this - 1; while (p->auxid == posx_acc) p--; pp = p + 1; for (i = gracevector[0]; i > first; i--) { p->xoff += gracevector[i]; pp->xoff -= gracevector[i]; pp = p--; } } /* Compute the space used by the previous note, if any, for the rest of the items. */ used = (prevlength < 0)? 0 : pos_typewidth(11000, prevlength, prevflags); /* Time Signature(s) */ for (i = timevector[0]; i >= 1; i--) this = pos_insertXpos(previous, this, posx_timefirst + i - 1, timevector[i], used, FALSE); /* Key Signature(s) */ for (i = keyvector[0]; i >= 1; i--) this = pos_insertXpos(previous, this, posx_keyfirst + i - 1, keyvector[i], used, FALSE); /* Left repeat. Check whether it is going to print on a bar line, and if not, insert a position for it, unless it is going to coincide with a right repeat. If it is on a barline, set a flag so that space can be inserted. (Can't insert here, because it will then do it several times for multiple staves.) */ if ((xflags & xf_lrepeat) != 0) { if (previous == NULL && !pl_startlinebar && pl_bp->posxRL == -posx_RLleft) pl_barstartrepeat = TRUE; else if (previous != NULL && (xflags & xf_rrepeat) != 0) rrepeatextra = 6500; else this = pos_insertXpos(previous, this, -pl_bp->posxRL, 12500, used, TRUE); } if ((xflags & xf_clef) != 0) this = pos_insertXpos(previous, this, posx_clef, (14 * (curmovt->fontsizes)->fontsize_midclefs.size)/10, used, FALSE); if ((xflags & xf_rrepeat) != 0) { int32_t x = 7500; if (this == pl_posptr) pl_lastendwide = TRUE; else x += 5100; this = pos_insertXpos(previous, this, posx_RR, x+rrepeatextra, used, TRUE); } if ((xflags & xf_dotbar) != 0) this = pos_insertXpos(previous, this, posx_dotbar, 6000, used, FALSE); if ((xflags & xf_tick) != 0) this = pos_insertXpos(previous, this, posx_tick, 6000, used, FALSE); if ((xflags & xf_comma) != 0) this = pos_insertXpos(previous, this, posx_comma, 6000, used, FALSE); if ((xflags & xf_caesura) != 0) this = pos_insertXpos(previous, this, posx_caesura, 13000, used, FALSE); return this; /* return for next previous */ } /************************************************* * Compute width of stave names * *************************************************/ /* This function returns the width needed for names to be printed at the start of staves on a page. Two stave bitmaps are supplied: the name is counted only if the stave is selected in both bitmaps. Typically, the first map gives the staves that are active in a system, and the second is those that are currently not suspended. Arguments: pagedata the page data block map the first bitmap map2 the second bitmap Returns: the maximum width needed */ static int32_t startwidth(pagedatastr *pagedata, uint64_t map, uint64_t map2) { int i; int32_t x; fontinststr *fdata; if (pagedata->stavenames == NULL) return 0; map &= map2; x = 0; fdata = (curmovt->fontsizes)->fontsize_text; /* For each existing stave */ for (i = 1; i <= curmovt->laststave; i++) { snamestr *s; if ((map & (1Lu << i)) == 0) continue; /* Not currently printing */ /* For each stavename string on this stave */ for (s = pagedata->stavenames[i]; s != NULL; s = s->extra) { int32_t w = 0; if ((s->flags & snf_vertical) != 0) w = 6000; else if (s->text != NULL) { uint32_t *t = s->text; /* Multiple substrings are separated by unescaped vertical bars. */ for (;;) { int32_t ww; uint32_t tsave; uint32_t *tt = t; while (*t != 0 && PCHAR(*t) != ss_verticalbar) t++; tsave = *t; *t = 0; ww = string_width(tt, &(fdata[s->size]), NULL); if (ww > w) w = ww; if (tsave == 0) break; *t++ = tsave; } if (w > 0) w += 6000; /* Final space if non-empty */ } if (w > x) x = w; } } /* If there are stave names, add extra if the system is braced or has a thin bracket, to leave space between them and the names. */ if (x != 0) { if (curmovt->bracelist != NULL) x += 6500; else if (curmovt->thinbracketlist != NULL) x += 4000; } return x; } /************************************************* * Deal with a page's heading * *************************************************/ /* This function sets up a headblock and adds it to the chain of headblocks and system blocks for the page. It also subtracts the space needed for the heading lines from the space left on the page. Remember to include an additional stave depth + 1pt after any headings at the top of a page. This function is not called if there are no headings. Argument: a heading structure Returns: nothing */ static void do_pageheading(headstr *page_heading) { int32_t used = 0; headblock *h = mem_get(sizeof(headblock)); h->is_sysblock = FALSE; h->pageheading = (page_heading != curmovt->heading); /* Not a movt heading */ h->next = NULL; h->movt = curmovt; h->headings = page_heading; *pl_sysprevptr = (sysblock *)h; pl_sysprevptr = (sysblock **)(&(h->next)); while (page_heading != NULL) { used += page_heading->space; page_heading = page_heading->next; } if (curpage->spaceleft == main_pagelength) curpage->spaceleft -= 17000; curpage->spaceleft -= used; } /************************************************* * Justify a heading or footing or footnote * *************************************************/ /* This function scans the text and splits up the left hand part into two or more lines. For all but the last line the spacestretch field is set to cause the text to be printed with right justification. (Actually the last line is justified too, if it is near enough to the end.) Argument: a heading structure Returns: nothing */ static void justifyheading(headstr *h) { for (; h != NULL; h = h->next) { uint32_t *lastsplit; uint32_t *p; uint32_t spacecount; uint32_t lastspacecount; int32_t width; int32_t lastwidth; /* Ignore drawing */ if (h->drawing != NULL) continue; /* This is a text heading */ lastsplit = NULL; lastwidth = 0; p = h->string[0]; /* Left hand part */ spacecount = lastspacecount = 0; /* Scan and split. We must use string_width() for each word rather than add individual character widths so that kerning happens. */ for (;;) { headstr *new; uint32_t c = *p; if (c != 0 && PCHAR(c) != ' ') { p++; continue; } *p = 0; width = string_width(h->string[0], &(h->fdata), NULL); *p = c; /* Fragment fits on the line */ if (width <= curmovt->linelength) { if (c == 0) { if (curmovt->linelength - width < 5000 && spacecount > 0) h->fdata.spacestretch = (curmovt->linelength - width)/spacecount; break; } /* Not end of line */ lastspacecount = spacecount++; lastsplit = p; lastwidth = width; while (PCHAR(*(++p)) == ' ') spacecount++; continue; } /* Fragment is greater than the line length */ if (lastsplit == NULL) break; /* No break points; give up */ *lastsplit = 0; /* Terminate first fragment */ if (lastspacecount > 0) /* Compute stretch amount */ h->fdata.spacestretch = (curmovt->linelength - lastwidth)/lastspacecount; /* Set up a new headstr for the next line, copying the middle and right parts of the heading. */ new = mem_get(sizeof(headstr)); memcpy(new, h, sizeof(headstr)); new->spaceabove = 0; new->fdata.spacestretch = 0; p = lastsplit + 1; while (PCHAR(*p) == ' ') p++; new->string[0] = p; h->string[1] = h->string[2] = NULL; h->next = new; h = new; spacecount = 0; lastsplit = NULL; lastwidth = 0; } } } /************************************************* * Set up a new page * *************************************************/ /* This is not called for the very first page; curpage is always set to the current page. Arguments: heading a movement heading, or NULL if not a movement start page_heading a page heading, or NULL if no page heading Returns: nothing; curpage is updated */ static void do_newpage(headstr *heading, headstr *page_heading) { pagestr *newpage = mem_get(sizeof(pagestr)); curpage->next = newpage; newpage->number = main_lastpagenumber = curpage->number + page_increment; curpage = newpage; curpage->next = NULL; curpage->spaceleft = main_pagelength; curpage->overrun = 0; curpage->sysblocks = NULL; curpage->footing = NULL; pl_sysprevptr = &(curpage->sysblocks); pl_countsystems = 0; pl_lastsystem = NULL; pl_pagefootnotes = NULL; pl_pagefootnotedepth = 0; pl_justify = curmovt->justify; pl_topmargin = curmovt->topmargin; pl_botmargin = curmovt->bottommargin; if (page_heading != NULL) do_pageheading(page_heading); if (heading != NULL) do_pageheading(heading); } /************************************************* * Finish off a page * *************************************************/ /* Correct the final spaceleft value (for information use), then justify the page if necessary, and set up the footnotes & footing. Argument: TRUE for the final page; causes it to use lastfooting Returns: nothing */ static void do_endpage(BOOL final) { headstr *footing; uint32_t justbits = pl_justify & just_vert; int32_t spaceleft = (curpage->spaceleft += ((pl_lastsystem == NULL)? 0 : pl_lastsystem->systemgap)); /* Set up any footnotes, making sure the systemgap field on the last system is the last accepted spacing below stave value, plus 10 points. Adjust the spaceleft to allow for footnotes when justifying. */ if (pl_pagefootnotes != NULL) { headblock *h = mem_get(sizeof(headblock)); h->is_sysblock = FALSE; h->pageheading = FALSE; h->next = NULL; h->movt = curmovt; h->headings = pl_pagefootnotes; *pl_sysprevptr = (sysblock *)h; pl_lastsystem->systemgap = pl_footnotespacing + 10000; spaceleft -= pl_pagefootnotedepth + pl_footnotespacing; } if (spaceleft < 0) spaceleft = 0; /* can happen on deep systems */ /* Deal with vertical justification data. If there are no spreading points top+bottom is the same as bottom. There is a limit to the distance between systems. */ if (justbits == just_vert) { int32_t topmargin = pl_topmargin; int32_t botmargin = pl_botmargin; int32_t margin = topmargin + botmargin; if (margin > spaceleft) { topmargin = mac_muldiv(topmargin, spaceleft, margin); botmargin = mac_muldiv(botmargin, spaceleft, margin); } spaceleft -= botmargin + topmargin; curpage->topspace = topmargin; if (spaceleft <= main_pagelength/2 && pl_countsystems > 1) { usint count = pl_countsystems - 1; int32_t insert = spaceleft/count; sysblock *s = curpage->sysblocks; if (insert > main_maxvertjustify) insert = main_maxvertjustify; while (s != NULL) /* defensive programming */ { if (s->is_sysblock && (s->flags & sysblock_noadvance) == 0) { s->systemgap += insert; if (--count == 0) break; } s = s->next; } } } /* Top-only justification */ else if (justbits == just_top) curpage->topspace = (pl_topmargin > spaceleft)? spaceleft : pl_topmargin; /* Bottom-only justification */ else if (justbits == just_bottom) { curpage->topspace = spaceleft - pl_botmargin; if (curpage->topspace < 0) curpage->topspace = 0; } /* No justification => centred vertically */ else curpage->topspace = spaceleft/2; /* Set up the page footing */ if (pl_pagefooting != NULL) /* Start of movement page footing */ { footing = pl_pagefooting; pl_pagefooting = NULL; } else { footing = (final && curmovt->lastfooting != NULL)? curmovt->lastfooting : curmovt->pagefooting; } if (footing != NULL) { headblock *f = mem_get(sizeof(headblock)); f->next = NULL; f->movt = curmovt; f->headings = footing; curpage->footing = f; } } /************************************************* * See if there is pending {und,ov}erlay * *************************************************/ /* These functions are called by setcont() below. Arguments: none Returns: TRUE if there is pending underlay */ static BOOL pendulay(void) { uolaystr *u = bar_cont->uolay; while (u != NULL) { if (!u->above) return TRUE; u = u->next; } return FALSE; } /* Arguments: none Returns: TRUE if there is pending overlay */ static BOOL pendolay(void) { uolaystr *u = bar_cont->uolay; while (u != NULL) { if (u->above) return TRUE; u = u->next; } return FALSE; } /************************************************* * Shorten stem of note if appropriate * *************************************************/ /* This function is called from setcont(). We have to flag the note and not do it twice, to cope with repeated bars (which use the same bar data). Arguments: p the note upflag TRUE if the stem is up Returns: nothing */ static void shorten_stem(b_notestr *tp, BOOL upflag) { int32_t shorten = 0; if ((tp->flags & nf_shortened) != 0) return; if (upflag) { if (tp->spitch > P_3L) shorten = 125*(tp->spitch - P_3L); } else { if (tp->spitch < P_3L) shorten = 125*(P_3L - tp->spitch); } tp->flags |= nf_shortened; tp->yextra -= (shorten <= curmovt->shortenstems)? shorten : curmovt->shortenstems; } /************************************************* * Advance cont data to end of system * *************************************************/ /* This is called when the end of a system has been chosen. The working cont structure is in wk_cont. A "snapshot" copy has been taken which represents the state at the start of the system. We must now advance through the system to get ready for the next snapshot. The system we are dealing with is in pl_sysblock. This pass also handles changes of stave and system spacing, setting up new data blocks as necessary. It also handles changes of page number. While we are doing this, we can compute the tiecount values to go in the tie control blocks. We cannot do this when reading in, because we don't know the stem direction at the time the tie block is created. The count value is the number of ties that take the opposite stemflag to the note. We also have to do a lot of work if we encounter a beamed-over bar line at the end of a system. Arguments: none Returns: nothing */ static void setcont(void) { BOOL hadssnext = FALSE; BOOL hadsshere = FALSE; for (curstave = 0; curstave <= curmovt->laststave; curstave++) { stavestr *ss; BOOL no_ulay, no_olay; if (mac_notbit(curmovt->select_staves, curstave)) continue; ss = curmovt->stavetable[curstave]; bar_cont = wk_cont + curstave; no_ulay = !pendulay(); no_olay = !pendolay(); for (curbarnumber = pl_sysblock->barstart; curbarnumber <= pl_sysblock->barend; curbarnumber++) { int chordcount; int32_t moff, beammoff, lastAlevel, lastBlevel; BOOL hadulay, hadolay, upflag; b_notestr *beamfirst; bstr *p; moff = 0; beammoff = 0; lastAlevel = 0; /* Above level */ lastBlevel = 0; /* Below level */ chordcount = 0; hadulay = FALSE; hadolay = FALSE; upflag = FALSE; beamfirst = NULL; beam_forceslope = INT32_MAX; for (p = (bstr *)(ss->barindex[curbarnumber]); p != NULL; p = p->next) switch(p->type) { headstr *h, *hh, *lh; b_notestr *tp; b_tiestr *tie; /* Actions that are common to this scan and to the output scan are held in a separate function. Items that are not relevant are skipped, though there is a check for an illegal item type. */ default: misc_commoncont(p); break; case b_footnote: hh = h = &(((b_footnotestr *)p)->h); lh = NULL; justifyheading(h); while (hh != NULL) { lh = hh; pl_newfootnotedepth += hh->space; hh = hh->next; } if (pl_newfootnotes == NULL) pl_newfootnotes = h; else { pl_lastnewfootnote->next = h; h->spaceabove = curmovt->footnotesep; } pl_lastnewfootnote = lh; break; case b_slur: (void)slur_startslur((b_slurstr *)p); break; case b_endline: case b_endslur: { b_endslurstr *es = (b_endslurstr *)p; if (slur_endslur(es) == NULL) { char buff[8]; if (es->value == 0) buff[0] = 0; else sprintf(buff, "\"%c\"", es->value); if (p->type == b_endline) error(ERR132, "line", buff, "[endline]"); else error(ERR132, "slur", buff, "[endslur]"); } } break; case b_tie: tie = (b_tiestr *)p; bar_cont->tie = tie; if (tie->abovecount == 0 && tie->belowcount == 0) { if (upflag) tie->belowcount = (chordcount > 1)? chordcount/2 : 1; else tie->abovecount = (chordcount+1)/2; } if (tie->abovecount == 0 && tie->belowcount < chordcount) tie->abovecount = chordcount - tie->belowcount; else if (tie->belowcount == 0 && tie->abovecount < chordcount) tie->belowcount = chordcount - tie->abovecount; /* Allow for tie below on underlay level*/ if (lastBlevel != 0 && tie->belowcount > 0) { lastBlevel -= 3500; if (pl_sysblock->ulevel[curstave] > lastBlevel) pl_sysblock->ulevel[curstave] = lastBlevel; } /* Allow for tie above on overlay level*/ if (lastAlevel != 0 && tie->abovecount > 0) { lastAlevel += 3500; if (pl_sysblock->olevel[curstave] < lastAlevel) pl_sysblock->olevel[curstave] = lastAlevel; } break; /* For notes/chords we calculate the underlay and overlay pitches, and also set flags for a possible subsequent tie. Skip rests, of course, and also skip the underlay/overlay calculation for notes that neither have their own text nor have an extender or hyphens under them (indicated by the existence of uolaystr data). Keep track of the last start-of-beam note, in case we are in an end-of-line bar with a continued beam. Handle automatic stem length adjustment. */ case b_note: bar_cont->tie = NULL; tp = (b_notestr *)p; if (tp->spitch != 0) { int32_t stemlength; uint32_t acflags = tp->acflags; uint32_t flags = tp->flags; uint16_t apitch = tp->spitch; uint16_t bpitch = tp->spitch; uint8_t aacc = tp->acc; uint8_t bacc = tp->acc; if (tp->notetype >= quaver) { if (beamfirst == NULL) { beamfirst = tp; beammoff = moff; } } else { beamfirst = NULL; beam_forceslope = INT32_MAX; } upflag = (flags & nf_stemup) != 0; if (curmovt->shortenstems != 0 && tp->length != 0) shorten_stem(tp, upflag); stemlength = tp->yextra; chordcount = 1; /* Process the remaining notes of a chord, if any. Find the highest and lowest pitches, and their related accidentals. */ for (b_notestr *ntp = (b_notestr *)(tp->next); ntp->type == b_chord; ntp = (b_notestr *)(ntp->next)) { chordcount++; flags |= ntp->flags; acflags |= ntp->acflags; if (ntp->spitch > apitch) { apitch = ntp->spitch; aacc = ntp->acc; } if (ntp->spitch < bpitch) { bpitch = ntp->spitch; bacc = ntp->acc; } if (curmovt->shortenstems && ntp->length != 0) shorten_stem(ntp, upflag); if (abs(ntp->yextra) > abs(stemlength)) stemlength = ntp->yextra; } /* Now do the underlay/overlay stuff */ lastAlevel = (apitch - P_0L)*500 + ((!upflag || (flags & nf_stem) == 0)? (5*accuptab[aacc])/4 : (14000 + stemlength)); lastBlevel = (bpitch - P_1L - 2)*500 - ((hadulay || no_ulay)? pl_ulaysize : 4000) - ((upflag || (flags & nf_stem) == 0)? accdowntab[bacc]/2 : (13000 + stemlength)); /* Allow for dynamics */ if ((acflags & af_accents) != 0) { int32_t dynextraA = accboundtable[ (((acflags & af_opposite) == 0)? 0:1) + (upflag? 2:0)]; int32_t dynextraB = accboundtable[4 + (((acflags & af_opposite) == 0)? 0:1) + (upflag? 2:0)]; lastAlevel += dynextraA; lastBlevel += dynextraB; /* That's all if no relevant accent, or the accent falls inside the staff; otherwise make sure the level is suitably outside the staff. */ if (dynextraA != 0 && (acflags & af_accoutside) != 0) lastAlevel += dynextraA; /* these are bigger accents */ if (dynextraB != 0 && (acflags & af_accoutside) != 0) lastBlevel += dynextraB; /* these are bigger accents */ } /* Impose {min,max}imum level and keep {high,low}est level for the line if appropriate */ if (lastAlevel < 20000) lastAlevel = 20000; if (lastBlevel > -pl_ulaysize - 1000) lastBlevel = -pl_ulaysize - 1000; if (no_olay || hadolay || pendolay()) { if (pl_sysblock->olevel[curstave] < lastAlevel) pl_sysblock->olevel[curstave] = lastAlevel; } if (no_ulay || hadulay || pendulay()) { if (pl_sysblock->ulevel[curstave] > lastBlevel) pl_sysblock->ulevel[curstave] = lastBlevel; } /* Turn off value if don't want tie noticed */ if ((flags & nf_stem) != 0) { if (upflag) lastAlevel = 0; else lastBlevel = 0; } } /* Deal with rests - kill any outstanding underlay or overlay blocks for extensions, but not for hyphens. */ else { uolaystr **uu = &(bar_cont->uolay); uolaystr *u = *uu; while (u != NULL) { if (u->type == '=') { *uu = u->next; mem_free_cached((void **)(&main_freeuolayblocks), u); } else uu = &(u->next); u = *uu; } lastAlevel = lastBlevel = 0; if (tp->notetype < quaver) beamfirst = NULL; } /* Notes and rests dealt with */ moff += tp->length; hadulay = hadolay = FALSE; break; /* Deal with beam breaks; action needed only if all beams are to be broken. */ case b_beambreak: if (((b_beambreakstr *)p)->value == BEAMBREAK_ALL) { beamfirst = NULL; beam_forceslope = INT32_MAX; } break; /* Deal with resets */ case b_reset: moff = ((b_resetstr *)p)->moff; break; /* Set up or cancel a hairpin pending block. */ case b_hairpin: if ((((b_hairpinstr *)p)->flags & hp_end) != 0) { if (bar_cont->hairpin != NULL) { mem_free_cached((void **)(&main_freehairpinstr), bar_cont->hairpin); bar_cont->hairpin = NULL; } } else { hairpinstr *hs = mem_get_cached((void **)(&main_freehairpinstr), sizeof(hairpinstr)); hs->hairpin = (b_hairpinstr *)p; hs->x = 0; hs->maxy = -INT32_MAX; hs->miny = INT32_MAX; bar_cont->hairpin = hs; } break; /* For nth time bars we need only keep one block, since continued cases won't be printing the numbers during pagination. */ case b_nbar: if (bar_cont->nbar == NULL) misc_startnbar((b_nbarstr *)p, 0, 0); break; case b_all: if (bar_cont->nbar != NULL) { mem_free_cached((void **)(&main_freenbarblocks), bar_cont->nbar); bar_cont->nbar = NULL; } break; case b_clef: bar_cont->clef = ((b_clefstr *)p)->clef; break; case b_time: bar_cont->time = ((b_timestr *)p)->time; break; case b_key: bar_cont->key = ((b_keystr *)p)->key; break; case b_sgabove: /* retrospective change of system gap */ { sysblock *pb = curpage->sysblocks; if (pb != NULL) /* Check for a previous system */ { b_sgstr *pp = (b_sgstr *)p; int32_t v = pp->value; while (pb->next != NULL) pb = pb->next; /* Find last block */ if(pb->is_sysblock) /* Ignore if heading */ { curpage->spaceleft += pb->systemgap; if (pp->relative) pb->systemgap += v; else pb->systemgap = v; curpage->spaceleft -= pb->systemgap; } } } break; case b_sghere: /* immediate change of system gap */ { int32_t v = ((b_sgstr *)p)->value; if (((b_sgstr *)p)->relative) pl_sysblock->systemgap += v; else pl_sysblock->systemgap = v; } break; case b_sgnext: /* delayed change of system gap */ { int32_t v = ((b_sgstr *)p)->value; if (((b_sgstr *)p)->relative) pl_sgnext += v; else pl_sgnext = v; } break; case b_ssabove: /* change ensured stave spacing above */ { b_ssstr *pp = (b_ssstr *)p; int32_t v = pp->value; if (pp->stave == 0) /* Stave 0 => all staves */ { int i; for (i = 1; i < curmovt->laststave; i++) { if (pp->relative) pl_ssehere[i] += v; else pl_ssehere[i] = v; } } else { if (pp->relative) pl_ssehere[pp->stave] += v; else pl_ssehere[pp->stave] = v; } } break; case b_sshere: /* immediate change of stave spacing */ { b_ssstr *pp = (b_ssstr *)p; int s = pp->stave; int32_t v = pp->value; int i; if (!hadsshere) { int32_t *new = mem_get((MAX_STAVE+1)*sizeof(int32_t)); memcpy(new, pl_sysblock->stavespacing, (curmovt->laststave+1)*sizeof(int32_t)); pl_sysblock->stavespacing = new; hadsshere = TRUE; } if (s == 0) /* Stave 0 => all staves */ { for (i = 1; i < curmovt->laststave; i++) { if (pp->relative) pl_sysblock->stavespacing[i] += v; else pl_sysblock->stavespacing[i] = v; } } else if (pp->relative) { pl_sysblock->stavespacing[s] += v; /* Find the next stave that is not suspended, and bump its ensured space. This makes sure that a relative [sshere] always has a noticeable effect. */ for (i = s+1; i <= curmovt->laststave; i++) { if (mac_isbit(pl_sysblock->notsuspend, i)) { pl_ssehere[i] += v; break; } } } else pl_sysblock->stavespacing[s] = v; } break; case b_ssnext: /* delayed change of stave spacing */ { b_ssstr *pp = (b_ssstr *)p; int s = pp->stave; int32_t v = pp->value; if (!hadssnext) { int32_t *new = mem_get((MAX_STAVE+1)*sizeof(int32_t)); memcpy(new, pl_ssnext, (curmovt->laststave+1)*sizeof(int32_t)); pl_ssnext = new; hadssnext = TRUE; } if (s == 0) /* => all staves */ { int i; for (i = 1; i < curmovt->laststave; i++) { if (pp->relative) pl_ssnext[i] += v; else pl_ssnext[i] = v; } } else if (pp->relative) pl_ssnext[s] += v; else pl_ssnext[s] = v; } break; /* Changes to vertical justification are put into system-specific variables, as it isn't known at the time to which page they will apply. Changes to horizontal justification are put directly into the justifyLR variable, as they apply to this system. If the just_add bit is not set, subtraction is implied. */ case b_justify: { b_justifystr *pp = (b_justifystr *)p; BOOL add = (pp->value & just_add) != 0; if ((pp->value & just_horiz) != 0) pl_justifyLR = add? (pl_justifyLR | pp->value) : (pl_justifyLR & ~pp->value); if ((pp->value & just_vert) != 0) { int oldjustify = (pl_sys_justify == -1)? pl_justify : pl_sys_justify; pl_sys_justify = add? (oldjustify | pp->value) : (oldjustify & ~pp->value); } } break; case b_page: { b_pagestr *pg = (b_pagestr *)p; uint32_t value = pg->value; if (pg->relative) value += curpage->number; if (value < curpage->number) error(ERR133, value, curpage->number); else curpage->number = value; } break; case b_pagebotmargin: pl_sys_botmargin = ((b_pagebotsstr *)p)->value; break; case b_pagetopmargin: pl_sys_topmargin = ((b_pagetopsstr *)p)->value; break; /* The only text we are interested in here is text at the underlay or overlay level, excluding underlay/overlay starting with '='; set up or remove continuation control blocks. */ case b_text: { uint32_t c; uolaystr *u, **uu; b_textstr *t = (b_textstr *)p; BOOL overlay; if ((t->flags & text_ul) != 0) { if (t->laylen == 1 && PCHAR(t->string[0]) == '=') break; } else if ((t->flags & text_atulevel) == 0) break; /* We have something relevant */ overlay = (t->flags & text_above) != 0; c = PCHAR(t->string[t->laylen]); uu = &bar_cont->uolay; u = *uu; /* On hitting any underlay or overlay, clear the field and flag so that only relevant notes are counted. Flag the type for the next note. */ if (!overlay) { hadulay = TRUE; if (no_ulay) { pl_sysblock->ulevel[curstave] = -9000; no_ulay = FALSE; } } else { hadolay = TRUE; if (no_olay) { pl_sysblock->olevel[curstave] = 18000; no_olay = FALSE; } } /* Find existing control block for this level */ while (u != NULL && (overlay != u->above || u->level != t->laylevel)) { uu = &u->next; u = *uu; } /* If control block needed, either carry on with this one or get a new one. */ if (c == '=' || c == '-') { if (u == NULL) { u = mem_get_cached((void **)(&main_freeuolayblocks), sizeof(uolaystr)); u->next = NULL; u->x = u->y = 0; u->level = t->laylevel; u->above = overlay; *uu = u; } u->type = c; u->htype = t->htype; } /* Else free an existing one */ else if (u != NULL) { *uu = u->next; mem_free_cached((void **)(&main_freeuolayblocks), u); } } break; /* Handle changes of underlay level */ case b_ulevel: pl_ulevel[curstave] = ((b_uolevelstr *)p)->value; break; case b_ulhere: pl_ulhere[curstave] = ((b_uolherestr *)p)->value; break; /* Handle changes of overlay level */ case b_olevel: pl_olevel[curstave] = ((b_uolevelstr *)p)->value; break; case b_olhere: pl_olhere[curstave] = ((b_uolherestr *)p)->value; break; /* Suspend sets flag for start of next system */ case b_suspend: mac_clrbit(accepteddata->notsuspend, curstave); break; /* We must cope with resume following suspend in the same system. */ case b_resume: mac_setbit(accepteddata->notsuspend, curstave); break; case b_barline: break; /* If we have a beam that may be carried over the end of the last bar in the system, we have to fudge up various values that will be set when the beam is drawn, in order to run setupbeam() so that we can find the beam's slope. This is preserved in the cont structure for use at the start of the next system. */ case b_overbeam: if (curbarnumber == pl_sysblock->barend && beamfirst != NULL) { barposstr *bp = curmovt->posvector + curbarnumber; out_postable = out_posptr = bp->vector; out_poslast = out_postable + bp->count - 1; out_stavemagn = curmovt->stavesizes[curstave]; out_pitchmagn = out_stavemagn/2; out_gracenotes = FALSE; out_gracefudge = 0; out_sysblock = pl_sysblock; beam_offsetadjust = 0; n_upflag = (beamfirst->flags & nf_stemup) != 0; n_upfactor = n_upflag? (+1):(-1); (void)out_setupbeam(beamfirst, beammoff, TRUE, FALSE); } break; } /* End switch */ } /* End bar loop */ } /* End stave loop */ /* At the end of a system we must check on the {und,ov}erlay continuation control blocks. For each stave that has such a block (or blocks) we must look at the next bar. If it does not exist, is emtpy, or starts with a rest, we must kill the continuation block(s) for extender lines. Don't do this for hyphen blocks - another syllable is always expected and there are odd cases when these do go over rests, etc. In the same loop we can deal with {und,ov}erlay levels. */ for (curstave = 0; curstave <= curmovt->laststave; curstave++) { BOOL remove; /* Handle changes to {und,ov}erlay levels */ if (pl_ulevel[curstave] != FIXED_UNSET) pl_sysblock->ulevel[curstave] = pl_ulevel[curstave]; pl_sysblock->ulevel[curstave] += pl_ulhere[curstave]; if (pl_olevel[curstave] != FIXED_UNSET) pl_sysblock->olevel[curstave] = pl_olevel[curstave]; pl_sysblock->olevel[curstave] += pl_olhere[curstave]; /* Deal with {under,over}lay continuations */ bar_cont = wk_cont + curstave; if (mac_notbit(curmovt->select_staves, curstave) || bar_cont->uolay == NULL) continue; remove = TRUE; curbarnumber = pl_sysblock->barend + 1; /* Next bar */ if (curbarnumber < curmovt->barcount) /* Not end of movement */ { bstr *p; for (p = (bstr *)(((curmovt->stavetable)[curstave])->barindex[curbarnumber]); p != NULL; p = p->next) { if (p->type == b_note) { if (((b_notestr *)p)->spitch != 0) remove = FALSE; break; } } } /* No notes or rests found or first is a rest. Remove the underlay/overlay blocks for extender lines. They are put on the free chain for re-use. */ if (remove) { uolaystr **uu = &(bar_cont->uolay); uolaystr *u = *uu; while (u != NULL) { if (u->type == '=') { *uu = u->next; mem_free_cached((void **)(&main_freeuolayblocks), u); } else uu = &(u->next); u = *uu; } } } } /************************************************* * Construct position table for one bar * *************************************************/ /* This function constructs a list of pairs containing a musical offset (from the start of the bar), and a horizontal offset (from the first note position). We first check to see if we are at a place where there are many bars rest for all the relevant staves. If so, special action is taken later. We go through each stave in turn, inserting between entries where necessary and adjusting for minimum note widths. A space item in the input can cause non-standard spacing. Suspended staves are not excluded -- as they should only contain whole bar rests, they won't affect the spacing. If "resume" is encountered, we set the "notsuspend" bit. There are several passes, to ensure that the notes on any one stave are not too close together when accidentals and dots are present. There is yet another pass to adjust the spacing for any embedded clefs, key signatures, etc. The yield of the procedure is the horizontal width of the bar (excluding the bar line). If a key or time signature has been read, then pl_xxwidth is set to the width for printing just that much of the bar, for use at the end of a line. Argument: TRUE if mis-matched bar lengths in different staves give an error (set FALSE when a bar is re-processed for a large stretch) Returns: the width of the bar or more than linelength for [newline/page] */ static int32_t makepostable(BOOL lengthwarn) { int32_t MaxKeyWidth = 0; /* Widest final key signature */ int32_t MaxTimeWidth = 0; /* Widest final time signature */ int32_t largestmagn = 0; /* Largest stave magnification */ int32_t endbarmoff = INT32_MAX; /* Musical offset at end bar */ uint8_t forcenewline = b_start; /* Not b_newline or b_newpage => unset */ int i; workposstr *left; posstr *outptr; BOOL doublebar = FALSE; BOOL Oldlastendwide = pl_lastendwide; /* previous bar's value */ BOOL Oldlastenddouble = pl_lastenddouble; /* this for double bar */ BOOL restbar = TRUE; BOOL firstrestbar = TRUE; uint64_t ulaymap = 0; /* map underlay staves */ /* Initialize shared variables */ pl_lastendwide = FALSE; /* flag wide bar line (e.g. repeat) */ pl_lastenddouble = FALSE; /* this for double barline (not wide) */ pl_manyrest = 0; /* not many bars rest */ pl_xxwidth = 0; /* key and/or time change width */ pl_warnkey = FALSE; /* no warning key read */ pl_warntime = FALSE; /* no warning time read */ /* Find and initialize the barposstr for this bar. */ pl_bp = curmovt->posvector + pl_barnumber; pl_bp->vector = NULL; /* vector of positions */ pl_bp->count = 0; /* no entries in vector */ pl_bp->multi = 1; /* not multibar rest */ pl_bp->posxRL = -posx_RLleft; /* default order for time/key/repeat */ pl_bp->barnoforce = bnf_auto; /* no forced or suppressed bar number */ pl_bp->barnoX = 0; /* no bar number movement */ pl_bp->barnoY = 0; /* Set up an initial position table entry for the barline, currently the final entry. */ pl_posptr = pl_postable; pl_posptr->stemup = 0; pl_posptr->stemdown = 0; pl_posptr->moff = INT32_MAX; pl_posptr->xoff = 0; pl_posptr->space = 0; pl_posptr->auxid = 0; /* First we check for whole-bar rests in all the relevant staves, and count the number of successive such bars if any are found. Key and and time changes and newline/page and a number of other non-printing items are allowed in the first rest bar. So is printed text. A clef change is allowed at the start of the first bar (to allow multiple rests at the start of a piece); otherwise a clef causes the bar to be treated as the last rest bar. */ for (int barnumber = pl_barnumber; barnumber < curmovt->barcount; barnumber++) { BOOL rrepeatORclefORdbar = FALSE; /* Scan all the relevant staves */ for (curstave = 0; curstave <= curmovt->laststave; curstave++) { bstr *p; stavestr *ss; BOOL hadnote; if (mac_notbit(curmovt->select_staves, curstave)) continue; hadnote = FALSE; ss = curmovt->stavetable[curstave]; for (p = (bstr *)(ss->barindex[barnumber]); p != NULL && restbar; p = p->next) { switch(p->type) { case b_start: break; case b_note: if (((b_notestr *)p)->spitch != 0 || (((b_notestr *)p)->flags & nf_centre) == 0 || (((b_notestr *)p)->flags & nf_nopack) != 0) restbar = FALSE; hadnote = TRUE; break; case b_comma: case b_ornament: case b_caesura: case b_nbar: case b_slur: case b_endslur: case b_dotbar: case b_hairpin: case b_reset: case b_tick: restbar = FALSE; break; case b_barline: if (((b_barlinestr *)p)->bartype == barline_double) rrepeatORclefORdbar = TRUE; break; case b_clef: if (firstrestbar) { if (hadnote) restbar = FALSE; } else { if (!hadnote) restbar = FALSE; else rrepeatORclefORdbar = TRUE; } break; case b_rrepeat: rrepeatORclefORdbar = TRUE; break; default: if (!firstrestbar) restbar = FALSE; break; } } } /* All the staves have been scanned, or a non-rest was found.*/ if (!restbar) break; pl_manyrest++; firstrestbar = FALSE; if (rrepeatORclefORdbar) break; /* allow rrepeat/clef/double bar in last bar */ } /* Now set about constructing the position table. We scan the staves several times in order to do this. The first scan establishes the entries for the notes; horizontal offsets are set for the first staff, and any notes on subsequent staves that are past the last notes on the staves above. Other notes are interpolated pro rata at this stage. During this pass we also deal with non-note items that don't affect the spacing, but must be noted for other parts of the code. We also record any [space] settings for implemention right at the end, and keep track of the largest stave magnification. If we are handling a sequence of rest bars, we must process the last bar as well as the first, in case there are clefs at the end of the last bar. It isn't straightforward to write this as any kind of a loop, so we resort to the dreaded GOTO for simplicity. */ curbarnumber = pl_barnumber; REPEATFIRSTSCAN: for (curstave = 0; curstave <= curmovt->laststave; curstave++) { BOOL auxitem, extraspace_set, wholebarrest; int32_t extraspace, moff, maxmoff, moffdelta; bstr *p; stavestr *ss; workposstr *pp; /* Do nothing if the stave isn't selected. */ if (mac_notbit(curmovt->select_staves, curstave)) continue; /* If the bar has no data, ignore it, but we need to check the magnification, as otherwise we may end up with a zero largest magnification if all staves are empty. Note: ignore the magnification for stave 0. */ if (curstave > 0 && curmovt->stavesizes[curstave] > largestmagn) largestmagn = curmovt->stavesizes[curstave]; ss = curmovt->stavetable[curstave]; if (mac_emptybar(ss->barindex[curbarnumber])) continue; /* Initialize */ auxitem = FALSE; /* last item was aux */ moff = 0; /* musical offset */ maxmoff = 0; /* for resets */ extraspace = 0; /* value of [space] */ extraspace_set = FALSE; /* TRUE if [space] encountered */ wholebarrest = TRUE; /* FALSE if non-whole-bar-rest read */ pp = pl_postable; /* position in pl_postable */ /* Scan the bar */ for (p = (bstr *)(ss->barindex[curbarnumber]); p != NULL; p = p->next) { b_notestr *note; snamestr *sname; uint64_t upflags, downflags; switch(p->type) { /* Deal with items that are notes, ignoring grace notes in this pass */ case b_note: note = (b_notestr *)p; if (note->length == 0) { auxitem = TRUE; /* Grace notes are aux items */ break; } /* Not a grace note */ upflags = downflags = 0; if (note->spitch != 0 || (note->flags & nf_centre) == 0) wholebarrest = FALSE; /* Found a non-whole-bar-rest item */ /* Set stem direction flags for fine spacing adjustment, but only if there really is an actual stem. */ if (note->spitch != 0 && note->notetype >= minim) { if ((note->flags & nf_stemup) != 0) mac_setbit(upflags, curstave); else mac_setbit(downflags, curstave); } /* Scan up position table to this musical offset; until one stave's data has been read, the barline has a musical offset of "infinity". */ while (pp < pl_posptr && pp->moff < moff) pp++; /* If we have matched at the barline, we are on a stave with a bar that is longer than any on any previous staves. We reset the barline moff to "infinity". */ if (pp->moff <= moff && pp == pl_posptr) pp->moff = INT32_MAX; /* If we are at a previously-existing entry, do nothing. Otherwise, move up the existing entries in the table and and insert a new entry. Note that that the moving up leaves the correct xoff value in the "new" entry, and it is the field in the *next* entry that must be updated. */ if (pp->moff != moff) { for (workposstr *q = pl_posptr; q >= pp; q--) q[1] = q[0]; pp->moff = moff; pp->space = 0; pp->auxid = 0; /* If we are at the end of the bar, and the bar length is unset, set the horizontal offset to be appropriate to this note type. (Note that pl_posptr is temporarily pointing one before the barline entry here.) */ if (pp == pl_posptr && (pl_posptr + 1)->moff == INT32_MAX) { (pl_posptr + 1)->xoff = pos_notewidth(note->length); } /* If we are not at the end of the bar, or if the bar length has already been set, set the horizontal offset pro rata pro tem, and adjust the next value to compensate for what has been taken off. */ else { workposstr *prev = pp - 1; workposstr *next = pp + 1; pp->xoff = mac_muldiv(next->xoff, moff - prev->moff, next->moff - prev->moff); next->xoff -= pp->xoff; } /* Move pointer to include one more entry. */ pl_posptr++; } /* Or in the stem flags and handle any extra space value. */ pp->stemup |= upflags; pp->stemdown |= downflags; if (extraspace_set) { if (extraspace >= 0) { if (extraspace > pp->space) pp->space = extraspace; } else if (extraspace < pp->space) pp->space = extraspace; extraspace = 0; extraspace_set = FALSE; } /* Adjust the musical offset for the next note, and set the flag saying last item was not an aux item. */ moff += note->length; auxitem = FALSE; break; /* Deal with non-note items. We handle those that are noted for external action in this pass, and also with [space]. Those that have auxiliary positions must be noted, in order to cause a bar length check to happen. */ case b_barline: if (((b_barlinestr *)p)->bartype == barline_double) doublebar = pl_lastenddouble = TRUE; break; /* It is convenient to handle the bar number forcing item here, when we have the relevant block available. */ case b_barnum: { b_barnumstr *bn = (b_barnumstr *)p; if (!bn->flag) pl_bp->barnoforce = bnf_no; else { pl_bp->barnoforce = bnf_yes; pl_bp->barnoX = bn->x; pl_bp->barnoY = bn->y; } } break; case b_space: { b_spacestr *bs = (b_spacestr *)p; extraspace += bs->relative? (bs->x * curmovt->stavesizes[curstave])/1000 : bs->x; } extraspace_set = TRUE; break; case b_ns: { b_nsstr *bn = (b_nsstr *)p; for (i = 0; i < NOTETYPE_COUNT; i++) nextdata->note_spacing[i] += bn->ns[i]; } break; case b_nsm: { int32_t v = ((b_nsmstr *)p)->value; for (i = 0; i < NOTETYPE_COUNT; i++) nextdata->note_spacing[i] = mac_muldiv(nextdata->note_spacing[i], v, 1000); } break; case b_ens: memcpy(nextdata->note_spacing, curmovt->note_spacing, NOTETYPE_COUNT*sizeof(int32_t)); break; case b_newline: case b_newpage: if (!pl_startlinebar) forcenewline = p->type; break; case b_resume: if (mac_notbit(accepteddata->notsuspend, curstave)) mac_setbit(nextdata->notsuspend, curstave); break; /* If this fragment is longer than any previous fragment, update the maximum fragment length. If it is longer than a previous barlength, update the bar length. */ case b_reset: if (moff > maxmoff) { maxmoff = moff; if (moff > pl_posptr->moff) pl_posptr->moff = moff; } moff = ((b_resetstr *)p)->moff; pp = pl_postable; break; /* Changes of stave name affect the available width for the system, and so must be handled here. However, we needn't (mustn't) process them when restretching to get even widths. */ case b_name: /* change of stave name */ if (pl_stretchn != 1 || pl_stretchd != 1) break; i = ((b_namestr *)p)->value; sname = ss->stave_name; while (--i > 0 && sname != NULL) sname = sname->next; /* Get fresh memory if unchanged in this bar */ if (accepteddata->stavenames == nextdata->stavenames) { nextdata->stavenames = mem_get((curmovt->laststave+1)*sizeof(snamestr *)); memcpy(nextdata->stavenames, accepteddata->stavenames, (curmovt->laststave+1)*sizeof(snamestr *)); } nextdata->stavenames[curstave] = sname; break; case b_text: /* remember underlay staves */ if ((((b_textstr *)p)->flags & text_ul) != 0) mac_setbit(ulaymap, curstave); break; case b_clef: case b_time: case b_key: case b_tick: case b_comma: case b_dotbar: case b_caesura: if (moff > 0) auxitem = TRUE; break; default: if (p->type >= b_baditem) error(ERR128, p->type); /* Hard */ break; } } /* End of scan of bar on one stave */ /* If maxmoff is greater than zero at the end of a bar, it means there has been a [reset]. The following notes/rests may not have filled the bar, and may not have coincided with note positions before the [reset]. Therefore, we might need to insert one more position for where we ended up. Then set the current position to the maximum encountered. */ if (moff < maxmoff) { while (pp < pl_posptr && pp->moff < moff) pp++; if (pp->moff != moff) { workposstr *prev = pp - 1; workposstr *next = pp + 1; for (workposstr *q = pl_posptr; q >= pp; q--) q[1] = q[0]; pp->moff = moff; pp->space = 0; pp->auxid = 0; pp->xoff = mac_muldiv(next->xoff, moff - prev->moff, next->moff - prev->moff); next->xoff -= pp->xoff; /* Move end pointer to include one more entry */ pl_posptr++; } moff = maxmoff; } /* Handle rounding problems caused by tuplets. If the current length differs from a multiple of the shortest note by only a small amount, round it. This can happen when note lengths are divided by non-factors for tuplets. */ moffdelta = moff % len_shortest; if (moffdelta <= TUPLET_ROUND) moff -= moffdelta; else if (len_shortest - moffdelta <= TUPLET_ROUND) moff += len_shortest - moffdelta; /* Deal with a [space] value. If it is positive, use if greater than any previous setting; if it is negative, use if less. */ if (extraspace_set) { if (extraspace >= 0) { if (extraspace > pl_posptr->space) pl_posptr->space = extraspace; } else if (extraspace < pl_posptr->space) pl_posptr->space = extraspace; } /* If this bar was not a whole bar rest, or if it ended with something that is positioned relative to the bar line, check that it has the same length as those above it. For the first stave, endbarmoff will equal INT32_MAX. If the lengths differ, keep the largest. Generate a warning the first time we measure the bar (when lengthwarn will be TRUE), if the length is less than the length of rest bars above, or not equal to note bars above. */ if (!wholebarrest || auxitem) { if (endbarmoff == INT32_MAX) endbarmoff = 0; else { if (moff != endbarmoff && lengthwarn) error(ERR129, sfn(moff), sfn(endbarmoff)); } if (moff > endbarmoff) endbarmoff = moff; pl_posptr->moff = endbarmoff; } /* For a whole bar rest, we set the moff in the final entry if it is not set (i.e. if this is the first stave), so that subsequent staves space correctly. However, whole bar rests are not checked against other bars for length. This makes it easy to handle odd cases by using R!, though it does miss the occasional warning that might have been nice. */ else if (pl_posptr->moff == INT32_MAX) pl_posptr->moff = moff; } /* End of per-stave loop */ /* The previous loop has to be repeated if pl_manyrest is greater than one, in order to process the final bar of a repeat sequence. This just isn't easy to code as a standard loop. We also need to set empty positioning for the intermediate bars, just in case they are inspected for startbracketbar spacing. */ if (pl_manyrest >= 2 && curbarnumber == pl_barnumber) { for (i = 1; i < (int)pl_manyrest - 1; i++) { barposstr *bp = curmovt->posvector + curbarnumber + i; bp->vector = NULL; bp->count = 0; } curbarnumber += pl_manyrest - 1; goto REPEATFIRSTSCAN; } /* If the bar contained no notes in all staves, the final musical offset and spacing will not have been set. We need to set them in order to cope with other items, e.g. text or caesurae, at the end of the bar. */ if (pl_posptr->moff == INT32_MAX) { pl_posptr->moff = 0; pl_posptr->xoff = nextdata->note_spacing[semibreve]; } /* Debugging: print out the basic position table */ if (main_tracepos == INT32_MAX || main_tracepos == pl_barnumber) { eprintf("-------------------------\n"); eprintf("BAR %d (%s) BASIC POSITIONS:\n", pl_barnumber, sfb(curmovt->barvector[pl_barnumber])); for (workposstr *t = pl_postable; t <= pl_posptr; t++) eprintf("%8d %6d\n", t->moff, t->xoff); } /* We have now constructed the basic position table for the bar. However, some gaps may be unacceptably narrow. We now do a series of repeat scans of the notes, gradually adjusting the spacing. */ /* The first scan adjusts for note length only, applying minimum distances that will ensure that notes do not overprint. This pass is concerned with space to the *right* of each note only -- this includes inverted notes when the stem is up. Space to the *left* is dealt with in subsequent passes. If this is a multiple rest bar we don't need to go through the whole rigmarole. The length of such bars is fixed. */ if (pl_manyrest >= 2) { int ii = (MFLAG(mf_codemultirests) && pl_manyrest < 9)? pl_manyrest : 0; pl_posptr->xoff = longrest_barwidths[ii]*largestmagn; pl_bp->multi = pl_manyrest; } else for (curstave = 0; curstave <= curmovt->laststave; curstave++) { bstr *p; workposstr *prev; BOOL beambreak2; int32_t length, moff; uint32_t flags; if (mac_notbit(curmovt->select_staves, curstave)) continue; p = (bstr *)((curmovt->stavetable[curstave])->barindex[pl_barnumber]); if (p == NULL) continue; flags = 0; length = 0; /* length of previous note */ prev = pl_postable; /* previous pl_postable entry */ beambreak2 = FALSE; /* secondary beambreak detected */ moff = 0; /* musical offset */ /* Loop for all items in the bar. We must do the same as bar end for a [reset] which is at the bar end! */ for (; p != NULL; p = p->next) { int32_t nextlength = 0; usint type = p->type; /* When we reach a non-grace note, or the barline, or a [reset] at the end of the bar, and there is a previous note, process the space that follows. Then remember a note's data, or process [reset]. Checks start at the second position - the variable "length" contains the length of the previous note, and the flags are also those of the previous note at this point. */ if (type == b_barline || (type == b_note && (nextlength = ((b_notestr *)p)->length) != 0) || (type == b_reset && moff == pl_posptr->moff)) { if (moff != 0) /* Skip this at bar start */ { workposstr *t = prev; int n = 0; int32_t extra; int32_t minwidth; int32_t width = 0; int32_t wantedwidth = pos_notewidth(length); /* Set an appropriate minimum distance from the previous note. At the barline, the minimum distance depends on the type of barline. If it's not double or an explicit ending barline, the value depends on the "unfinished" flag. */ if (type == b_barline) { if (((b_barlinestr *)p)->bartype == barline_double) minwidth = 10000; else if (((b_barlinestr *)p)->bartype == barline_ending) minwidth = 13000; else minwidth = (pl_barnumber + 1 != curmovt->barcount || MFLAG(mf_unfinished))? 7400: 11000; } else minwidth = 7250; /* Adjust the minimum width and wanted width if necessary. */ minwidth = pos_typewidth(minwidth, length, flags); if (wantedwidth < minwidth) wantedwidth = minwidth; /* Insert a small amount of space after a secondary beam break, to avoid an optical illusion. */ if (beambreak2) { wantedwidth += mac_muldiv(1300, curmovt->stavesizes[curstave], 1000); beambreak2 = FALSE; } /* Scan up position table to this musical offset, accumulating horizontal widths. */ while (t < pl_posptr && t->moff < moff) { n++; t++; width += t->xoff; } /* If the width is insufficient, distribute the additional space amongst all the positions between the previous note on this stave and this note. Currently just divide it evenly, but we may need to improve on that one day. The wanted width is multiplied by the layout stretch factor - this is unity for the first measuring, but greater when re-laying-out for wide stretches. */ extra = mac_muldiv(wantedwidth, pl_stretchn, pl_stretchd) - width; if (extra > 0) { int32_t x = extra/n; workposstr *pp = prev + 1; while (pp <= t) { (pp++)->xoff += x; extra -= x; if (extra < x) x = extra; } } /* Save previous pl_postable pointer */ prev = t; } /* If this was an end-of-bar [reset], zero the musical offset and reset the previous pointer. No need to reset length & flags, as the first note doesn't use them. */ if (type == b_reset) { moff = ((b_resetstr *)p)->moff; prev = pl_postable; } /* For a (non-grace) note, save the length and flags from this note, and adjust the musical offset. */ else if (type == b_note) { length = nextlength; flags = ((b_notestr *)p)->flags; moff += length; } } /* Deal with other relevant items */ else switch (type) { case b_reset: /* This reset is not at end-of-bar */ moff = ((b_resetstr *)p)->moff; prev = pl_postable; break; /* Remember a secondary beam break */ case b_beambreak: if (((b_beambreakstr *)p)->value != BEAMBREAK_ALL) beambreak2 = TRUE; break; /* For a chord, collect the invert and dotting flags for subsequent processing. */ case b_chord: /* 2nd and subsequent notes */ flags |= ((b_notestr *)p)->flags & (nf_dotted | nf_invert); break; } } /* End of item on stave loop */ } /* End of per-stave loop */ /* Debugging: print out the note-spaced position table */ if (main_tracepos == INT32_MAX || main_tracepos == pl_barnumber) { eprintf("-------------------------\n"); eprintf("BAR %d (%s) NOTE-SPACED POSITIONS:\n", pl_barnumber, sfb(curmovt->barvector[pl_barnumber])); for (workposstr *t = pl_postable; t <= pl_posptr; t++) eprintf("%8d %6d\n", t->moff, t->xoff); } /* Now we do a scan for adjacent up and down stems. We can make an adjustment with confidence only if all staves require it; otherwise it looks silly. Other cases may need manual adjustment. This scan can be done on the pl_postable only, using the flag bits already set up. Take care not to shorten distance below the absolute minimum! */ for (left = pl_postable; left < pl_posptr - 1; left++) { workposstr *right = left + 1; if (left->stemup == 0 && right->stemdown == 0 && left->stemdown != 0 && left->stemdown == right->stemup) { if (right->xoff >= 11000) right->xoff -= 1000; } else if (left->stemdown == 0 && right->stemup == 0 && left->stemup != 0 && left->stemup == right->stemdown) right->xoff += 1000; } /* Debugging: print out the new spacings */ if (main_tracepos == INT32_MAX || main_tracepos == pl_barnumber) { eprintf("-------------------------\n"); eprintf("BAR %d (%s) NOTE-SPACED/STEMMED POSITIONS:\n", pl_barnumber, sfb(curmovt->barvector[pl_barnumber])); for (workposstr *t = pl_postable; t <= pl_posptr; t++) eprintf("%8d %6d\n", t->moff, t->xoff); } /* Now we do a pass to insert space for things to the left of notes, like accidentals, clefs, caesuras, etc. We have to scan through to each note before handling them, as they come in a fixed (well, almost fixed) order. Use a word of flag bits to remember those that have a width associated with them, and also if anything at all has been encountered. If the bar starts with an lrepeat on the barline, a flag gets set so that we can add space afterwards. */ pl_barstartrepeat = FALSE; /* If we are handling a sequence of rest bars, we must process the last bar as well as the first, in case there are clefs at the end of the last bar. It isn't straightforward to write this as any kind of a loop, so we resort to the dreaded GOTO for simplicity. */ curbarnumber = pl_barnumber; REPEATSPACESCAN: for (curstave = 0; curstave <= curmovt->laststave; curstave++) { bstr *p; workposstr *previous; BOOL arp_read, spread_read; int32_t moff, prevlength, ensured; uint32_t xflags, prevflags; int gracevector[posx_maxgrace + 1]; int timevector[posx_maxtime + 1]; int keyvector[posx_maxkey + 1]; if (mac_notbit(curmovt->select_staves, curstave)) continue; p = (bstr *)((curmovt->stavetable[curstave])->barindex[curbarnumber]); if (p == NULL) continue; previous = NULL; arp_read = spread_read = FALSE; moff = 0; xflags = 0; /* flags for encountered items */ prevlength = -1; /* length of previous note */ prevflags = 0; /* flags on previous note/chord */ ensured = 0; gracevector[0] = 0; /* count of gracenotes */ timevector[0] = 0; /* count of time signatures */ keyvector[0] = 0; /* count of key signatures */ for (; p != NULL; p = p->next) { b_notestr *note; uint32_t length; switch(p->type) { case b_note: note = (b_notestr *)p; length = note->length; /* Count gracenotes and note something has been encountered */ if (length == 0) { fontsizestr *fontsizes = curmovt->fontsizes; int gracecount = gracevector[0] + 1; if (gracecount > posx_maxgrace) gracecount = posx_maxgrace; gracevector[gracecount] = mac_muldiv(note->accleft, fontsizes->fontsize_grace.size, fontsizes->fontsize_music.size); gracevector[0] = gracecount; xflags |= xf_grace; } /* A real note -- first collect data for accidentals, then if anything precedes the note, call a routine to do most of the work. Always update the moff and save the note item for use next time. */ else { uint32_t thisflags = 0; int32_t accleft = 0; /* Collect the maximum accidental width for a chord, and also check for inverted notes. Update the p pointer to point to the last note of the chord, to save scanning it again. */ do { int32_t a = ((thisflags & (nf_invert | nf_stemup)) == nf_invert)? 4500 : 0; if ((note->flags & nf_accinvis) == 0 && note->accleft > a) a = note->accleft; if (accleft < a) accleft = a; thisflags |= note->flags; p = (bstr *)note; note = (b_notestr *)note->next; } while (note->type == b_chord); /* Having got the accidental width, we need to add a teeny bit more space on the left. */ if (accleft > 0) accleft += 600; /* Breves get their left bars printed to the left of the actual note position. We can treat this as a little bit of extra accidental space. The distance is in fact 2.3 points, but because things to the left get at least 11 points (as opposed to 7 points for notes only) we just need to ensure that something is inserted if there are no other accidentals. At the start of a bar, accidentals are shifted left, so in that case, leave a bit more. */ if (length >= len_breve && accleft == 0) accleft = (moff == 0)? 3000 : 250; /* Extra space is needed for arpeggio or spread marks. This too can be treated as extra accidental space. */ if (arp_read) { accleft += 6000; arp_read = FALSE; } if (spread_read) { accleft += 6000; spread_read = FALSE; } /* If accidental space is needed, or if there are other things to the left of the note, we call a separate function to do the work. This is also called at end of bar for the last space. */ if (xflags != 0 || accleft != 0) { /* Arrange to keep the widest final key/time for warning bars */ if (timevector[0] > 0) { if (timevector[timevector[0]] > MaxTimeWidth) MaxTimeWidth = timevector[timevector[0]]; } if (keyvector[0] > 0) { if (keyvector[keyvector[0]] > MaxKeyWidth) MaxKeyWidth = keyvector[keyvector[0]]; } /* Now do the insertion work */ previous = pos_insertextras(moff, xflags, accleft, keyvector, timevector, gracevector, previous, prevlength, prevflags); /* Reset all the flags for the next note */ xflags = 0; timevector[0] = 0; keyvector[0] = 0; gracevector[0] = 0; } /* If there are no extras on this note, just get previous up-to-date. */ else { if (previous == NULL) previous = pl_postable; while (previous->moff < moff) previous++; } /* Handle any ensured value for this note (which previous is now pointing at) */ if (ensured > 0) { int32_t between = 0; if (prevlength > 0) { workposstr *last = previous - 1; while (last->moff > moff - prevlength) { between += last->xoff; last--; } } if (previous->xoff + between < ensured) { previous->xoff = ensured - between; ensured = 0; } } /* Remember previous note's length and its flags */ prevlength = length; prevflags = thisflags; moff += length; } break; case b_ensure: ensured = (curmovt->stavesizes[curstave] * ((b_ensurestr *)p)->value)/1000; break; /* Deal with non-note items. Clefs, keys, and times at the starts of lines will be marked for suppression. */ case b_reset: moff = ((b_resetstr *)p)->moff; previous = NULL; prevlength = -1; prevflags = 0; break; case b_lrepeat: xflags |= xf_lrepeat; /* If this repeat follows a key or time signature not at the start of a bar, move its position so that it prints after them, i.e. in the same order as in the input. */ if ((xflags & xf_keytime) != 0) pl_bp->posxRL = -posx_RLright; break; case b_rrepeat: xflags |= xf_rrepeat; break; case b_comma: xflags |= xf_comma; break; case b_tick: xflags |= xf_tick; break; case b_caesura: xflags |= xf_caesura; break; case b_dotbar: xflags |= xf_dotbar; break; /* When not suppressed, update the working copy for use with key signatures, for both actual and assumed clefs. Clefs are the one thing that are allowed at the end of a multiple repeat bar, so for non-assumed clefs we must fudge the spacing. */ case b_clef: { b_clefstr *c = (b_clefstr *)p; if (!c->suppress) { pl_sysclef[curstave] = c->clef; if (!c->assume) { xflags |= xf_clef; if (curbarnumber != pl_barnumber && moff != 0) pl_posptr->xoff += 15*curmovt->stavesizes[curstave]; } } } break; case b_key: { b_keystr *k = (b_keystr *)p; if (!k->suppress && !k->assume) { int keycount = keyvector[0] + 1; if (keycount > posx_maxkey) keycount = posx_maxkey; xflags |= xf_keytime; keyvector[keycount] = (pl_startlinebar? 0 : 4000) + misc_keywidth(k->key, pl_sysclef[curstave]); keyvector[0] = keycount; if (mac_isbit(accepteddata->notsuspend, curstave)) pl_warnkey |= k->warn; } } break; case b_time: { b_timestr *t = (b_timestr *)p; if (!t->suppress && !t->assume) { int timecount = timevector[0] + 1; if (timecount > posx_maxtime) timecount = posx_maxtime; timevector[timecount] = misc_timewidth(t->time) + 5000; timevector[0] = timecount; xflags |= xf_keytime; if (MFLAG(mf_showtime) && mac_isbit(accepteddata->notsuspend, curstave)) pl_warntime |= t->warn; } } break; case b_ornament: { b_ornamentstr *o = (b_ornamentstr *)p; if (o->ornament == or_arp || o->ornament == or_arpu || o->ornament == or_arpd) arp_read = TRUE; else if (o->ornament == or_spread) spread_read = TRUE; } break; } } /* End bar scanning loop */ /* Process for auxiliaries at the end of the bar */ if (xflags != 0) pos_insertextras(moff, xflags, 0, keyvector, timevector, gracevector, previous, prevlength, prevflags); /* Handle [ensure] at end of bar */ if (ensured > 0) { int32_t between = 0; if (prevlength > 0) { workposstr *last = pl_posptr - 1; while (last->moff > moff - prevlength) { between += last->xoff; last--; } } if (pl_posptr->xoff + between < ensured) pl_posptr->xoff = ensured - between; } } /* End of per-stave loop */ /* The previous loop has to be repeated iff pl_manyrest is greater than one, in order to process the final bar of a repeat sequence. This just isn't easy to code as a standard loop. */ if (pl_manyrest >= 2 && curbarnumber == pl_barnumber) { curbarnumber += pl_manyrest - 1; goto REPEATSPACESCAN; } /* Add a bit of space if the bar is not the first on a line, and starts with a left repeat. */ if (pl_barstartrepeat) { pl_postable->xoff += 6500; /* extra space at start bar */ pl_xxwidth -= 6500; /* but not for xxwidth */ } /* Debugging: print out the postable yet again */ if (main_tracepos == INT32_MAX || main_tracepos == pl_barnumber) { eprintf("-------------------------\n"); eprintf("BAR %d (%s) ALL-IN POSITIONS:\n", pl_barnumber, sfb(curmovt->barvector[pl_barnumber])); for (workposstr *t = pl_postable; t <= pl_posptr; t++) eprintf("%8d %6d\n", t->moff, t->xoff); } /* If enabled, we now do a scan to check that any underlaid text is not going to overprint. Assume all is well at the start and end of a bar -- we have to, since we don't do inter-bar spacing. Underlay and overlay are handled separately, but for multiple verses the widest syllable is taken. */ if (MFLAG(mf_spreadunderlay)) { BOOL spreadsome = FALSE; for (curstave = 1; curstave <= curmovt->laststave; curstave++) { bstr *p; workposstr *previousO, *previousU; BOOL hadulay, hadolay; int32_t nextleftU, nextleftO; int32_t nextrightU, nextrightO; int32_t lastrightU, lastrightO; int32_t moff; if (mac_notbit(curmovt->select_staves, curstave)) continue; p = (bstr *)((curmovt->stavetable[curstave])->barindex[pl_barnumber]); if (p == NULL) continue; previousO = previousU = pl_postable; hadulay = hadolay = FALSE; nextleftU = nextleftO = 0; nextrightU = nextrightO = 0; lastrightU = lastrightO = 0; moff = 0; for (; p != NULL; p = p->next) { if (p->type == b_reset) { previousO = previousU = pl_postable; hadulay = hadolay = FALSE; nextleftU = nextleftO = 0; nextrightU = nextrightO = 0; lastrightU = lastrightO = 0; moff = ((b_resetstr *)p)->moff; } /* Deal with items that are notes. The hadulay and hadolay flags are set by preceding text items. There is no need to look at subsequent notes of a chord. */ else if (p->type == b_note) { b_notestr *pp = (b_notestr *)p; if (pp->length == 0) continue; /* Ignore grace notes */ /* We have to process underlay and overlay entirely separately. */ if (hadulay) { workposstr *this = previousU; while (this->moff < moff) this++; if (moff > 0) /* Do nothing at bar start */ { int32_t avail = 0; workposstr *t = previousU + 1; while (t <= this) avail += (t++)->xoff; avail -= lastrightU - nextleftU; if (avail < 0) { workposstr *tt = previousU + 1; while (tt->moff < moff + posx_max) tt++; tt->xoff -= avail; spreadsome = TRUE; } } lastrightU = nextrightU; nextleftU = nextrightU = 0; hadulay = FALSE; previousU = this; } /* Similar code for overlay */ if (hadolay) { workposstr *this = previousO; while (this->moff < moff) this++; if (moff > 0) /* Do nothing at bar start */ { int32_t avail = 0; workposstr *t = previousO + 1; while (t <= this) avail += (t++)->xoff; avail -= lastrightO - nextleftO; if (avail < 0) { workposstr *tt = previousO + 1; while (tt->moff < moff + posx_max) tt++; tt->xoff -= avail; spreadsome = TRUE; } } lastrightO = nextrightO; nextleftO = nextrightO = 0; hadolay = FALSE; previousO = this; } moff += pp->length; } /* Deal with text items - only interested in {under,over}lay, and then only in syllables that aren't just "=". */ else if (p->type == b_text) { b_textstr *t = (b_textstr *)p; fontinststr *fdata = curmovt->fontsizes->fontsize_text + t->size; uint32_t ss[256]; uint32_t *cc, *pp, *qq; uint32_t ch; int32_t leftx, rightx; if ((t->flags & text_ul) == 0 || (t->laylen == 1 && PCHAR(t->string[0]) == '=')) continue; leftx = t->x; /* Copy this bit of lyric, stopping if we reach '^', and converting # into space. */ pp = t->string; qq = ss; for (i = 0; i < t->laylen && PCHAR(*pp) != '^'; i++) *qq++ = (PCHAR(*pp) == '#')? (PFTOP(*pp++) | ' ') : *pp++; *qq = 0; /* If we have not hit '^', or if there is only one circumflex, the string to centre is in ss. */ cc = ss; if (i < t->laylen) { int k; for (k = i + 1; k < t->laylen; k++) if (PCHAR(t->string[k]) == '^') break; /* If there is a second circumflex, the string to centre is the one between the two circumflexes, but first we have to move the starting point left by the width of the initial string. */ if (k < t->laylen) { int32_t ssw = string_width(ss, fdata, NULL); leftx -= mac_muldiv(ssw, curmovt->stavesizes[curstave], 1000); cc = qq; for (++i, ++pp; i < t->laylen && PCHAR(*pp) != '^'; i++) *qq++ = (PCHAR(*pp) == '#')? PFTOP(*pp++) | ' ' : *pp++; *qq = 0; } } /* cc now points to the string that might be centred, with the whole string so far in ss. Scanning the input string has stopped either at a circumflex or on reaching the syllable length. The means that the next character (pointed at by pp) must be one of the following: '^' first or second circumflex '-' end of syllable, not end of word 0 end of word syllable at end of string '=' end of word syllable, continued If the underlay style is 0 (default) we always centre syllables. Otherwise, we do it if there was a circumflex Do the centring if the underlay style is 0 (default) or if explicitly requested by a circumflex or if this syllable applies to only one note, that is, there is no following '=' (possibly after '-'). The test for the latter also covers the circumflex case. */ ch = PCHAR(*pp); /* Next character */ if (curmovt->underlaystyle == 0 || (ch != '=' && (ch != '-' || PCHAR(pp[1]) != '='))) { int32_t w = string_width(cc, fdata, NULL); w = mac_muldiv(w, curmovt->stavesizes[curstave], 1000); if (w != 0) leftx += 3*curmovt->stavesizes[curstave] - w/2; /* After '^', add on the remainder of the syllable */ if (ch == '^') { for (++i, ++pp; i < t->laylen; i++) *qq++ = (PCHAR(*pp) == '#')? PFTOP(*pp++) | ' ' : *pp++; *qq = 0; } } /* We now have the complete syllable, with circumflexes removed and # converted to space, in ss, with qq at the end. Cut off trailing spaces, but not if they were originally # characters. */ pp = t->string + t->laylen; while (qq > ss && PCHAR(qq[-1]) == ' ' && PCHAR(pp[-1]) != '#') { qq--; pp--; } *qq = 0; /* A quarter of the fontsize is the space to the next syllable */ rightx = leftx + mac_muldiv(fdata->size/4 + string_width(ss, fdata, NULL), curmovt->stavesizes[curstave], 1000); /* Correct for leading spaces, but not if they were originally # characters. */ if (PCHAR(*ss) == ' ') { pp = t->string; qq = ss; while (PCHAR(*pp) != '#' && PCHAR(*qq) == ' ') { pp++; qq++; } *qq = 0; leftx += string_width(ss, fdata, NULL); } /* Keep maximum for verses, separately for overlay and underlay */ if ((t->flags & text_above) != 0) { if (nextleftO > leftx) nextleftO = leftx; if (nextrightO < rightx) nextrightO = rightx; hadolay = TRUE; } else { if (nextleftU > leftx) nextleftU = leftx; if (nextrightU < rightx) nextrightU = rightx; hadulay = TRUE; } } /* End handling text item */ } /* End loop through bar's data */ } /* End of per-stave loop */ /* Show debugging info only if there has actually been some spreading. */ if (spreadsome && (main_tracepos == INT32_MAX || main_tracepos == pl_barnumber)) { eprintf("-------------------------\n"); eprintf("BAR %d (%s) UNDERLAY SPREAD POSITIONS:\n", pl_barnumber, sfb(curmovt->barvector[pl_barnumber])); for (workposstr *t = pl_postable; t <= pl_posptr; t++) eprintf("%8d %6d\n", t->moff, t->xoff); } } /* ------ End of passes through the data. Do some final adjustments. ------ */ curstave = -1; /* For error messages - no specific stave */ /* If the bar ends with a double bar line or it's the last bar and not unfinished, allow space for it. */ if (doublebar) pl_posptr->xoff += 1600; else if (pl_barnumber + 1 >= curmovt->barcount && !MFLAG(mf_unfinished)) pl_posptr->xoff += 2000; /* If the bar starts with an accidental position, we can reduce the initial starting position to be nearer the bar line. */ if (!pl_startlinebar && pl_postable->auxid == posx_acc && pl_barlinewidth > 3000) { int32_t notepos = pl_postable[0].xoff + pl_postable[1].xoff; if (notepos > pl_barlinewidth - 3000) notepos = pl_barlinewidth - 3000; pl_postable->xoff -= notepos; } /* If the bar starts with a clef, we can reduce the initial starting position to be nearer the bar line. This does not happen in conventional music, where a change of clef is usually at the end of a bar, but is possible after an incipit and other special cases. We also add space after the clef if the next thing is a note. Finally, include the startline spacing parameters for the clef and any following signatures. */ if (pl_postable->auxid == posx_clef && !pl_startlinebar) { workposstr *t = pl_postable; if (pl_barlinewidth > 2000) { int32_t adjust = pl_barlinewidth - 2000; pl_postable->xoff -= adjust; if (pl_postable[1].auxid == 0) pl_postable[1].xoff += adjust; } pl_postable->xoff += curmovt->startspace[0]; /* Add clef space */ while (++t <= pl_posptr && posx_keyfirst <= t->auxid && t->auxid <= posx_timelast) { if (t->auxid <= posx_keylast) t->xoff += curmovt->startspace[1]; /* Key */ else t->xoff += curmovt->startspace[2] - 4*largestmagn; /* Time */ } /*** This would make the spacing as at line start, but stretching makes it look bad. If ever the stretching is changed so as not to move the first note when it follows other things, instate this, and the same below. if (t <= pl_posptr) t->xoff += 3*largestmagn + curmovt->startspace[3]; ***/ } /* If the bar starts with key and/or time signatures, we can reduce the initial starting position to be nearer the bar line (provided the barlinewidth is large enough), and reduce any gaps between them. However, we must increase the position if the previous bar ended with a wide barline, or if a double barline is going to be generated for a key signature. The keyspace and timespace values are inserted before the first signature, depending on the type. We must also set the special width used for printing warning bars at the ends of lines. At the start of a line, we make the reduction for any signature, since the presence of an entry indicates a second signature. */ else if (pl_postable->auxid == posx_keyfirst || pl_postable->auxid == posx_timefirst) { workposstr *t = pl_postable + (pl_startlinebar? 0:1); pl_postable->xoff += (pl_postable->auxid == posx_keyfirst)? curmovt->midkeyspacing : curmovt->midtimespacing; /* Move back start for wide enough barline spacing */ if (pl_barlinewidth > 3000) pl_postable->xoff += 3000 - pl_barlinewidth; /* Move forward start if wide bar line */ if (Oldlastendwide || (pl_postable->auxid == posx_keyfirst && MFLAG(mf_keydoublebar) && !Oldlastenddouble)) pl_postable->xoff += 2000; /* Handle multiple signatures and compute the special width. */ pl_xxwidth += pl_postable->xoff; for (; t <= pl_posptr && t->auxid >= posx_keyfirst && t->auxid <= posx_timelast; t++) { if (t->auxid <= posx_keylast) { t->xoff -= 3*largestmagn; if (pl_warnkey) pl_xxwidth += t->xoff; } else { t->xoff += curmovt->startspace[2] - 4*largestmagn; if (pl_warntime) pl_xxwidth += t->xoff; } } /* Add in space for the final item. MaxTimeWidth has extra space added to it which seems to be too much in the case when a key signature could have been present, but was suppressed by [nowarn]. In that case (only), we reduce the value. This is a fudge because I did't want to mess with the rest of the code when adding the independent [nowarn] facility. */ if (!pl_warnkey && MaxKeyWidth > 0) MaxTimeWidth -= 8000; pl_xxwidth += (pl_warnkey && pl_warntime)? ((MaxKeyWidth > MaxTimeWidth)? MaxKeyWidth:MaxTimeWidth) : (pl_warnkey? MaxKeyWidth : MaxTimeWidth); /* Add notespace to midline bars */ /*** This would make the spacing as at line start, but stretching makes it look bad. If ever the stretching is changed so as not to move the first note when it follows other things, instate this. if (!pl_startlinebar && t <= pl_posptr) t->xoff += 3*largestmagn + curmovt->startspace[3]; ****/ /* If the keys+times are followed by a repeat, bring it nearer too, and if the thing following that is an accidental, it can come nearer. Also if a time (but not key) signature is followed by an accidental, close the gap slightly. */ if (t <= pl_posptr) { if (t->auxid == posx_RLright) { (t++)->xoff -= 2000; if (t <= pl_posptr && t->auxid == posx_acc) t->xoff -= 2000; } else if (posx_timefirst <= (t-1)->auxid && (t-1)->auxid <= posx_timelast && t->auxid == posx_acc) t->xoff -= 2000; } } /* We now have to check up on grace notes preceding notes with accidentals. If the grace notes are on staves that do not have accidentals, we do not need to leave more space between the grace notes and the accidentals. This copes with several common cases, but it does not do the complete job. */ for (left = pl_postable; left < pl_posptr; left++) { workposstr *right = left + 1; if (right->auxid == posx_acc && left->auxid >= posx_gracefirst && left->auxid <= posx_gracelast && (left->auxstaves & right->auxstaves) == 0) { right->xoff -= (right+1)->xoff; if (right->xoff < 0) right->xoff = 0; } } /* So far we have been working with offsets between the notes, but the final result must have offsets from the start of the bar. At the same time we can incorporate the values of any [space] directives. */ pl_postable->xoff += pl_postable->space; for (left = pl_postable + 1; left <= pl_posptr; left++) left->xoff += left->space + (left-1)->xoff; /* Debugging output */ if (main_tracepos == INT32_MAX || main_tracepos == pl_barnumber) { eprintf("-------------------------\n"); eprintf("BAR %d (%s) FINAL POSITIONS:\n", pl_barnumber, sfb(curmovt->barvector[pl_barnumber])); eprintf("%8d %6d %6d\n", pl_postable->moff, 0, pl_postable->xoff); for (workposstr *t = pl_postable + 1; t <= pl_posptr; t++) eprintf("%8d %6d %6d\n", t->moff, t->xoff - (t-1)->xoff, t->xoff); if (forcenewline != b_start) eprintf("!! Newline forced !!\n"); } /* Now copy the retained data - (moff, xoff) pairs - into a vector which is attached to the bar's data structure. If the bar has to be respaced for stretching or squashing, the vector will already exist. */ left = pl_postable; pl_bp->count = pl_posptr - pl_postable + 1; if (pl_bp->vector == NULL) pl_bp->vector = mem_get(pl_bp->count * sizeof(posstr)); outptr = pl_bp->vector; while (left <= pl_posptr) { outptr->moff = left->moff; (outptr++)->xoff = (left++)->xoff; } /* Normally, return the width of the bar, up to the bar line, but if a new line or page is being forced, return a number that will force a newline if this is not the first bar in a system. Note: do NOT return INT32_MAX because the value is added to the current position to see if the bar fits on the line - that would cause integer overflow. */ if (forcenewline == b_start) return pl_posptr->xoff; else { if (forcenewline == b_newpage) pl_newpagewanted = TRUE; return 2 * curmovt->linelength; } } /************************************************* * Pagination function * *************************************************/ /* This function is called when the music has been successfully read in to memory. Arguments: none Returns: nothing */ void paginate(void) { int i; int layoutptr = 0; /* Set to avoid compiler warning */ int layoutstack[MAX_LAYOUT_STACK]; int layoutstackptr = 0; int lengthwarn = 0; int lastbarcountbump = 0; /* Set to avoid compiler warning */ usint movtnumber = 1; usint page_state = page_state_newmovt; headstr *lastfootnote = NULL; int32_t adjustkeyposition; int32_t adjusttimeposition; int32_t nextbarwidth; int32_t save_note_spacing[NOTETYPE_COUNT]; int32_t timewidth; int32_t xposition; BOOL firstsystem; BOOL movt_pending = FALSE; BOOL page_done = FALSE; TRACE("\npaginate() start\n"); /* Get memory for the working position table. */ pl_postable = mem_get_independent(MAX_POSTABLESIZE * sizeof(workposstr)); /* Set up page and line lengths in magnified units. Once we have the line length, we can split and justify heading and footing lines. */ main_pagelength = (main_pagelength * 1000)/main_magnification; for (i = 0; i < (int)movement_count; i++) { curmovt = movements[i]; curmovt->linelength = (curmovt->linelength * 1000)/main_magnification; justifyheading(curmovt->heading); justifyheading(curmovt->footing); justifyheading(curmovt->lastfooting); } /* Other initialization */ curmovt = movements[0]; /* Sic: first movement */ /* Set up various blocks of memory */ accepteddata->stavenames = mem_get((MAX_STAVE+1) * sizeof(snamestr *)); pl_ulevel = mem_get((MAX_STAVE+1)*sizeof(int32_t)); pl_ulhere = mem_get((MAX_STAVE+1)*sizeof(int32_t)); pl_olevel = mem_get((MAX_STAVE+1)*sizeof(int32_t)); pl_olhere = mem_get((MAX_STAVE+1)*sizeof(int32_t)); pl_ssehere = mem_get((MAX_STAVE+1)*sizeof(int32_t)); /* Set up the first page block and associated variables. */ curpage = main_pageanchor = mem_get(sizeof(pagestr)); *curpage = init_curpage; curpage->number = main_lastpagenumber = page_firstnumber; curpage->spaceleft = main_pagelength; pl_sysprevptr = &(curpage->sysblocks); pl_countsystems = 0; pl_lastsystem = NULL; pl_pagefooting = pl_pagefootnotes = NULL; pl_pagefootnotedepth = 0; /* Set the spreading parameters for the first page */ pl_botmargin = curmovt->bottommargin; pl_justify = curmovt->justify; pl_topmargin = curmovt->topmargin; /* Loop that does the job; page_state controls which action is taken. */ while (!page_done) switch(page_state) { uint8_t justbits; int32_t barlinewidth, stretchn, stretchd, sysdepth, sysfootdepth; int32_t lastulevel; /****************************************************************************/ /****************************************************************************/ /* Deal with the start of a movement. We deal with the heading lines and then set up for paginating the rest of the movement. */ case page_state_newmovt: active_transpose = curmovt->transpose; firstsystem = TRUE; /* The equivalent of this code also exists in pmw_read_header, in connection with the barlinespace directive. Keep in step. */ if (curmovt->barlinespace == FIXED_UNSET) { pl_barlinewidth = (curmovt->note_spacing)[minim]/2 - 5000; if (pl_barlinewidth < 3000) pl_barlinewidth = 3000; curmovt->barlinespace = pl_barlinewidth; } else pl_barlinewidth = curmovt->barlinespace; if (curmovt->laststave >= 0) { pl_allstavebits = 1Lu << curmovt->laststave; /* Top stave's bit */ pl_allstavebits |= pl_allstavebits - 2; /* + all below, except 0 */ } else pl_allstavebits = 0; pl_stavemap = curmovt->select_staves; pl_ssenext = curmovt->stave_ensure; pl_ssnext = curmovt->stave_spacing; pl_sgnext = curmovt->systemgap; pl_ulaysize = (curmovt->fontsizes->fontsize_text)[ff_offset_ulay].size; pl_olaysize = (curmovt->fontsizes->fontsize_text)[ff_offset_olay].size; /* Deal with heading texts if we know the movement is to go on this page. For movements other than the first, if we are at the top of a page, do the page heading unless it has been turned off explicitly. Also, set up a footing for this page. */ if (!movt_pending) { if (movtnumber > 1 && curmovt->pageheading != NULL && !MFLAG(mf_nopageheading) && curpage->spaceleft == main_pagelength) do_pageheading(curmovt->pageheading); if (curmovt->heading != NULL) do_pageheading(curmovt->heading); if (curmovt->footing != NULL) pl_pagefooting = curmovt->footing; } /* Create vector of per-bar data structures. For movements with many bars this can be quite large, so get it as an independent block. */ curmovt->posvector = mem_get_independent(curmovt->barcount * sizeof(barposstr)); /* Now set up to process the bars. Cut back the working count of staves to those that have been selected. If no staves are present in the movement, curmovt->laststave is already set to -1. */ if (curmovt->laststave >= 0) { for (int8_t x = curmovt->laststave; x >= 0; x--) { if (mac_isbit(curmovt->select_staves, x)) { curmovt->laststave = x; break; } } } /* Initialize values in the accepted data structure */ accepteddata->notsuspend = curmovt->select_staves & ~curmovt->suspend_staves; memcpy(accepteddata->note_spacing, curmovt->note_spacing, NOTETYPE_COUNT*sizeof(int)); accepteddata->stavenames = mem_get((curmovt->laststave+1)*sizeof(snamestr *)); for (i = 1; i <= curmovt->laststave; i++) accepteddata->stavenames[i] = ((curmovt->stavetable)[i])->stave_name; /* Initialize vectors for {und,ov}erlay level handling, and set defaults in the continuation data vector. */ for (i = 0; i <= curmovt->laststave; i++) { pl_ulevel[i] = pl_olevel[i] = FIXED_UNSET; wk_cont[i] = init_cont; wk_cont[i].time = curmovt->time; wk_cont[i].key = transpose_key(curmovt->key); } /* Disable all time signatures if startnotime was specified; otherwise enable for all staves except stave 0. */ pl_showtimes = MFLAG(mf_startnotime)? 0 : (~0 ^ 1); /* Set up for fixed layout if required. The layout data consists mainly of pairs, the first of which identifies the second. A "newpage" item, however, has no following data. The items are as follows: lv_repeatcount, value Repeat next group that many times lv_barcount, value Next system to have this many bars lv_repeatptr, value End repeat that started at value offset lv_newpage Force a new page (no value) Repetition is handled by using the local layoutstack to keep count of the various, possibly nested, repeats. The final item in a layout list is always a repeat pointer to offset zero, so we put a large repeat count at the start of the stack. Then copy any initial repeat in the layout. */ if (curmovt->layout == NULL) layoutptr = -1; else { layoutstack[0] = 10000; layoutstackptr = 1; layoutptr = 0; while (curmovt->layout[layoutptr++] == lv_repeatcount) layoutstack[layoutstackptr++] = curmovt->layout[layoutptr++]; } /* The left and right justification bits can be set immediately, so that they apply to all systems in the new movement. The top and bottom bits can't be changed yet, because we don't know if this movement will start on the current page. */ pl_justifyLR = curmovt->justify; /* Initialize the bar number and deal with the case of no bars of music in the movement. The three pl_ variables are otherwise set when we know that the first system of the new movement fits on the page. This code copes with a single-movement file. */ if ((pl_barnumber = 0) >= curmovt->barcount) { pl_botmargin = curmovt->bottommargin; pl_justify = curmovt->justify; pl_topmargin = curmovt->topmargin; page_state = page_state_donemovt; } /* If there are some bars, we are now ready to start a new system. */ else page_state = page_state_newsystem; break; /****************************************************************************/ /****************************************************************************/ /* Deal with the start of a new system. There will always be at least one bar left when control gets here. */ case page_state_newsystem: curbarnumber = pl_barnumber; timewidth = 0; pl_newpagewanted = FALSE; pl_stretchn = pl_stretchd = 1; /* no stretch */ memcpy(pl_ssehere, pl_ssenext, (curmovt->laststave+1)*sizeof(int32_t)); /* Get a new system block and initialize some of the fields. The remainder get set as the system is processed. */ pl_sysblock = mem_get(sizeof(sysblock)); pl_sysblock->next = NULL; pl_sysblock->movt = curmovt; pl_sysblock->is_sysblock = TRUE; pl_sysblock->flags = 0; pl_sysblock->stavenames = accepteddata->stavenames; pl_sysblock->stavespacing = pl_ssnext; pl_sysblock->ulevel = mem_get((curmovt->laststave+1) * sizeof(uint32_t)); pl_sysblock->olevel = mem_get((curmovt->laststave+1) * sizeof(uint32_t)); pl_sysblock->systemgap = pl_sgnext; pl_sysblock->notsuspend = accepteddata->notsuspend; pl_sysblock->showtimes = 0; pl_sysblock->barstart = pl_barnumber; pl_sysblock->barend = pl_barnumber; pl_sysblock->cont = mem_get((curmovt->laststave+1)*sizeof(contstr)); misc_copycontstr(pl_sysblock->cont, wk_cont, curmovt->laststave, TRUE); /* Working clefs while measuring. The current clef is needed only for measuring special keys, which may depend on the clef. We can't use the wk_cont versions because they are not updated until after we know which bars are to be included in this system. */ for (i = 1; i <= curmovt->laststave; i++) pl_sysclef[i] = pl_sysblock->cont[i].clef; /* Finished with any overbeam structures (this loses memory that could potentially be re-used, but it isn't huge, and is probably also rare). Also set default underlay and overlay values. */ for (i = 0; i <= curmovt->laststave; i++) { wk_cont[i].overbeam = NULL; pl_ulhere[i] = pl_olhere[i] = 0; pl_sysblock->ulevel[i] = -(pl_ulaysize + 1000); pl_sysblock->olevel[i] = 20000; } /* Update the current clef and key/time signatures if necessary */ setsignatures(); /* Initialize those fields of the current data structure that are reset for each system */ accepteddata->endkey = FALSE; accepteddata->endtime = FALSE; accepteddata->endbar = pl_barnumber - 1; accepteddata->count = 0; /* Save the initial notespacing so that it can be restored for re-spacing bars when there's a big stretch factor. */ memcpy(save_note_spacing, accepteddata->note_spacing, NOTETYPE_COUNT * sizeof(int32_t)); /* If all existing selected staves are suspended (can happen during part extraction with the use of [newline] or with S! bars) unsuspend the lowest numbered selected stave. If any staves get resumed in the system, this gets undone again later. */ if (curmovt->laststave > 0) /* Movement has some selected staves */ { if ((pl_sysblock->notsuspend & curmovt->select_staves & pl_allstavebits) == 0) { uint64_t bit = 2; for (int k = 1; k <= curmovt->laststave; k++) { if ((curmovt->select_staves & bit) != 0) break; bit <<= 1; } pl_sysblock->notsuspend |= bit; } } /* Find the starting position of the stave */ accepteddata->startxposition = startwidth(accepteddata, pl_stavemap, pl_sysblock->notsuspend); /* Compute position for key signatures. We make them all line up vertically. For the moment, the value generated is relative to startxposition. */ pl_sysblock->keyxposition = 0; for (i = 1; i <= curmovt->laststave; i++) { stavestr *ss = curmovt->stavetable[i]; if ((pl_stavemap & pl_sysblock->notsuspend & (1Lu << i)) != 0 && (!ss->omitempty || ss->barindex[pl_barnumber] != NULL)) { int32_t xpos = (curmovt->clefwidths[(pl_sysblock->cont[i]).clef] * curmovt->stavesizes[i]) + curmovt->startspace[0]; if (xpos > pl_sysblock->keyxposition) pl_sysblock->keyxposition = xpos; } } /* Compute the relative position of the time signature relative to the key signature by finding the widest time key signature. */ pl_sysblock->timexposition = 0; for (i = 1; i <= curmovt->laststave; i++) { if ((pl_stavemap & pl_sysblock->notsuspend & (1Lu << i)) != 0) { uint8_t key = (pl_sysblock->cont[i]).key; int32_t xpos = (misc_keywidth(key, pl_sysblock->cont[i].clef) * curmovt->stavesizes[i])/1000; if (xpos > pl_sysblock->timexposition) pl_sysblock->timexposition = xpos; } } /* If at least one key signature is not empty, insert extra space before the key position. */ if (pl_sysblock->timexposition != 0) pl_sysblock->keyxposition += curmovt->startspace[1]; /* Make the time signature position relative to startxposition. */ pl_sysblock->timexposition += pl_sysblock->keyxposition; /* When there are no clefs or key signatures, put a little bit of space before the time signature or first note. */ if (pl_sysblock->timexposition == 0) pl_sysblock->timexposition += 2000; /* Find the widest time signature that is to be shown. */ for (i = 1; i <= curmovt->laststave; i++) { if ((pl_stavemap & pl_sysblock->notsuspend & pl_showtimes & (1Lu << i)) != 0) { int32_t tw = (misc_timewidth((pl_sysblock->cont[i]).time) * curmovt->stavesizes[i])/1000; if (tw > timewidth) timewidth = tw; } } /* If any time signature is to be shown, add in the configured extra space beforehand. */ if (timewidth != 0) pl_sysblock->timexposition += curmovt->startspace[2]; /* Preserve the show-time-signatures setting for this system, and reset to none for the next one. */ pl_sysblock->showtimes = pl_showtimes; pl_showtimes = 0; /* Set the first note position. */ pl_sysblock->firstnoteposition = pl_sysblock->timexposition + timewidth + PAGE_LEFTBARSPACE + curmovt->startspace[3]; /* The xposition is an absolute position, used during calculations. */ accepteddata->xposition = accepteddata->startxposition + pl_sysblock->firstnoteposition; /* Initialize start of line flags */ pl_startlinebar = TRUE; /* becomes FALSE after one acceptance */ pl_lastendwide = FALSE; /* at start of line */ pl_lastenddouble = FALSE; /* ditto */ /* Enter the mid-system state. */ page_state = page_state_insystem; break; /****************************************************************************/ /****************************************************************************/ /* In the middle of a system - measure the next bar and see if it will fit. It it doesn't, and it starts with a key or time signature and there is not even enough room for that, we have to back off from accepting the previous bar. When the system is full, change state again. */ case page_state_insystem: /* Make copy of current status for makepostable() to update */ *nextdata = *accepteddata; /* Measure the bar -- this also sets various flags such as pl_warnkey and also sets pl_xxwidth if there is a key and/or time signature. The lengthwarn variable is normally zero (or less), but is set to 1 after the end of a system so that re-measuring the bar, for the next system, doesn't give a length warning again. If we back up two bars, in order to fit in a key/time signature, lengthwarn is set to 2. */ nextbarwidth = makepostable(lengthwarn-- < 1); /* Compute position if bar were accepted */ xposition = accepteddata->xposition + nextbarwidth; /* If a stave has been resumed in this bar, or if a stave name has changed, it may be necessary to change the width of the stave name space (i.e. nextdata->startxposition). This may make the bar unacceptable. We must also check the clef of the resumed stave, if it has a bar to print at the start of the system, because a wider clef will alter the position of the key signature. Likewise the key signature of the resumed stave, because a wider key signature will alter the position of the time signature. */ adjustkeyposition = 0; adjusttimeposition = 0; if (nextdata->notsuspend != accepteddata->notsuspend || nextdata->stavenames != accepteddata->stavenames) { int32_t newkeyxposition = 0; int32_t newtimexposition = 0; /* Deal with stave names */ int32_t newstartx = startwidth(nextdata, pl_stavemap, nextdata->notsuspend); nextdata->startxposition = newstartx; xposition += newstartx - accepteddata->startxposition; /* Deal with change of key signature position */ for (i = 1; i <= curmovt->laststave; i++) { stavestr *ss = curmovt->stavetable[i]; if (mac_isbit2(pl_stavemap, nextdata->notsuspend, i) && (!ss->omitempty || ss->barindex[pl_sysblock->barstart] != NULL)) { int clef = (pl_sysblock->cont[i]).clef; int key = (pl_sysblock->cont[i]).key; int xp = curmovt->clefwidths[clef] * curmovt->stavesizes[i] + curmovt->startspace[0]; if (xp > newkeyxposition) newkeyxposition = xp; xp = newkeyxposition + (curmovt->stavesizes[i] * misc_keywidth(key, clef))/1000; if (xp > newtimexposition) newtimexposition = xp; } } if (newkeyxposition > pl_sysblock->keyxposition) { adjustkeyposition = newkeyxposition - pl_sysblock->keyxposition; xposition += adjustkeyposition; } if (newtimexposition > pl_sysblock->timexposition + adjustkeyposition) { adjusttimeposition = newtimexposition - pl_sysblock->timexposition - adjustkeyposition; xposition += adjusttimeposition; } } /* Default overrun is "infinity" */ pl_sysblock->overrun = INT32_MAX; /* If this is not the first bar on the line, see if it will fit. We always accept one bar - it gets squashed (with a warning). If a fixed layout has been specified, accept bars until we have one more than required. This test is for an unacceptable bar. */ if ((layoutptr < 0 && accepteddata->count > 0 && xposition > curmovt->linelength) || (layoutptr >= 0 && accepteddata->count >= curmovt->layout[layoutptr])) { int32_t overrun = xposition - curmovt->linelength; lengthwarn = 1; /* Don't warn when we reprocess the bar */ /* See if cautionary signature(s) are needed. */ if (!pl_startlinebar && (pl_warnkey || pl_warntime)) { xposition = accepteddata->xposition + pl_xxwidth; /* If there is not even enough space for the end-of-line signature(s), back up to the previous bar, unless there isn't one to back up to, in which case give an overlong line warning. */ if (layoutptr < 0 && xposition > curmovt->linelength) { if (accepteddata->count > 1) { pagedatastr *temp = prevdata; prevdata = accepteddata; accepteddata = temp; pl_barnumber -= lastbarcountbump; overrun = xposition - curmovt->linelength; lengthwarn++; /* Two bars not to warn for */ } else { error(ERR130); overrun = INT32_MAX; } } /* Room for key/time -- set flag(s) and xposition */ else { accepteddata->xposition = xposition + pl_barlinewidth; accepteddata->endkey = pl_warnkey; accepteddata->endtime = pl_warntime; } } /* Set up the overrun value; round to 0.5 points */ pl_sysblock->overrun = ((overrun + 499)/500) * 500; /* In all cases we've finished the system */ page_state = page_state_donesystem; } /* There is room on the line for this bar, or it is the first bar on the line, so accept it. Give a warning for an overflowing single bar, which will be squashed to fit. */ else { pagedatastr *temp = prevdata; prevdata = accepteddata; accepteddata = nextdata; nextdata = temp; if (accepteddata->count == 0 && xposition > curmovt->linelength) { error(ERR131, sff(nextbarwidth), sff(xposition - nextbarwidth), sff(curmovt->linelength)); } /* If this bar starts with a key or time change, then bump the previous x position to account for it, as that will be what happens if we have to back off. */ if (pl_xxwidth > 0 && !pl_startlinebar) { prevdata->xposition += pl_xxwidth + pl_barlinewidth; prevdata->endkey = pl_warnkey; prevdata->endtime = pl_warntime; } else { prevdata->endkey = FALSE; prevdata->endtime = FALSE; } /* Allow for key & time signature positioning adjustment */ if (adjustkeyposition || adjusttimeposition) { pl_sysblock->keyxposition += adjustkeyposition; pl_sysblock->timexposition += adjustkeyposition + adjusttimeposition; pl_sysblock->firstnoteposition += adjustkeyposition + adjusttimeposition; } /* Update xposition, endbar number, and counts. The value of pl_manyrest is 0 for a non-rest bar, 1 for a single rest bar, and 2 or more for a sequence of rest bars. */ accepteddata->xposition = xposition + pl_barlinewidth; lastbarcountbump = (pl_manyrest >= 2)? pl_manyrest : 1; accepteddata->endbar += lastbarcountbump; pl_barnumber += lastbarcountbump; curbarnumber = pl_barnumber; accepteddata->count++; /* Count printed bars */ pl_startlinebar = FALSE; /* No longer first in system */ /* The end of the movement perforce ends the system. */ if (pl_barnumber >= curmovt->barcount) page_state = page_state_donesystem; } break; /****************************************************************************/ /****************************************************************************/ /* Completed a system - tidy the data structures and see if it fits onto the current page. The positions at the start of the line can be made absolute now that the starting xposition is known. We also perform the stretching operation on the position tables in the bars at this point. */ case page_state_donesystem: pl_sysblock->stavenames = accepteddata->stavenames; pl_sysblock->barend = accepteddata->endbar; /* If there are no unsuspended staves (that is, all staves are suspended) in the accepted data, leave the sysblock alone, as it will have had one stave forced into it. Otherwise, overwrite with the accepted value, thereby turning off the fudged stave if there was one. */ if ((accepteddata->notsuspend & curmovt->select_staves & pl_allstavebits) != 0) pl_sysblock->notsuspend = accepteddata->notsuspend; /* Fix various initial positions */ pl_sysblock->startxposition = accepteddata->startxposition; pl_sysblock->joinxposition = accepteddata->startxposition; pl_sysblock->keyxposition += accepteddata->startxposition; pl_sysblock->timexposition += accepteddata->startxposition; pl_sysblock->firstnoteposition += accepteddata->startxposition; if (accepteddata->endkey) pl_sysblock->flags |= sysblock_warnkey; if (accepteddata->endtime) pl_sysblock->flags |= sysblock_warntime; /* Advance the continuation data to the end of the system, ready for the next one. This scan also handles changes of stave and system spacing, and local justification. Because we do not yet know if this system is going to fit on the page, any vertical justification changes that it makes are placed in pl_sys_xxx variables. We initialize them to negative numbers to detect changes. There is an unfortunate chicken-and-egg situation here. We need to set the barlinewidth, as it is used when computing beam slopes for beams that cross barlines. It should really be set to the stretched value, but we can't compute the stretching factor until we've done the barcont stuff, in order to know if we have to justify or not. We cheat by setting it to the unstretched value and hoping that is near enough... */ pl_sysblock->barlinewidth = barlinewidth = pl_barlinewidth; pl_sys_topmargin = pl_sys_botmargin = pl_sys_justify = -1; /* The setcont() function also collects footnotes and system notes. Initialize the variables before calling it. */ pl_newfootnotes = NULL; pl_newfootnotedepth = 0; setcont(); /* Set up the xposition of the end of the line and the justify bits, and compute the spreading parameters. We spread if the line is wider than a proportion of the linewidth as set by the stretchthresh variables, or if it's too long (when the "spreading" is actually squashing). Note that left/right justification bits are taken from this system's flags, if there were any. */ xposition = accepteddata->xposition - barlinewidth; justbits = pl_justifyLR & just_horiz; /* Left + right justification */ if ((justbits == just_horiz && xposition - pl_sysblock->startxposition > (STRETCHTHRESHNUM * (curmovt->linelength - pl_sysblock->startxposition)) / STRETCHTHRESHDEN) || xposition > curmovt->linelength) { int32_t save_xxwidth = pl_xxwidth; int32_t xxadjust = pl_sysblock->firstnoteposition + ((accepteddata->endkey || accepteddata->endtime)? pl_xxwidth + barlinewidth : 0); stretchn = curmovt->linelength - xxadjust; stretchd = xposition - xxadjust; pl_sysblock->xjustify = 0; pl_sysblock->flags |= sysblock_stretch; /* If the stretching factor is large enough, throw away the position tables and re-format all the bars using the known stretching factor. They should not get any wider. Then compute revised stretching factors. Repeat if necessary, up to 4 times. Note that we have to keep re-stretching the barlinewidth. From release 4.22 we also do this when the stretching is actually squashing by a large enough amount, which can happen when the layout directive forces more bars onto a line than would normally fit. This is necessary when there is underlay, where words might crash when a bar is squashed. (While testing this, it turns out that the squashing version also sometimes kicks in after a stretching time round the loop, which sometimes overdoes things, it seems. It does no harm.) */ pl_stretchn = stretchn; pl_stretchd = stretchn; /* sic - see below - it changes cumulatively */ i = 0; while (i++ < 4 && ( (mac_muldiv(stretchd, 1000, stretchn) > STRETCHRESPACETHRESH) || (mac_muldiv(stretchn, 1000, stretchd) > STRETCHRESPACETHRESH) )) { int j; pl_stretchd = mac_muldiv(pl_stretchd, stretchd, stretchn); xposition = pl_sysblock->firstnoteposition; pl_startlinebar = TRUE; /* becomes FALSE after one acceptance */ pl_lastendwide = FALSE; /* at start of line */ pl_lastenddouble = FALSE; /* ditto */ barlinewidth = mac_muldiv(barlinewidth, stretchn, stretchd); memcpy(nextdata->note_spacing, save_note_spacing, NOTETYPE_COUNT * sizeof(int32_t)); /* Reset clefs at system start */ for (j = 1; j <= curmovt->laststave; j++) pl_sysclef[j] = pl_sysblock->cont[j].clef; for (pl_barnumber = pl_sysblock->barstart; pl_barnumber <= pl_sysblock->barend; pl_barnumber++) { curbarnumber = pl_barnumber; xposition += makepostable(FALSE) + barlinewidth; pl_startlinebar = FALSE; if (pl_manyrest >= 2) pl_barnumber += pl_manyrest - 1; } xposition -= barlinewidth; if (accepteddata->endkey || accepteddata->endtime) xposition += save_xxwidth + curmovt->barlinespace; /* Unstretched barlinewidth */ stretchd = xposition - xxadjust; if (main_tracepos == INT32_MAX || (pl_sysblock->barstart <= main_tracepos && pl_sysblock->barend >= main_tracepos)) { eprintf("-------------------------\n"); eprintf("REDO BARS %d-%d old=%d new=%d cycles=%d\n", pl_sysblock->barstart, pl_sysblock->barend, mac_muldiv(pl_stretchn, 1000, pl_stretchd), mac_muldiv(stretchn, 1000, stretchd), i); } } /* End up to 4 times loop */ } /* End left+right justification */ /* Deal with right only or no justification */ else { stretchn = stretchd = 1; if ((justbits & just_left) == 0) { int32_t xjustify = curmovt->linelength - xposition; if (justbits == 0) xjustify /= 2; pl_sysblock->xjustify = xjustify; } else pl_sysblock->xjustify = 0; } /* The barline width for the system is the final stretched value. */ pl_sysblock->barlinewidth = mac_muldiv(barlinewidth, stretchn, stretchd); /* Now apply the stretching operation to the bars in the system. Key and time signatures and left repeats at the start of a bar are not stretched. Grace notes are kept at the same distance from their successors. */ for (i = pl_sysblock->barstart; i <= pl_sysblock->barend; i++) { barposstr *bp = curmovt->posvector + i; posstr *p = bp->vector; int count = bp->count; /* If this is the first bar of a multi-rest, make a correction to the value of i to skip the others. */ i += bp->multi - 1; /* Skip over any clefs, key signatures or time signatures at the start of the bar. For big stretches, it is in fact not enough to do this, as the stretched barlinewidth can make their positioning look silly. We move them to the left in this case. This is probably less relevant now that we re-lay-out lines to get the stretching factor down. */ /***** PRO TEM remove fix to retain previous state pending revised stretching. In this state, clefs are not tested here (they don't normally occur at line starts). We need a revised stretching algorithm to keep the first note fixed even after clefs, keys, and times. ****/ if ((p->moff <= posx_timelast && p->moff >= posx_keyfirst)) /*** || p->moff == posx_clef) ***/ { int n = 9; while ((count > 0 && p->moff >= posx_keyfirst && p->moff <= posx_timelast) || p->moff == posx_clef) { p->xoff -= ((pl_sysblock->barlinewidth - pl_barlinewidth)*n)/10; if (n > 2) n -= 2; p++; count--; } } /* Else skip over any grace notes and accidentals, and also the first note, which we do not want to move. But if there is nothing in the bar, don't skip over the first (= last) item. */ else { while (count > 0 && p->moff < 0) { p++; count--; } if (count > 1) { p++; count--; } } /* Now stretch the remaining items, dealing specially with grace notes, which are identified by finding the next full note and checking the offset. Also deal specially with clefs. */ while (count-- > 0) { int old; posstr *pp = p; while (count > 0 && (pp+1)->moff - pp->moff <= -posx_max) { pp++; count--; } old = pp->xoff; pp->xoff = mac_muldiv(pp->xoff, stretchn, stretchd); while (p < pp) { int32_t d = -(pp->moff - p->moff); int32_t rightmost = p->xoff + pp->xoff - old; int32_t leftmost = mac_muldiv(p->xoff, stretchn, stretchd); /* Clef positions are stretched just a bit if they are the last thing in the bar. Otherwise, the position used is halfway between an unstretched and stretched position. */ if (d == posx_clef) p->xoff = (count == 0)? rightmost - (rightmost - leftmost)/5 : (rightmost+leftmost)/2; /* Grace notes are never stretched at all; other things are stretched a bit, but not the full amount. */ else if (d >= posx_gracefirst && d <= posx_gracelast) p->xoff = rightmost; else p->xoff = (rightmost + leftmost)/2; p++; } p++; } if (main_tracepos == INT32_MAX || main_tracepos == pl_barnumber) { p = bp->vector; count = bp->count; eprintf("-------------------------\n"); eprintf("BAR %d (%s) STRETCHED POSITIONS:\n", i, sfb(curmovt->barvector[i])); while (count-- > 0) { eprintf("%8d %6d\n", p->moff, p->xoff); p++; } } } /* End of loop to stretch bars */ /* If this was the first system of a movement, reset the stave name structure to use the second name, or NULL if there isn't one. Also, if an indent is set for the brackets and braces, adjust the position of the joining signs. */ if (firstsystem) { int j; firstsystem = FALSE; accepteddata->stavenames = mem_get((MAX_STAVE + 1) * sizeof(snamestr *)); for (j = 1; j <= curmovt->laststave; j++) { snamestr *sn = ((curmovt->stavetable)[j])->stave_name; accepteddata->stavenames[j] = (sn != NULL)? sn->next : NULL; } if (curmovt->startbracketbar > 0 && curmovt->startbracketbar <= pl_sysblock->barend) { int32_t blw = 0; pl_sysblock->joinxposition = pl_sysblock->firstnoteposition; for (i = pl_sysblock->barstart; i < curmovt->startbracketbar; i++) { barposstr *bp = curmovt->posvector + i; if (bp->count > 0) pl_sysblock->joinxposition += (bp->vector)[bp->count-1].xoff + blw; blw = pl_sysblock->barlinewidth; } } } /* Check that the stavespacing vector conforms to the ensure values, and if not, make a new one that does. At the same time, compute the total depth of the system. If an unsuspended stave has a zero stave spacing, make sure that the following stave is not suspended. */ sysdepth = lastulevel = 0; for (i = 1; i <= curmovt->laststave; i++) { if (mac_isbit2(pl_stavemap, pl_sysblock->notsuspend, i)) { int j = i; int next = i+1; while (j < curmovt->laststave && pl_sysblock->stavespacing[j++] == 0) mac_setbit(pl_sysblock->notsuspend, j); while (next <= curmovt->laststave && mac_notbit2(pl_stavemap, pl_sysblock->notsuspend, next)) next++; if (next <= curmovt->laststave) { if (pl_sysblock->stavespacing[i] < pl_ssehere[next]) { if (pl_sysblock->stavespacing == pl_ssnext) { pl_sysblock->stavespacing = mem_get((MAX_STAVE+1)*sizeof(int32_t)); memcpy(pl_sysblock->stavespacing, pl_ssnext, (curmovt->laststave + 1) * sizeof(int32_t)); } pl_sysblock->stavespacing[i] = pl_ssehere[next]; } sysdepth += pl_sysblock->stavespacing[i]; } lastulevel = pl_sysblock->ulevel[i]; } } pl_sysblock->systemdepth = sysdepth; /* Compute a testing depth consisting of the system depth plus the total depth of any footnotes, and space below the current system. And space between the current footnotes and any new ones. */ sysfootdepth = sysdepth + pl_pagefootnotedepth + pl_newfootnotedepth; if (pl_pagefootnotedepth + pl_newfootnotedepth > 0) { sysfootdepth += -lastulevel; if (pl_pagefootnotedepth > 0 && pl_newfootnotedepth > 0) sysfootdepth += curmovt->footnotesep; } /* If this system is deeper than the page depth, we can't handle it. After the error, it will cause a new page to be started, but it will never be printed. */ if (sysfootdepth > main_pagelength) { int32_t overflow = sysfootdepth - main_pagelength; error(ERR134, sfb(curmovt->barvector[pl_sysblock->barstart]), movtnumber, sff(overflow), (overflow == 1000)? "" : "s"); } /* If we have a new movement pending, find the depth of the headings and see if the headings plus this system will fit on the current page. If the system depth is zero, we have a single-stave system, in which case we insist on there being room for another one as well. */ if (movt_pending) { headstr *h = curmovt->heading; int32_t depth = (h == NULL)? 0 : 17000; while (h != NULL) { depth += h->space; h = h->next; } depth += (sysfootdepth == 0)? pl_sysblock->systemgap : sysfootdepth; /* If no room, terminate the page and start a new one. We must arrange that footings are printed from the *previous* movement, but take the option for lastfooting and pageheading from the *current* movement. Note that movtnumber starts at 1, but the vector starts at 0. */ if (curpage->spaceleft < depth) { BOOL uselastfooting = MFLAG(mf_uselastfooting); /* From curmovt */ curmovt = movements[movtnumber - 2]; do_endpage(uselastfooting); curmovt = movements[movtnumber - 1]; do_newpage(curmovt->heading, MFLAG(mf_nopageheading)? NULL : curmovt->pageheading); } /* There is room: output the new heading on this page, and set the justification parameters from the new movement. (The horizontal ones will have been set already, but the vertical ones can't be changed until the page is known.) We also change the bottom margin, but leave the top margin until the next page. */ else { pl_justify = curmovt->justify; pl_botmargin = curmovt->bottommargin; if (curmovt->heading != NULL) { do_pageheading(curmovt->heading); curpage->spaceleft -= 17000; } } /* Set up a new footing, if present. Note that if there isn't one, and we didn't start a new page, and there is one still set up from the previous movement already (in pagefooting), then it will still get printed at the bottom of this page. */ if (curmovt->footing != NULL) pl_pagefooting = curmovt->footing; /* Cancel pending flag */ movt_pending = FALSE; } /* If this system does not fit on the page, start a new one. */ if (curpage->spaceleft < sysfootdepth) { curpage->overrun = sysfootdepth - curpage->spaceleft; do_endpage(FALSE); do_newpage(NULL, curmovt->pageheading); } /* Connect the system to the chain and keep count of the number of vertically spreadable systems on the page. */ *pl_sysprevptr = pl_sysblock; pl_sysprevptr = &(pl_sysblock->next); pl_countsystems++; /* If there were any footnotes, connect them to the page's footnote list for inclusion at the end. Save the current spacing value for use if the page does actually end here. */ if (pl_newfootnotes != NULL) { if (pl_pagefootnotes == NULL) pl_pagefootnotes = pl_newfootnotes; else { lastfootnote->next = pl_newfootnotes; pl_newfootnotes->spaceabove = curmovt->footnotesep; pl_pagefootnotedepth += curmovt->footnotesep; } lastfootnote = pl_lastnewfootnote; pl_pagefootnotedepth += pl_newfootnotedepth; } pl_footnotespacing = -lastulevel; /* Update the space left on the page; just take off the space for the music (the system), not the footnotes. They will be considered again with the next system. */ curpage->spaceleft -= sysdepth + pl_sysblock->systemgap; pl_lastsystem = pl_sysblock; /* Update the vertical justification parameters if they changed in this system. */ if (pl_sys_justify != -1) pl_justify = pl_sys_justify; if (pl_sys_topmargin != -1) pl_topmargin = pl_sys_topmargin; if (pl_sys_botmargin != -1) pl_botmargin = pl_sys_botmargin; /* If we have an explicit layout, deal with advancing the pointer and checking for a forced new page. */ if (layoutptr >= 0) { layoutptr++; for (;;) { while (curmovt->layout[layoutptr] == lv_newpage) { layoutptr++; if (pl_barnumber < curmovt->barcount) pl_newpagewanted = TRUE; } if (curmovt->layout[layoutptr] == lv_repeatptr) { if ((layoutstack[layoutstackptr-1] -= 1) > 0) layoutptr = curmovt->layout[layoutptr+1]; else { layoutstackptr--; layoutptr += 2; } } else { while (curmovt->layout[layoutptr++] == lv_repeatcount) layoutstack[layoutstackptr++] = curmovt->layout[layoutptr++]; break; } } } /* If a new page was forced after this system, set it up. This can only happen via [newpage] if there are more bars; hence it can't also be a movement end. Via explicit layout, it is also only set if there are more bars. */ if (pl_newpagewanted) { do_endpage(FALSE); do_newpage(NULL, curmovt->pageheading); } /* Change state, either to process the next system, or to handle the end of the movement. */ page_state = (pl_barnumber >= curmovt->barcount)? page_state_donemovt : page_state_newsystem; break; /****************************************************************************/ /****************************************************************************/ /* Completed a movement. Deal with the end of the whole piece or with starting a subsequent movement. */ case page_state_donemovt: misc_tidycontstr(wk_cont, curmovt->laststave); if (movtnumber++ >= movement_count) { do_endpage(TRUE); page_done = TRUE; } /* There is another movement to follow. If it contains no staves, we must deal with the headings here. */ else { movtstr *nextmovt = movements[movtnumber - 1]; uint32_t movt_type = nextmovt->flags & mf_typeflags; /* Deal with the case of no staves in the movement; we must decide now whether or not it fits on the page if none of newpage, thispage, or thisline is specified. Only one of these flags is ever set. */ if (nextmovt->barcount < 1 && movt_type == 0) { headstr *h = nextmovt->heading; int32_t depth = 0; while (h != NULL) { depth += h->space; h = h->next; } movt_type = (curpage->spaceleft < depth)? mf_newpage : mf_thispage; } /* Handle new page; set page_heading NULL to prevent any heading output, which will be done by the start-of-movt code. */ if (movt_type == mf_newpage) { do_endpage((nextmovt->flags & mf_uselastfooting) != 0); curmovt = nextmovt; do_newpage(NULL, NULL); } /* If newpage is not set, we can't decide whether to start a new page until after the next system has been read. We just set a flag for the work to be done then. For the very special case of "thisline", we remove and vertical advance from the last system. Another system of the same depth will then always fit. We must also reduce the count of spreadable systems, since this one should not get additional space added to it! */ else { curmovt = nextmovt; if (movt_type == mf_thisline && pl_lastsystem != NULL) { curpage->spaceleft += pl_lastsystem->systemdepth + pl_lastsystem->systemgap; pl_lastsystem->flags |= sysblock_noadvance; pl_countsystems--; } if (movt_type != mf_thispage) movt_pending = TRUE; } /* Change state */ page_state = page_state_newmovt; } break; } TRACE("paginate() end\n\n"); } /* End of paginate.c */ pmw-5.22/src/transpose.c0000644000222100022210000003612114541067540013315 0ustar ph10ph10/************************************************* * PMW transposing functions * *************************************************/ /* Copyright Philip Hazel 2021 */ /* This file created: February 2021 */ /* This file last modified: June 2022 */ #include "pmw.h" /* These tables specify whether a requested transposed accidental can actually be used. The first five specify which note pitches can be expressed using the given accidental. The sixth table selects between the first five tables according to the requested transposed accidental. At present, half accidentals can never be used. */ static uschar sharpable[] = { /* C C#- C# D$- D D#- D# E$- E */ TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, /* E#- F F#- F# G$- G G#- G# A$- */ FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, /* A A#- A# B$- B B#- */ FALSE, FALSE, TRUE, FALSE, FALSE, FALSE }; static uschar flatable[] = { /* C C#- C# D$- D D#- D# E$- E */ FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, /* E#- F F#- F# G$- G G#- G# A$- */ FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, /* A A#- A# B$- B B#- */ FALSE, FALSE, TRUE, FALSE, TRUE, FALSE }; static uschar dsharpable[] = { /* C C#- C# D$- D D#- D# E$- E */ FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, /* E#- F F#- F# G$- G G#- G# A$- */ FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, /* A A#- A# B$- B B#- */ TRUE, FALSE, FALSE, FALSE, TRUE, FALSE }; static uschar dflatable[] = { /* C C#- C# D$- D D#- D# E$- E */ TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, /* E#- F F#- F# G$- G G#- G# A$- */ FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, /* A A#- A# B$- B B#- */ TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }; static uschar naturalable[] = { /* C C#- C# D$- D D#- D# E$- E */ TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, /* E#- F F#- F# G$- G G#- G# A$- */ FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, /* A A#- A# B$- B B#- */ TRUE, FALSE, FALSE, FALSE, TRUE, FALSE }; static uschar *able[] = { NULL, naturalable, NULL, sharpable, dsharpable, NULL, flatable, dflatable }; /* These tables are used when transposing a note according to the number of letter changes in the transposed key signature. */ static uint8_t tp_forward_offset[] = { 2, 0, 4, 0, 5, 7, 0, 9, 0, 11, 0, 0 }; static uint8_t tp_forward_pitch[] = { 2, 0, 2, 0, 1, 2, 0, 2, 0, 2, 0, 1 }; static uint8_t tp_reverse_offset[] = { 11, 0, 0, 0, 2, 4, 0, 5, 0, 7, 0, 9 }; static uint8_t tp_reverse_pitch[] = { 1, 0, 2, 0, 2, 1, 0, 2, 0, 2, 0, 2 }; /* This table gives the accidental to use for a given offset from a note. The values are offset by 4. The "three-quarters" values should never be used. */ static uint8_t tp_newacc[] = { ac_df, 0, ac_fl, ac_hf, ac_nt, ac_hs, ac_sh, 0, ac_ds }; /* Table of key transpositions. Each entry in the table gives the new key for an upward transposition of one semitone. The zero entries for non-existant keys should never be accessed. */ static uschar tp_keytable[] = { /* A B C D E F G */ 15, 2, 17, 18, 5, 20, 14, /* 0 - 6 natural */ 0, 0, 3, 0, 0, 6, 0, /* 7 - 13 sharp */ 0, 1, 2, 3, 4, 5, 6, /* 14 - 20 flat */ 36, 23, 30, 39, 26, 33, 34, /* 21 - 27 minor */ 22, 0, 24, 25, 0, 27, 21, /* 28 - 34 sharp minor */ 21, 22, 23, 24, 25, 25, 26 }; /* 35 - 41 flat minor */ /* Table of enharmonic keys; the first of each pair is a key that is never automatically selected (i.e. is not in the above table); the second is the equivalent. */ static uschar enh_keytable[] = { 16, 1, /* C$ = B% */ 9, 17, /* C# = D$ */ 12, 20, /* F# = G$ */ 35, 34, /* A$m = G#m */ 31, 39, /* D#m = E$m */ 28, 36, /* A#m = B$m */ 255 }; /* Marks end */ /************************************************* * Transpose a note * *************************************************/ /* This function is called when reading a note, and also when processing a string that contains note (chord) names. The amount by which to transpose is set in active_transpose. Arguments: abspitch the absolute pitch pitch the normal pitch (updated) acc the accidental value (updated) transposeacc if not 0, accidental required transposedaccforce retain accidental, even if implied by new key note_set_taf transposedaccforce was set by the note acc_onenote TRUE if accidental is printed above/below, and hence applies only to a single note texttranspose TRUE if transposing a note name in text tiedcount < 0 if note is not tied, else note number in a tie Returns: the transposed absolute pitch the transposed pitch in *pitch the transposed accidental in *acc */ int16_t transpose_note(int16_t abspitch, int16_t *pitch, uint8_t *acc, uint8_t transposeacc, BOOL transposedaccforce, BOOL note_set_taf, BOOL acc_onenote, BOOL texttranspose, int tiedcount) { int newpitch; usint newacc; /* First, transpose the absolute pitch */ abspitch += active_transpose; /* If a particular accidental is requested, and the new note is suitable, use it. */ if (transposeacc != ac_no && able[transposeacc][abspitch%24]) { newacc = transposeacc; newpitch = abspitch - read_accpitch[newacc]; } /* Otherwise we must change the note letter by the same amount as the note letter of the key signature has changed. We know that the value of pitch is always that of a "white" note. Therefore, we can work with offsets in the range 0-11 instead of 0-23, which makes for smaller tables. */ else { int i = active_transpose_letter; int offset, note_offset; newpitch = *pitch; offset = (newpitch%24)/2; if (i >= 0) { while (i-- > 0) { newpitch += 2 * tp_forward_pitch[offset]; offset = tp_forward_offset[offset]; } } else { while (i++ < 0) { newpitch -= 2 * tp_reverse_pitch[offset]; offset = tp_reverse_offset[offset]; } } /* Allow for >= octave transposition. */ while (newpitch <= abspitch - 24) newpitch += 24; while (newpitch >= abspitch + 24) newpitch -= 24; /* Now set offset to the difference between the true pitch and the pitch of the written note without an accidental. For transpositions around an octave we may have to correct for wraparound effects. */ offset = abspitch - newpitch; if (offset >= 20) { offset -= 24; newpitch += 24; } else if (offset <= -20) { offset += 24; newpitch -= 24; } /* This is the offset within the octave. */ note_offset = newpitch % 24; /* Transposition of half accidentals may result in three-quarter accidentals. As there are no such beasts, we must convert to the adjacent note with a half accidental. There are also some rare cases when the offset ends up as 6 or -6 (i.e. 3 semitones): (1) Double accidentals are involved. For example, C-double-flat cannot be transposed by +1 when the letter change derived from the key signature is also +1 because B cannot be represented as some accidental applied to D. (2) A note is specified using an unexpected accidental. For example, if G$ is used in the key of E major, transposed up by 2 semitones to G-flat major. The note should end up as A$, but the algorithm above wants it to be offset from B because the key letter has changed by 2. Most probably these situations will never arise in practice, but just in case be prepared to adjust things. */ if (offset == -3 || offset == -6) /* Downward accidental */ { if (note_offset == 0 || note_offset == 10) /* C or F */ { newpitch -= P_T/2; offset += 2; } else { newpitch -= P_T; offset += 4; } } else if (offset == 3 || offset == 6) /* Upward accidental */ { if (note_offset == 8 || note_offset == 22) /* E or B */ { newpitch += P_T/2; offset -= 2; } else { newpitch += P_T; offset -= 4; } } /* This double-check caught some bugs in the past for auto-selected letter changes. The maximum accidental offset is 4 quarter tones. */ if (offset > 4 || offset < (-4)) { if (active_transpose_letter_is_auto) error(ERR71, *pitch, *acc, abspitch, newpitch); /* Hard */ else { error(ERR72, active_transpose_letter, active_transpose); /* Hard */ } } /* The value of offset is now in the range -4 to +4 (number of quarter tones from the plain note), though +3 and -3 should be unused. */ newacc = tp_newacc[offset+4]; } /* We now have the new pitch and its accidental. If we are transposing an actual note, as opposed to a note name in some text, there is extra work to do on the accidental. */ if (!texttranspose) { int newaccpitch; int impliedacc; BOOL keyNomit = FALSE; /* When the key is N (C major but never transposed) there are special rules for adjusting accidentals, as the default note transposing rules assume the result will have a key signature. Double sharps and flats are retained only if they were in the input; C-flat, B-sharp, E-sharp, and F-flat are converted to enharmonic notes unless the input was also a similar "white-note" sharp or flat. */ if (srs.key == key_N) { int note_offset = newpitch%24; int old_offset = (*pitch)%24; BOOL isEorB = note_offset == 8 || note_offset == 22; BOOL isCorF = note_offset == 0 || note_offset == 10; BOOL old_isEorB = old_offset == 8 || old_offset == 22; BOOL old_isCorF = old_offset == 0 || old_offset == 10; switch (newacc) { case ac_ds: if (*acc != ac_ds) { if (isEorB) { newpitch += P_T/2; newacc = ac_sh; } else { newpitch += P_T; newacc = ac_nt; } } break; case ac_df: if (*acc != ac_df) { if (isCorF) { newpitch -= P_T/2; newacc = ac_fl; } else { newpitch -= P_T; newacc = ac_nt; } } break; case ac_sh: if (isEorB && !old_isEorB) { newpitch += P_T/2; newacc = ac_nt; } break; case ac_fl: if (isCorF && !old_isCorF) { newpitch -= P_T/2; newacc = ac_nt; } break; } /* In key N, we normally want to omit all redundant accidentals except for a natural at the first non-tied note of a bar. */ if ((*acc != ac_nt || !brs.firstnontied) && (!transposedaccforce || !note_set_taf)) keyNomit = TRUE; } /* Handle implied accidental. If this accidental is already implied, and there was no accidental in the input or if the force option is unset, or if special key N conditions apply, cancel the accidental. The case of a tied note is special and is handled by passing in the accidental to check against. */ newaccpitch = read_accpitch[newacc]; impliedacc = (tiedcount < 0)? read_baraccs_tp[newpitch] : read_tiedata[tiedcount].acc_tp; if (impliedacc == newaccpitch && (*acc == ac_no || !transposedaccforce || keyNomit)) newacc = ac_no; /* Otherwise, remember the accidental for next time in this bar, unless acc_onenote is set, which means that the accidental applies only to this note (printed above/below) and does not apply to later notes in the bar. */ else if (!acc_onenote) read_baraccs_tp[newpitch] = newaccpitch; } /* Return the transposed pitch+accidental and absolute pitch */ *pitch = newpitch; *acc = newacc; return abspitch; } /************************************************* * Transpose key signature * *************************************************/ /* As well as returning the transposed key, we also set up the variable active_transpose_letter to contain the number of letter changes that are required for any transposition. This has to be done even when the key signature is N, which means "key signature does not transpose". However, in this case the new key is discarded. This function is called even when there is no transposition (in which case it does nothing). This is not the same as a transposition of zero. Earlier versions of PMW worked in semitones. We now work in quarter tones, but standard key signatures can only be transposed by semitones. However, the amount of transposition, set in active_transpose, is in quarter tones. Argument: key signature Returns: new key signature */ uint32_t transpose_key(uint32_t key) { int j; uint32_t letterkey, newkey, usekey; trkeystr *k; keytransstr *kt; if (active_transpose == NO_TRANSPOSE) return key; /* Get within octave transposition */ for (j = active_transpose; j < 0; j += 24) {} while (j > 23) j -= 24; /* Check for custom transpose instruction */ for (kt = main_keytranspose; kt != NULL; kt = kt->next) { if (kt->oldkey == key) break; } if (kt != NULL && kt->newkeys[j] != KEY_UNSET) { int x = kt->letterchanges[j]; if (active_transpose > 0) x = abs(x); else if (active_transpose < 0) x = -abs(x); active_transpose_letter = x; active_transpose_letter_is_auto = FALSE; return kt->newkeys[j]; } /* Cannot transpose custom key without instruction */ if (key >= key_X) { error(ERR73, key - key_X + 1, active_transpose); return key; } /* Cannot transpose by quarter tone without instruction */ if ((j & 1) != 0) { error(ERR74); return key; } j /= 2; /* Convert to semitones */ /* Transpose a standard key */ newkey = usekey = (key == key_N)? key_C : key; for (int i = 0; i < j; i++) newkey = tp_keytable[newkey]; letterkey = newkey; /* See if there's been a transposed key request for the new key. */ k = main_transposedkeys; while (k != NULL) { if (k->oldkey == newkey) { newkey = k->newkey; break; } k = k->next; } /* If the new key has changed to an enharmonic key, use the forced key to compute the number of letter changes; otherwise use the default new key. This copes with the two different uses of "transposedkey": (a) to use an enharmonic key and (b) to print music with a key signature different to the tonality. */ if (letterkey != newkey) { uschar *p = enh_keytable; while (*p < 255) { if (letterkey == p[1] && newkey == p[0]) { letterkey = newkey; break; } p += 2; } } active_transpose_letter = (letterkey%7) - (usekey%7); active_transpose_letter_is_auto = TRUE; if (active_transpose > 0 && active_transpose_letter < 0) active_transpose_letter += 7; if (active_transpose < 0 && active_transpose_letter > 0) active_transpose_letter -= 7; return (key == key_N)? key : newkey; } /* End of transpose_c */ pmw-5.22/src/font.c0000644000222100022210000012140014541067540012240 0ustar ph10ph10/************************************************* * PMW font functions * *************************************************/ /* Copyright Philip Hazel 2021 */ /* This file created: January 2021 */ /* This file last modified: June 2023 */ #include "pmw.h" /* Entries in the character name to Unicode code point table */ typedef struct an2uencod { uschar *name; /* Adobe character name */ int code; /* Unicode code point */ int poffset; /* Offset for printing certain chars */ } an2uencod; /* This table translates character names from PostScript fonts that use Adobe's standard encoding into Unicode. In addition, for characters whose Unicode values are greater than LOWCHARLIMIT, it includes the offset above LOWCHARLIMIT that we use for printing these characters (essentially a private encoding). The current highest offset is 43. The value of FONTWIDTHS_SIZE must be large enough to accommodate all these characters. */ static an2uencod an2ulist[] = { { US"A", 0x0041, -1 }, { US"AE", 0x00c6, -1 }, { US"Aacute", 0x00c1, -1 }, { US"Abreve", 0x0102, -1 }, { US"Acircumflex", 0x00c2, -1 }, { US"Adieresis", 0x00c4, -1 }, { US"Agrave", 0x00c0, -1 }, { US"Amacron", 0x0100, -1 }, { US"Aogonek", 0x0104, -1 }, { US"Aring", 0x00c5, -1 }, { US"Atilde", 0x00c3, -1 }, { US"B", 0x0042, -1 }, { US"C", 0x0043, -1 }, { US"Cacute", 0x0106, -1 }, { US"Ccaron", 0x010c, -1 }, { US"Ccedilla", 0x00c7, -1 }, { US"Ccircumflex", 0x0108, -1 }, { US"Cdotaccent", 0x010a, -1 }, { US"D", 0x0044, -1 }, { US"Dcaron", 0x010e, -1 }, { US"Dcroat", 0x0110, -1 }, { US"Delta", 0x0394, +0 }, { US"E", 0x0045, -1 }, { US"Eacute", 0x00c9, -1 }, { US"Ebreve", 0x0114, -1 }, { US"Ecaron", 0x011a, -1 }, { US"Ecircumflex", 0x00ca, -1 }, { US"Edieresis", 0x00cb, -1 }, { US"Edotaccent", 0x0116, -1 }, { US"Egrave", 0x00c8, -1 }, { US"Emacron", 0x0112, -1 }, { US"Eng", 0x014a, -1 }, { US"Eogonek", 0x0118, -1 }, { US"Eth", 0x00d0, -1 }, { US"Euro", 0x20ac, +1 }, { US"F", 0x0046, -1 }, { US"G", 0x0047, -1 }, { US"Gbreve", 0x011e, -1 }, { US"Gcircumflex", 0x011c, -1 }, { US"Gcommaaccent", 0x0122, -1 }, { US"Gdotaccent", 0x0120, -1 }, { US"H", 0x0048, -1 }, { US"Hbar", 0x0126, -1 }, { US"Hcircumflex", 0x0124, -1 }, { US"I", 0x0049, -1 }, { US"IJ", 0x0132, -1 }, { US"Iacute", 0x00cd, -1 }, { US"Ibreve", 0x012c, -1 }, { US"Icircumflex", 0x00ce, -1 }, { US"Idieresis", 0x00cf, -1 }, { US"Idotaccent", 0x0130, -1 }, { US"Igrave", 0x00cc, -1 }, { US"Imacron", 0x012a, -1 }, { US"Iogonek", 0x012e, -1 }, { US"Itilde", 0x0128, -1 }, { US"J", 0x004a, -1 }, { US"Jcircumflex", 0x0134, -1 }, { US"K", 0x004b, -1 }, { US"Kcommaaccent", 0x0136, -1 }, { US"L", 0x004c, -1 }, { US"Lacute", 0x0139, -1 }, { US"Lcaron", 0x013d, -1 }, { US"Lcommaaccent", 0x013b, -1 }, { US"Ldot", 0x013f, -1 }, { US"Lslash", 0x0141, -1 }, { US"M", 0x004d, -1 }, { US"N", 0x004e, -1 }, { US"NBspace", 0x00a0, -1 }, /* Added Nov-2019 */ { US"Nacute", 0x0143, -1 }, { US"Ncaron", 0x0147, -1 }, { US"Ncommaaccent", 0x0145, -1 }, { US"Ntilde", 0x00d1, -1 }, { US"O", 0x004f, -1 }, { US"OE", 0x0152, -1 }, { US"Oacute", 0x00d3, -1 }, { US"Obreve", 0x014e, -1 }, { US"Ocircumflex", 0x00d4, -1 }, { US"Odieresis", 0x00d6, -1 }, { US"Ograve", 0x00d2, -1 }, { US"Ohungarumlaut", 0x0150, -1 }, { US"Omacron", 0x014c, -1 }, { US"Oslash", 0x00d8, -1 }, { US"Otilde", 0x00d5, -1 }, { US"P", 0x0050, -1 }, { US"Q", 0x0051, -1 }, { US"R", 0x0052, -1 }, { US"Racute", 0x0154, -1 }, { US"Rcaron", 0x0158, -1 }, { US"Rcommaaccent", 0x0156, -1 }, { US"S", 0x0053, -1 }, { US"Sacute", 0x015a, -1 }, { US"Scaron", 0x0160, -1 }, { US"Scedilla", 0x015e, -1 }, { US"Scircumflex", 0x015c, -1 }, { US"Scommaaccent", 0x0218, +2 }, { US"T", 0x0054, -1 }, { US"Tbar", 0x0166, -1 }, { US"Tcaron", 0x0164, -1 }, { US"Tcedilla", 0x0162, -1 }, { US"Tcommaaccent", 0x021a, +3 }, { US"Thorn", 0x00de, -1 }, { US"U", 0x0055, -1 }, { US"Uacute", 0x00da, -1 }, { US"Ubreve", 0x016c, -1 }, { US"Ucircumflex", 0x00db, -1 }, { US"Udieresis", 0x00dc, -1 }, { US"Ugrave", 0x00d9, -1 }, { US"Uhungarumlaut", 0x0170, -1 }, { US"Umacron", 0x016a, -1 }, { US"Uogonek", 0x0172, -1 }, { US"Uring", 0x016e, -1 }, { US"Utilde", 0x0168, -1 }, { US"V", 0x0056, -1 }, { US"W", 0x0057, -1 }, { US"Wcircumflex", 0x0174, -1 }, { US"X", 0x0058, -1 }, { US"Y", 0x0059, -1 }, { US"Yacute", 0x00dd, -1 }, { US"Ycircumflex", 0x0176, -1 }, { US"Ydieresis", 0x0178, -1 }, { US"Z", 0x005a, -1 }, { US"Zacute", 0x0179, -1 }, { US"Zcaron", 0x017d, -1 }, { US"Zdotaccent", 0x017b, -1 }, { US"a", 0x0061, -1 }, { US"aacute", 0x00e1, -1 }, { US"abreve", 0x0103, -1 }, { US"acircumflex", 0x00e2, -1 }, { US"acute", 0x00b4, -1 }, { US"adieresis", 0x00e4, -1 }, { US"ae", 0x00e6, -1 }, { US"agrave", 0x00e0, -1 }, { US"amacron", 0x0101, -1 }, { US"ampersand", 0x0026, -1 }, { US"aogonek", 0x0105, -1 }, { US"aring", 0x00e5, -1 }, { US"asciicircum", 0x005e, -1 }, { US"asciitilde", 0x007e, -1 }, { US"asterisk", 0x002a, -1 }, { US"at", 0x0040, -1 }, { US"atilde", 0x00e3, -1 }, { US"b", 0x0062, -1 }, { US"backslash", 0x005c, -1 }, { US"bar", 0x007c, -1 }, { US"braceleft", 0x007b, -1 }, { US"braceright", 0x007d, -1 }, { US"bracketleft", 0x005b, -1 }, { US"bracketright", 0x005d, -1 }, { US"breve", 0x0306, +4 }, { US"brokenbar", 0x00a6, -1 }, { US"bullet", 0x00b7, -1 }, { US"c", 0x0063, -1 }, { US"cacute", 0x0107, -1 }, { US"caron", 0x030c, +5 }, { US"ccaron", 0x010d, -1 }, { US"ccedilla", 0x00e7, -1 }, { US"ccircumflex", 0x0109, -1 }, { US"cdotaccent", 0x010b, -1 }, { US"cedilla", 0x00b8, -1 }, { US"cent", 0x00a2, -1 }, { US"circumflex", 0x0302, +6 }, { US"colon", 0x003a, -1 }, { US"comma", 0x002c, -1 }, { US"commaaccent", 0x0326, +7 }, { US"copyright", 0x00a9, -1 }, { US"currency", 0x00a4, -1 }, { US"d", 0x0064, -1 }, { US"dagger", 0x2020, +8 }, { US"daggerdbl", 0x2021, +9 }, { US"dcaron", 0x010f, -1 }, { US"dcroat", 0x0111, -1 }, { US"degree", 0x00b0, -1 }, { US"dieresis", 0x00a8, -1 }, { US"divide", 0x00f7, -1 }, { US"dollar", 0x0024, -1 }, { US"dotaccent", 0x0307, 10 }, { US"dotlessi", 0x0131, -1 }, { US"e", 0x0065, -1 }, { US"eacute", 0x00e9, -1 }, { US"ebreve", 0x0115, -1 }, { US"ecaron", 0x011b, -1 }, { US"ecircumflex", 0x00ea, -1 }, { US"edieresis", 0x00eb, -1 }, { US"edotaccent", 0x0117, -1 }, { US"egrave", 0x00e8, -1 }, { US"eight", 0x0038, -1 }, { US"ellipsis", 0x2026, 11 }, { US"emacron", 0x0113, -1 }, { US"emdash", 0x2014, 12 }, { US"endash", 0x2013, 13 }, { US"eng", 0x014b, -1 }, { US"eogonek", 0x0119, -1 }, { US"equal", 0x003d, -1 }, { US"eth", 0x00f0, -1 }, { US"exclam", 0x0021, -1 }, { US"exclamdown", 0x00a1, -1 }, { US"f", 0x0066, -1 }, { US"fi", 0xfb01, 14 }, { US"five", 0x0035, -1 }, { US"fl", 0xfb02, 15 }, { US"florin", 0x0192, 16 }, { US"four", 0x0034, -1 }, { US"fraction", 0x2044, 17 }, { US"g", 0x0067, -1 }, { US"gbreve", 0x011f, -1 }, { US"gcircumflex", 0x011d, -1 }, { US"gcommaaccent", 0x0123, -1 }, { US"gdotaccent", 0x0121, -1 }, { US"germandbls", 0x00df, -1 }, { US"grave", 0x0060, -1 }, { US"greater", 0x003e, -1 }, { US"greaterequal", 0x2265, 18 }, { US"guillemotleft", 0x00ab, -1 }, { US"guillemotright", 0x00bb, -1 }, { US"guilsinglleft", 0x2039, 19 }, { US"guilsinglright", 0x203a, 20 }, { US"h", 0x0068, -1 }, { US"hbar", 0x0127, -1 }, { US"hcircumflex", 0x0125, -1 }, { US"hungarumlaut", 0x030b, 21 }, /* 002d is "hyphen-minus"; Unicode also has separate codes for hyphen and for minus. We use the latter below. */ { US"hyphen", 0x002d, -1 }, { US"i", 0x0069, -1 }, { US"iacute", 0x00ed, -1 }, { US"ibreve", 0x012d, -1 }, { US"icircumflex", 0x00ee, -1 }, { US"idieresis", 0x00ef, -1 }, { US"igrave", 0x00ec, -1 }, { US"ij", 0x0133, -1 }, { US"imacron", 0x012b, -1 }, { US"infinity", 0x221e, 43 }, { US"iogonek", 0x012f, -1 }, { US"itilde", 0x0129, -1 }, { US"j", 0x006a, -1 }, { US"jcircumflex", 0x0135, -1 }, { US"k", 0x006b, -1 }, { US"kcommaaccent", 0x0137, -1 }, { US"kgreenlandic", 0x0138, -1 }, { US"l", 0x006c, -1 }, { US"lacute", 0x013a, -1 }, { US"lcaron", 0x013e, -1 }, { US"lcommaaccent", 0x013c, -1 }, { US"ldot", 0x0140, -1 }, { US"less", 0x003c, -1 }, { US"lessequal", 0x2264, 22 }, { US"logicalnot", 0x00ac, -1 }, { US"longs", 0x017f, -1 }, { US"lozenge", 0x25ca, 23 }, { US"lslash", 0x0142, -1 }, { US"m", 0x006d, -1 }, { US"macron", 0x00af, -1 }, { US"minus", 0x2212, 24 }, { US"mu", 0x00b5, -1 }, { US"multiply", 0x00d7, -1 }, { US"n", 0x006e, -1 }, { US"nacute", 0x0144, -1 }, { US"napostrophe", 0x0149, -1 }, { US"ncaron", 0x0148, -1 }, { US"ncommaaccent", 0x0146, -1 }, { US"nine", 0x0039, -1 }, { US"notequal", 0x2260, 25 }, { US"ntilde", 0x00f1, -1 }, { US"numbersign", 0x0023, -1 }, { US"o", 0x006f, -1 }, { US"oacute", 0x00f3, -1 }, { US"obreve", 0x014f, -1 }, { US"ocircumflex", 0x00f4, -1 }, { US"odieresis", 0x00f6, -1 }, { US"oe", 0x0153, -1 }, { US"ogonek", 0x0328, 26 }, { US"ograve", 0x00f2, -1 }, { US"ohungarumlaut", 0x0151, -1 }, { US"omacron", 0x014d, -1 }, { US"one", 0x0031, -1 }, { US"onehalf", 0x00bd, -1 }, { US"onequarter", 0x00bc, -1 }, { US"onesuperior", 0x00b9, -1 }, { US"ordfeminine", 0x00aa, -1 }, { US"ordmasculine", 0x00ba, -1 }, { US"oslash", 0x00f8, -1 }, { US"otilde", 0x00f5, -1 }, { US"p", 0x0070, -1 }, { US"paragraph", 0x00b6, -1 }, { US"parenleft", 0x0028, -1 }, { US"parenright", 0x0029, -1 }, { US"partialdiff", 0x2202, 27 }, { US"percent", 0x0025, -1 }, { US"period", 0x002e, -1 }, { US"periodcentered", 0x2027, 28 }, { US"perthousand", 0x2031, 29 }, { US"plus", 0x002b, -1 }, { US"plusminus", 0x00b1, -1 }, { US"q", 0x0071, -1 }, { US"question", 0x003f, -1 }, { US"questiondown", 0x00bf, -1 }, { US"quotedbl", 0x0022, -1 }, { US"quotedblbase", 0x201e, 30 }, { US"quotedblleft", 0x201c, 31 }, { US"quotedblright", 0x201d, 32 }, { US"quoteleft", 0x2018, 33 }, { US"quoteright", 0x2019, 34 }, { US"quotesinglbase", 0x201a, 35 }, { US"quotesingle", 0x0027, -1 }, { US"r", 0x0072, -1 }, { US"racute", 0x0155, -1 }, { US"radical", 0x221a, 36 }, { US"rcaron", 0x0159, -1 }, { US"rcommaaccent", 0x0157, -1 }, { US"registered", 0x00ae, -1 }, { US"ring", 0x030a, 37 }, { US"s", 0x0073, -1 }, { US"sacute", 0x015b, -1 }, { US"scaron", 0x0161, -1 }, { US"scedilla", 0x015f, -1 }, { US"scircumflex", 0x015d, -1 }, { US"scommaaccent", 0x0219, 38 }, { US"section", 0x00a7, -1 }, { US"semicolon", 0x003b, -1 }, { US"seven", 0x0037, -1 }, { US"six", 0x0036, -1 }, { US"slash", 0x002f, -1 }, { US"space", 0x0020, -1 }, { US"sterling", 0x00a3, -1 }, { US"summation", 0x2211, 39 }, { US"t", 0x0074, -1 }, { US"tbar", 0x0167, -1 }, { US"tcaron", 0x0165, -1 }, { US"tcedilla", 0x0163, -1 }, { US"tcommaaccent", 0x021b, 40 }, { US"thorn", 0x00fe, -1 }, { US"three", 0x0033, -1 }, { US"threequarters", 0x00be, -1 }, { US"threesuperior", 0x00b3, -1 }, { US"tilde", 0x0303, 41 }, { US"trademark", 0x2122, 42 }, { US"two", 0x0032, -1 }, { US"twosuperior", 0x00b2, -1 }, { US"u", 0x0075, -1 }, { US"uacute", 0x00fa, -1 }, { US"ubreve", 0x016d, -1 }, { US"ucircumflex", 0x00fb, -1 }, { US"udieresis", 0x00fc, -1 }, { US"ugrave", 0x00f9, -1 }, { US"uhungarumlaut", 0x0171, -1 }, { US"umacron", 0x016b, -1 }, { US"underscore", 0x005f, -1 }, { US"uogonek", 0x0173, -1 }, { US"uring", 0x016f, -1 }, { US"utilde", 0x0169, -1 }, { US"v", 0x0076, -1 }, { US"w", 0x0077, -1 }, { US"wcircumflex", 0x0175, -1 }, { US"x", 0x0078, -1 }, { US"y", 0x0079, -1 }, { US"yacute", 0x00fd, -1 }, { US"ycircumflex", 0x0177, -1 }, { US"ydieresis", 0x00ff, -1 }, { US"yen", 0x00a5, -1 }, { US"z", 0x007a, -1 }, { US"zacute", 0x017a, -1 }, { US"zcaron", 0x017e, -1 }, { US"zdotaccent", 0x017c, -1 }, { US"zero", 0x0030, -1 } }; static int an2ucount = sizeof(an2ulist)/sizeof(an2uencod); /************************************************* * Convert character name to Unicode value * *************************************************/ /* Arguments: cname the character name mcptr if not NULL, where to put the special encoding value Returns: a Unicode code point, or -1 if not found */ static int an2u(uschar *cname, int *mcptr) { int top = an2ucount; int bot = 0; if (mcptr != NULL) *mcptr = -1; while (top > bot) { int mid = (top + bot)/2; an2uencod *an2u = an2ulist + mid; int c = Ustrcmp(cname, an2u->name); if (c == 0) { if (mcptr != NULL) *mcptr = an2u->poffset; return an2u->code; } if (c > 0) bot = mid + 1; else top = mid; } return -1; } /************************************************* * Kern table sorting comparison * *************************************************/ /* This is the auxiliary routine used for comparing kern table entries when sorting them. Arguments: a pointer to kerntable structure b pointer to kerntable structure Returns difference between their "pair" values */ static int kern_table_cmp(const void *a, const void *b) { kerntablestr *ka = (kerntablestr *)a; kerntablestr *kb = (kerntablestr *)b; return (int)(ka->pair - kb->pair); } /************************************************* * UTR table sorting comparison * *************************************************/ /* This is the auxiliary routine used for comparing UTR table entries when sorting them. Arguments: a pointer to utrtable structure b pointer to utrtable structure Returns difference between their "pair" values */ static int utr_table_cmp(const void *a, const void *b) { utrtablestr *ka = (utrtablestr *)a; utrtablestr *kb = (utrtablestr *)b; return (int)(ka->unicode - kb->unicode); } /************************************************* * Number reader for AFM files * *************************************************/ /* Arguments: value where to return the value p character pointer Returns: new value of p */ static uschar * read_number(int *value, uschar *p) { int n = 0; int sign = 1; while (*p != 0 && *p == ' ') p++; if (*p == '-') { sign = -1; p++; } while (isdigit(*p)) n = n * 10 + *p++ - '0'; *value = n * sign; return p; } /************************************************* * Find AFM or other file for a font * *************************************************/ /* This is an externally-called function, also called from below. Arguments: name the font's name ext ".afm", ".utr", ".pfa", etc., or "" fextras list of extra directories to search fdefault the default directory filename where to return the successful file name mandatory if TRUE, give hard error on failure Returns: the opened file or NULL (when not mandatory) */ FILE * font_finddata(uschar *name, const char *ext, uschar *fextras, uschar *fdefault, uschar *filename, BOOL mandatory) { FILE *f = NULL; /* First look in any additional directories. */ if (fextras != NULL) { uschar *pp = fextras; while (*pp != 0) { int len; uschar *ep = Ustrchr(pp, ':'); if (ep == NULL) ep = Ustrchr(pp, 0); /* Using sprintf() for the whole string causes a compiler warning if -Wformat-overflow is set. */ len = ep - pp; (void)memcpy(filename, pp, len); sprintf(CS (filename + len), "/%s%s", name, ext); f = Ufopen(filename, "r"); if (f != NULL || *ep == 0) break; pp = ep + 1; } } /* Try the default directory if not yet found. */ if (f == NULL) { sprintf(CS filename, "%s/%s%s", fdefault, name, ext); f = Ufopen(filename, "r"); if (mandatory && f == NULL) { const char *s = (*ext == 0)? "Data" : ext; if (fextras == NULL) error(ERR56, s, name, fdefault); /* Hard error */ else error(ERR57, s, name, fextras, fdefault); /* Hard error */ } } return f; } /************************************************* * Check character value in std font * *************************************************/ /* In a standardly encoded font, characters less than LOWCHARLIMIT are encoded as their Unicode values. There are also around 40 much higher-valued characters that are translated to the code points immediately above LOWCHARLIMIT so that they can be accessed from the second encoding of the font. This function checks and translates characters when necessary. It is called when reading kerning tables for a standardly-encoded font. Just ignore anything unrecognized. Arguments: c the code point fs the font structure Returns: possibly changed character */ static uint32_t check_lowchar(uint32_t c, fontstr *fs) { tree_node *t; uschar utf[8]; if (c < LOWCHARLIMIT || (fs->flags & ff_stdencoding) == 0) return c; utf[misc_ord2utf8(c, utf)] = 0; t = tree_search(fs->high_tree, utf); return (t == NULL)? c : (uint32_t)(LOWCHARLIMIT + t->value); } /************************************************* * Load width, kern, & Unicode tables for a font * *************************************************/ /* This is an externally-callable function. It looks for a mandatory AFM file, containing character widths and kerning information, and also checks for an optional UTR file if the font is not standardly-encoded. Argument: the font id (offset in font_list) Returns: nothing */ void font_loadtables(uint32_t fontid) { FILE *fa, *fu; int kerncount = 0; int finalcount = 0; kerntablestr *kerntable; fontstr *fs = &(font_list[fontid]); tree_node *treebase = NULL; uschar *pp; uschar filename[256]; uschar line[256]; /* Find and open the AFM file */ fa = font_finddata(fs->name, ".afm", font_data_extra, font_data_default, filename, TRUE); /* Hard error if not found */ fs->widths = mem_get_independent(FONTWIDTHS_SIZE * sizeof(int32_t)); memset(fs->widths, 0xff, FONTWIDTHS_SIZE * sizeof(int32_t)); fs->r2ladjusts = mem_get_independent(FONTWIDTHS_SIZE * sizeof(int32_t)); memset(fs->r2ladjusts, 0, FONTWIDTHS_SIZE * sizeof(int32_t)); fs->heights = NULL; fs->kerncount = 0; /* Find the start of the metrics in the AFM file; on the way, check for the standard encoding scheme and for fixed pitch. */ for (;;) { if (Ufgets(line, sizeof(line), fa) == NULL) error(ERR58, filename, "no metric data found", ""); /* Hard */ if (memcmp(line, "EncodingScheme AdobeStandardEncoding", 36) == 0) fs->flags |= ff_stdencoding; if (memcmp(line, "IsFixedPitch true", 17) == 0) fs->flags |= ff_fixedpitch; if (memcmp(line, "StartCharMetrics", 16) == 0) break; } /* Now we know whether or not the font has standard encoding we can set up the unsupported character substitution. */ if ((fs->flags & ff_stdencoding) == 0) fs->invalid = UNKNOWN_CHAR_N | (font_mf << 24); /* Default */ else fs->invalid = UNKNOWN_CHAR_S | (font_unknown << 24); /* Look for a .utr file, which may contain Unicode translations, choice of unsupported character, and/or font encodings. */ fu = font_finddata(fs->name, ".utr", font_data_extra, font_data_default, filename, FALSE); if (fu != NULL) { int ucount = 0; int lineno = 0; utrtablestr utable[MAX_UTRANSLATE]; TRACE("Loading UTR for %s\n", fs->name); while (Ufgets(line, sizeof(line), fu) != NULL) { uschar *epp; lineno++; pp = line; while (isspace(*pp)) pp++; if (*pp == 0 || *pp == '#') continue; /* A line beginning with '/' is an encoding definition line. */ if (*pp == '/') { tree_node *tn; uschar *nb, *ne; uint32_t c; if (fs->encoding == NULL) { fs->encoding = mem_get_independent(FONTWIDTHS_SIZE * sizeof(char *)); for (int i = 0; i < FONTWIDTHS_SIZE; i++) fs->encoding[i] = NULL; } nb = ++pp; while (isalnum(*pp)) pp++; ne = pp; while (isspace(*pp)) pp++; c = (uint32_t)Ustrtoul(pp, &epp, 0); if (epp == pp) { error(ERR60, "font", lineno, filename, line); continue; } if (c >= FONTWIDTHS_SIZE) { error(ERR61, FONTWIDTHS_SIZE, lineno, filename, line); continue; } if (fs->encoding[c] != NULL) { error(ERR176, c, lineno, filename, line); continue; } /* We now have a name and a code. The name is saved and pointed to from the encoding vector for appropriate PostScript generation. We also create a tree of names so that the name and its code can be quickly found when reading the AFM file below. */ *ne = 0; tn = mem_get(sizeof(tree_node)); tn->name = fs->encoding[c] = mem_copystring(nb); tn->value = c; if (!tree_insert(&treebase, tn)) error(ERR175, tn->name, lineno, filename, line); continue; } /* Handle an "unknown character" definition */ if (*pp == '?') { uint32_t c = (uint32_t)Ustrtoul(++pp, &epp, 0); if (epp == pp) { error(ERR60, "font", lineno, filename, line); continue; } if (c >= FONTWIDTHS_SIZE) { error(ERR61, FONTWIDTHS_SIZE, lineno, filename, line); continue; } /* Change an underlay special character to its escaped version. */ switch (c) { case '#': c = ss_escapedsharp; break; case '=': c = ss_escapedequals; break; case '-': c = ss_escapedhyphen; break; default: break; } fs->invalid = c | (font_unknown << 24); continue; } /* Handle a translation definition */ if (ucount >= MAX_UTRANSLATE) { error(ERR59, filename, MAX_UTRANSLATE); break; } if (Ustrncmp(pp, "U+", 2) == 0) pp += 2; utable[ucount].unicode = (unsigned int)Ustrtoul(pp, &epp, 16); if (epp == pp) { error(ERR60, "Unicode", lineno, filename, line); continue; } pp = epp; utable[ucount].pscode = (unsigned int)Ustrtoul(pp, &epp, 0); if (epp == pp) { error(ERR60, "font", lineno, filename, line); continue; } if (utable[ucount].pscode >= FONTWIDTHS_SIZE) { error(ERR61, FONTWIDTHS_SIZE, lineno, filename, line); continue; } /* Change underlay special characters to escaped versions. */ switch (utable[ucount].pscode) { case '#': utable[ucount].pscode = ss_escapedsharp; break; case '=': utable[ucount].pscode = ss_escapedequals; break; case '-': utable[ucount].pscode = ss_escapedhyphen; break; default: break; } ucount++; } (void)fclose(fu); /* Sort the data by Unicode value, check for duplicates, and remember with the font. */ if (ucount > 0) { int i; qsort(utable, ucount, sizeof(utrtablestr), utr_table_cmp); for (i = 1; i < ucount; i++) { if (utable[i].unicode == utable[i-1].unicode) { error(ERR62, utable[i].unicode, filename); while(i < ucount - 1 && utable[i].unicode == utable[i+1].unicode) i++; } } fs->utr = mem_get_independent(ucount * sizeof(utrtablestr)); memcpy(fs->utr, utable, ucount * sizeof(utrtablestr)); fs->utrcount = ucount; } } /* Now we can process the metric lines in the AFM file. */ TRACE("Loading AFM for %s\n", fs->name); for (;;) { uschar *cname; uschar *ppb; int width, code; int poffset = -1; int r2ladjust = 0; BOOL widthset = FALSE; if (Ufgets(line, sizeof(line), fa) == NULL) error(ERR58, filename, "unexpected end of metric data", ""); /* Hard */ if (memcmp(line, "EndCharMetrics", 14) == 0) break; if (memcmp(line, "C ", 2) != 0) error(ERR58, filename, "unrecognized metric data line: ", line); /* Hard */ pp = line + 2; while (memcmp(pp, "WX", 2) != 0) pp++; pp = read_number(&width, pp+2); /* Look for a bounding box, but use a new pointer, because N comes first. If a bounding box is found, compute a value by which to adjust the printing position of this character when printing right-to-left. This is used for the last character of every string, instead of the stringwidth character. | |--------| | | char | | | glyph | ^ |<-- x0 -->|--------| x0 is the side bearing (LH bbox value) ^--->|<-- x1 ------------> x1 is the right hand bbox value ^ ^ ^ ^ ^ Original print point ^ New print point is x0 + x1 to the left of the old. If it were just x1, the edge of the character would abut the original point; instead we add an additional same sized bearing on the other side. */ ppb = pp; while (*ppb != 0 && Ustrncmp(ppb, "B ", 2) != 0) ppb++; if (*ppb != 0) { int x0, x1; ppb = read_number(&x0, ppb+2); /* x-left */ ppb = read_number(&x1, ppb); /* y-bottom */ ppb = read_number(&x1, ppb); /* x-right */ r2ladjust = x1 + x0; } /* Get the character's name */ while (memcmp(pp, "N ", 2) != 0) pp++; cname = (pp += 2); while (*pp != ' ') pp++; *pp = 0; /* If this is a StandardEncoding font, scan the list of characters so as to get the Unicode value for this character. If the code point is greater than or equal to LOWCHARLIMIT, the offset above LOWCHARLIMIT that is used for these characters is returned. */ if ((fs->flags & ff_stdencoding) != 0) { code = an2u(cname, &poffset); if (code >= 0) { /* Remember that this font has certain characters */ if (code == CHAR_FI) fs->flags |= ff_hasfi; /* If the Unicode code point is not less than LOWCHARLIMIT, remember it and its special offset in a tree so that it can be translated when encountered in a string. Then set the translated value for saving the width. */ if (code >= LOWCHARLIMIT) { tree_node *tc = mem_get(sizeof(tree_node)); tc->name = mem_get(8); tc->name[misc_ord2utf8(code, tc->name)] = 0; tc->value = poffset; (void)tree_insert(&(fs->high_tree), tc); code = LOWCHARLIMIT + poffset; } /* Set the data for the standard code point */ fs->widths[code] = width; fs->r2ladjusts[code] = r2ladjust; widthset = TRUE; } } /* If the font has a .utr file, it will have been read above, and if there is encoding information in it, a tree of character names will exist that translates from glyph name to encoding value. This might override the standard encoding, or it might duplicate a character on another code point. Ignore unknown names. */ if (treebase != NULL) { tree_node *tn; tn = tree_search(treebase, cname); if (tn != NULL) { code = tn->value; fs->widths[code] = width; fs->r2ladjusts[code] = r2ladjust; widthset = TRUE; } } /* If we haven't managed to find a code point from the name, use the character number directly, unless the width has already been set via a different name. If there are unencoded characters, or characters with code points greater than the widths table, ignore them. These fonts include the PMW-Music font, which has some characters with vertical height movements. */ if (!widthset) { (void)read_number(&code, line+1); if (code < 0 || code >= FONTWIDTHS_SIZE || fs->widths[code] >= 0) continue; for (pp = line + 2; *pp != 0 && memcmp(pp, "WY", 2) != 0; pp++) {} if (*pp != 0) { int32_t height; pp += 2; (void)read_number(&height, pp); if (fs->heights == NULL) { fs->heights = mem_get_independent(256 * sizeof(int32_t)); memset(fs->heights, 0, 256 * sizeof(int)); } fs->heights[code] = height; } fs->widths[code] = width; fs->r2ladjusts[code] = r2ladjust; } } /* End of loop for processing character lines */ /* Process kerning data (if any); when this is done, we are finished with the AFM file. */ for (;;) { if (Ufgets(line, sizeof(line), fa) == NULL) goto ENDKERN; if (memcmp(line, "StartKernPairs", 14) == 0) break; } /* Find size of kern table, and get space for it. In the past, some of Adobe's AFM files had a habit of containing a large number of kern pairs with zero amount of kern. We leave these out of the table and adjust the count for searching, but don't bother to free up the unused memory (it isn't a vast amount). */ pp = line + 14; while (*pp != 0 && *pp == ' ') pp++; (void)read_number(&kerncount, pp); fs->kerns = kerntable = mem_get_independent(kerncount*sizeof(kerntablestr)); finalcount = 0; while (kerncount--) { uschar *x; int sign = 1; int value; int a = -1; int b = -1; if (Ufgets(line, sizeof(line), fa) == NULL) error(ERR58, filename, "unexpected end of kerning data"); /* Hard */ if (memcmp(line, "EndKernPairs", 12) == 0) break; /* Skip blank lines */ if (Ustrlen(line) <= 1) { kerncount++; continue; } /* Process each kern */ pp = line + 4; x = pp; while (*pp != 0 && *pp != ' ') pp++; *pp++ = 0; a = an2u(x, NULL); while (*pp != 0 && *pp == ' ') pp++; x = pp; while (*pp != 0 && *pp != ' ') pp++; *pp++ = 0; b = an2u(x, NULL); /* Read the kern value only if we have found the characters; otherwise ignore the kern */ if (a >= 0 && b >= 0) { a = check_lowchar(a, fs); b = check_lowchar(b, fs); kerntable[finalcount].pair = (a << 16) + b; while (*pp != 0 && *pp == ' ') pp++; if (*pp == '-') { sign = -1; pp++; } (void)read_number(&value, pp); if (value != 0) kerntable[finalcount++].kwidth = value*sign; } } /* Adjust the count and sort the table into ascending order */ fs->kerncount = finalcount; /* true count */ qsort(kerntable, fs->kerncount, sizeof(kerntablestr), kern_table_cmp); /* Finished with the AFM file */ ENDKERN: (void)fclose(fa); /* Early checking debugging code; retained in the source in case it is ever needed again. */ #ifdef NEVER debug_printf("FONT %s\n", fs->name); { int i; for (i = 0; i < LOWCHARLIMIT; i++) { if (fs->widths[i] != 0) debug_printf("%04x %5d\n", i, fs->widths[i]); } for (i = LOWCHARLIMIT; i < 0xffff; i++) { tree_node *t; uschar key[4]; key[0] = (i >> 8) & 255; key[1] = i & 255; key[2] = 0; t = tree_search(fs->high_tree, key); if (t != NULL) debug_printf("%04x %5d %5d %5d\n", i, t->data.val[0], t->data.val[1], t->data.val[2]); } debug_printf("KERNS %d\n", fs->kerncount); for (i = 0; i < fs->kerncount; i++) { kerntablestr *k = &(fs->kerns[i]); int a = (k->pair >> 16) & 0xffff; int b = (k->pair) & 0xffff; debug_printf("%04x %04x %5d\n", a, b, k->kwidth); } } #endif } /************************************************* * Add a font to the base list * *************************************************/ /* This function is called from font_init() below, and also by the textfont and musicfont commands, to add a typeface to the list of fonts. Arguments: name name of font fontid offset in font_table (font_rm etc) flags font flags Returns: nothing */ void font_addfont(uschar *name, uint32_t fontid, uint32_t flags) { fontstr *fs; if (font_count >= font_list_size) { font_list_size += FONTLIST_CHUNKSIZE; font_list = realloc(font_list, font_list_size * sizeof(fontstr)); if (font_list == NULL) error(ERR0, "re-", "font list vector", font_list_size); /* Hard */ } fs = &(font_list[font_count]); fs->name = mem_copystring(name); fs->widths = NULL; fs->high_tree = NULL; fs->utr = NULL; fs->encoding = NULL; fs->utrcount = 0; fs->heights = NULL; fs->kerns = NULL; fs->kerncount = -1; fs->flags = flags; font_table[fontid] = font_count; font_loadtables(font_count++); } /************************************************* * Read a font type * *************************************************/ /* Argument: TRUE to not give an error if the word is unrecognised Returns: font_rm, font_it, etc, or font_unknown if not recognized */ uint32_t font_readtype(BOOL soft) { read_nextword(); if (Ustrcmp(read_wordbuffer, "roman") == 0) return font_rm; if (Ustrcmp(read_wordbuffer, "italic") == 0) return font_it; if (Ustrcmp(read_wordbuffer, "bold") == 0) return font_bf; if (Ustrcmp(read_wordbuffer, "bolditalic") == 0) return font_bi; if (Ustrcmp(read_wordbuffer, "symbol") == 0) return font_sy; if (Ustrcmp(read_wordbuffer, "extra") == 0) { int32_t x; if (!read_expect_integer(&x, FALSE, FALSE)) return font_unknown; if (x >= 1 && x <= MaxExtraFont) return font_xx + x - 1; error(ERR37, MaxExtraFont); } else if (!soft) error(ERR8, "\"roman\", \"italic\", \"bold\", \"bolditalic\", \"symbol\", " "or \"extra\""); return font_unknown; } /************************************************* * Search for given font * *************************************************/ /* This function searches the font list by the name of the font. Argument: the font name (e.g. "Times-Roman") Returns: the font id (offset in font_list) or font_unknown if not found */ uint32_t font_search(uschar *name) { uint32_t i; for (i = 0; i < font_count; i++) if (Ustrcmp(name, font_list[i].name) == 0) return i; return font_unknown; } /************************************************* * Manually translate Unicode code point * *************************************************/ /* If there is no translation table, or if the character is absent from the table, return 0xffffffff. Arguments: c the Unicode code point fs the font structure Returns: possibly a different code point */ uint32_t font_utranslate(uint32_t c, fontstr *fs) { int bot = 0; int top = fs->utrcount; while (bot < top) { int mid = (bot + top)/2; if (c == fs->utr[mid].unicode) return fs->utr[mid].pscode; if (c > fs->utr[mid].unicode) bot = mid + 1; else top = mid; } return 0xffffffffu; /* Not found */ } /************************************************* * Find the width of a character * *************************************************/ /* The "height" (distance current point moves vertically) is also returned. For ordinary text fonts, this is only non-zero when there's a rotation, but some characters in the music font move vertically. Such heights apply only to low-numbered characters in certain fonts. All code points in PMW strings are checked for validity at read-in time and translated if necessary. By this stage, except for the special non-Unicode values, the code points will always be less than 256 for non-standardly-encoded fonts, and less than LOWCHARLIMIT plus a few extras for standardly-encoded fonts. Either way, the values are less than the size of the widths vector. This function might be called with a non-Unicode special character if an escape such as \p\ or \so\ is used in the first part of a heading. A zero width is returned because this is documented not to work when a long heading is being split into multiple lines. Arguments: c the character lastc the previous character or 0 (for kerning) font the font number pointsize the font size hptr where to return the height or NULL Returns: the string width */ int32_t font_charwidth(uint32_t c, uint32_t lastc, uint32_t font, int32_t pointsize, int32_t *hptr) { fontstr *fs; kerntablestr *ktable; int32_t yield; DEBUG(D_font) eprintf("font_charwidth %d %s \'%c\'\n", font, sff(pointsize), c); /* Adjust the font size for small caps and reduced music font. */ if (font >= font_small) { font -= font_small; if (font == font_mf) pointsize = (pointsize * 9) / 10; else pointsize = (pointsize * curmovt->smallcapsize) / 1000; } /* Get the basic width from the font information. */ fs = &(font_list[font_table[font]]); if (c <= MAX_UNICODE) { yield = fs->widths[c]; if (hptr != NULL) *hptr = (fs->heights != NULL && c < 256)? mac_muldiv(fs->heights[c], pointsize, 1000) : 0; } else { yield = 0; if (hptr != NULL) *hptr = 0; } /* Deal with kerning. At the moment, this is supported only for characters whose code points are less than 0xffff. It should be easy to extend by converting to 64-bit combinations. */ ktable = fs->kerns; if (main_kerning && ktable != NULL && lastc > 0 && lastc <= 0xffff && c <= 0xffff) { uint32_t pair = (lastc << 16) | c; int top = fs->kerncount; int bot = 0; while (top > bot) { int mid = (top + bot)/2; kerntablestr *k = &(ktable[mid]); if (pair == k->pair) { yield += k->kwidth; break; } if (pair > k->pair) bot = mid + 1; else top = mid; } } return mac_muldiv(yield, pointsize, 1000); } /************************************************* * Rotate a font matrix * *************************************************/ /* This function is called when a text string is to be rotated when output. It returns a pointer to a static copy of the input font instance block, with a suitably rotated matrix setting. Arguments: fdata pointer to a font instance block angle rotation angle in degrees Returns: pointer to a copy of fdata with rotation set */ static fontinststr copyfdata; static int32_t copymatrix[6]; static int32_t nullmatrix[6] = { 65536, 0, 0, 65536, 0, 1000 }; fontinststr * font_rotate(fontinststr *fdata, int32_t angle) { int32_t newmatrix[4]; double sr = sin(((double)angle)*atan(1.0)/45000.0); double cr = cos(((double)angle)*atan(1.0)/45000.0); copyfdata = *fdata; copyfdata.matrix = copymatrix; memcpy(copymatrix, (fdata->matrix == NULL)? nullmatrix : fdata->matrix, 4 * sizeof(int32_t)); newmatrix[0] = (int)(((double)copymatrix[0])*cr - ((double)copymatrix[1])*sr); newmatrix[1] = (int)(((double)copymatrix[0])*sr + ((double)copymatrix[1])*cr); newmatrix[2] = (int)(((double)copymatrix[2])*cr - ((double)copymatrix[3])*sr); newmatrix[3] = (int)(((double)copymatrix[2])*sr + ((double)copymatrix[3])*cr); memcpy(copymatrix, newmatrix, 4*sizeof(int32_t)); copymatrix[4] = (int32_t)(sr * 1000.0); copymatrix[5] = (int32_t)(cr * 1000.0); return ©fdata; } /* End of font.c */ pmw-5.22/src/functions.h0000644000222100022210000002154414541067540013317 0ustar ph10ph10/************************************************* * PMW prototypes for global functions * *************************************************/ /* Copyright Philip Hazel 2022 */ /* This file created: December 2020 */ /* This file last modified: December 2023 */ extern void debug_bar(void); extern void debug_header(void); extern void debug_memory_usage(void); extern void debug_string(uint32_t *); extern BOOL error(enum error_number, ...); extern BOOL error_skip(enum error_number, uint32_t, ...); extern void font_addfont(uschar *, uint32_t, uint32_t); extern int32_t font_charwidth(uint32_t, uint32_t, uint32_t, int32_t, int32_t *); extern FILE *font_finddata(uschar *, const char *, uschar *, uschar *, uschar *, BOOL); extern void font_loadtables(uint32_t); extern uint32_t font_readtype(BOOL); extern fontinststr *font_rotate(fontinststr *, int32_t); extern uint32_t font_search(uschar *); extern uint32_t font_utranslate(uint32_t, fontstr *); extern void mem_connect_item(bstr *); extern uschar *mem_copystring(uschar *); extern void *mem_duplicate_item(void *, size_t); extern void mem_free(void); extern void mem_free_cached(void **, void *); extern void *mem_get(size_t); extern void *mem_get_cached(void **, size_t); extern void *mem_get_independent(size_t); extern usint mem_get_info(size_t *, size_t *); extern void *mem_get_insert_item(size_t, usint, bstr *); extern void *mem_get_item(size_t, usint); extern void mem_record_next_item(bstr **); extern void mem_register(void *, size_t); extern void midi_write(void); extern void misc_commoncont(bstr *); extern void misc_copycontstr(contstr *, contstr *, int, BOOL); extern void misc_freenbar(void); extern BOOL misc_get_range(uint64_t, usint, usint *, usint *); extern int32_t misc_keywidth(uint32_t, uint16_t); extern b_notestr *misc_nextnote(void *); extern int misc_ord2utf8(uint32_t, uschar *); extern void misc_psprintf(uint32_t *, int, const char *, ...); extern void misc_startnbar(b_nbarstr *, int32_t, int32_t); extern void misc_tidycontstr(contstr *, int); extern int32_t misc_timewidth(uint32_t); extern int32_t misc_ybound(BOOL, b_tiestr *, BOOL, BOOL); extern void out_ascstring(uschar *, int, int32_t, int32_t, int32_t); extern void out_dodraw(tree_node *, drawitem *, BOOL); extern void out_drawhairpin(b_hairpinstr *, int32_t); extern int32_t out_drawnbar(BOOL, int32_t); extern void out_extension(int32_t, int32_t, int32_t, fontinststr *); extern posstr *out_findTentry(int32_t); extern int32_t out_findAoffset(int32_t); extern int32_t out_findGoffset(int32_t, int32_t); extern int32_t out_findXoffset(int32_t); extern void out_glissando(int32_t, uint8_t); extern void out_hyphens(int32_t, int32_t, int32_t, fontinststr *, BOOL); extern void out_page(void); extern void out_repeatstring(int32_t, int32_t, int32_t, BOOL, BOOL, int); extern int out_setbar(int); extern void out_setchordtie(b_notestr *, int, int32_t, BOOL, uint8_t); extern bstr *out_setnote(b_notestr *); extern void out_setnotetie(int32_t, BOOL, uint8_t); extern BOOL out_setother(bstr *); extern BOOL out_setupbeam(b_notestr *, int32_t, BOOL, BOOL); extern void out_slur(int32_t, int32_t, int32_t, int32_t, uint32_t, int32_t, int32_t, int32_t); extern void out_string(uint32_t *, fontinststr *, int32_t, int32_t, uint32_t); extern void out_text(b_textstr *, BOOL); extern void out_writeclef(int32_t, int32_t, int, int32_t, BOOL); extern void out_writekey(int32_t, int32_t, uint32_t, uint32_t); extern void out_writerepeat(int32_t, int, int32_t); extern void out_writetime(int32_t, int32_t, usint); extern void paginate(void); extern void pmw_read(void); extern void pmw_read_header(void); extern void pmw_read_stave(void); extern void preprocess_line(void); extern void ps_abspath(int32_t *, int32_t *, int *, int32_t); extern void ps_barline(int32_t, int32_t, int32_t, int, int32_t); extern void ps_beam(int32_t, int32_t, int, int); extern void ps_brace(int32_t, int32_t, int32_t, int32_t); extern void ps_bracket(int32_t, int32_t, int32_t, int32_t); extern void ps_getcolour(int32_t *); extern void ps_go(void); extern void ps_grestore(void); extern void ps_gsave(void); extern void ps_line(int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t); extern void ps_lines(int32_t *, int32_t *, int, int32_t); extern void ps_muschar(int32_t, int32_t, uint32_t, int32_t); extern void ps_musstring(uschar *, int32_t, int32_t, int32_t); extern void ps_path(int32_t *, int32_t *, int *, int32_t); extern void ps_relmusstring(uschar *, int32_t, int32_t, int32_t); extern void ps_rotate(double); extern void ps_setcapandjoin(uint32_t); extern void ps_setcolour(int32_t *); extern void ps_setdash(int32_t, int32_t); extern void ps_setgray(int32_t); extern void ps_slur(int32_t, int32_t, int32_t, int32_t, uint32_t, int32_t); extern void ps_startbar(int, int); extern void ps_stave(int32_t, int32_t, int32_t, int); extern void ps_string(uint32_t *, fontinststr *, int32_t *, int32_t *, BOOL, BOOL); extern void ps_translate(int32_t, int32_t); extern uint32_t read_accororn(uint32_t); extern uint32_t read_barnumber(void); extern uint32_t read_compute_barlength(uint32_t); extern BOOL read_do_stavedirective(void); extern void read_draw(tree_node **, drawitem **, uint32_t); extern void read_draw_definition(void); extern drawtextstr *read_draw_text(void); extern void read_ensure_bar_indexes(size_t); extern BOOL read_expect_integer(int32_t *, BOOL, BOOL); extern void read_extend_buffers(void); extern void read_file(enum filetype); extern uint32_t read_fixed(void); extern void read_fontsize(fontinststr *, BOOL); extern int read_getmidinumber(uschar *, uschar *, uschar *); extern void read_headfootingtext(headstr *, uint32_t, uint32_t); extern void read_init_baraccs(int8_t *, uint32_t); extern void read_init_movement(movtstr *, uint32_t, uint32_t); extern stavestr *read_init_stave(int32_t, BOOL); extern uint32_t read_key(void); extern int32_t read_movevalue(void); extern void read_nextc(void); extern void read_nextword(void); extern void read_note(void); extern BOOL read_physical_line(size_t); extern uint32_t read_scaletime(uint32_t); extern void read_setbeamstems(void); extern void read_sortchord(b_notestr *, uint32_t); extern int read_stavelist(uschar *, uschar **, uint64_t *, stavelist **); extern void read_stavename(void); extern uint16_t read_stavepitch(void); extern dirstr *read_stave_searchdirlist(BOOL); extern void read_tidy_staves(BOOL); extern uint32_t read_time(void); extern uint32_t read_usint(void); extern void slur_drawslur(slurstr *, int32_t, int, BOOL); extern slurstr *slur_endslur(b_endslurstr *); extern slurstr *slur_startslur(b_slurstr *); extern uint32_t *string_check(uint32_t *, const char *, BOOL); extern int string_check_utf8(uschar *); extern void string_extend_buffer(void); extern char *string_format_barnumber(uint32_t); extern char *string_format_fixed(int32_t); extern char *string_format_key(uint32_t); extern char *string_format_multiple_fixed(const char *, ...); extern char *string_format_notelength(int32_t); extern char *string_format_pitch(uint16_t, BOOL); extern BOOL string_pmweq(uint32_t *, uint32_t *); extern uint32_t *string_pmw(uschar *, int); extern uint32_t *string_read(uint32_t, BOOL); extern BOOL string_read_plain(void); extern void string_relativize(void); extern void string_stavestring(BOOL); extern int32_t string_width(uint32_t *, fontinststr *, int32_t *); extern int strncmpic(const char*, const char *, int); extern uint32_t transpose_key(uint32_t); extern int16_t transpose_note(int16_t, int16_t *, uint8_t *, uint8_t, BOOL, BOOL, BOOL, BOOL, int); extern BOOL tree_insert(tree_node **, tree_node *); extern tree_node *tree_search(tree_node *, uschar *); #if SUPPORT_XML extern void xml_read(void); #endif /* End of functions.h */ pmw-5.22/src/pmw_read_header.c0000644000222100022210000020140114541067540014400 0ustar ph10ph10/************************************************* * PMW native header reading functions * *************************************************/ /* Copyright Philip Hazel 2021 */ /* This file created: December 2020 */ /* This file last modified: December 2023 */ #include "pmw.h" /* Options for reading 32-bit integer values */ #define int_f 1 /* fixed point */ #define int_u 2 /* unsigned */ #define int_uf (int_u|int_f) /* unsigned fixed point */ #define int_rs 4 /* relative if signed */ /************************************************* * Local data * *************************************************/ /* An empty PMW string */ static uint32_t empty_string[] = { 0 }; /* The table of header directives contains integer parameters that index into this list when setting global values that apply to all movements. */ enum { glob_drawbarlines, glob_kerning, glob_incpmwfont, glob_magnification, glob_maxvertjustify, glob_midifornotesoff, glob_nowidechars, glob_pagelength, glob_righttoleft, glob_sheetdepth, glob_sheetwidth }; static uint32_t *global_vars[] = { (uint32_t *)(&bar_use_draw), (uint32_t *)(&main_kerning), (uint32_t *)(&print_incPMWfont), (uint32_t *)(&main_magnification), (uint32_t *)(&main_maxvertjustify), (uint32_t *)(&main_midifornotesoff), (uint32_t *)(&stave_use_widechars), (uint32_t *)(&main_pagelength), (uint32_t *)(&main_righttoleft), (uint32_t *)(&main_sheetdepth), (uint32_t *)(&main_sheetwidth) }; /* Data for the b2pffont directive */ #if defined SUPPORT_B2PF && SUPPORT_B2PF != 0 typedef struct b2pfopt { const char *name; uint32_t option; } b2pfopt; static b2pfopt b2pf_options[] = { { "input_backchars", B2PF_INPUT_BACKCHARS }, { "input_backcodes", B2PF_INPUT_BACKCODES }, { "output_backchars", B2PF_OUTPUT_BACKCHARS }, { "output_backcodes", B2PF_OUTPUT_BACKCODES } }; #define b2pf_options_size (sizeof(b2pf_options)/sizeof(b2pfopt)) #endif /************************************************* * Local static variables * *************************************************/ static dirstr *dir; /* Points to found header directive */ /************************************************* * Read and set font type, if present * *************************************************/ /* If a recognized font type ("roman", "italic", etc.) is the next thing in the input, read it and put its index number into the current movement data structure, at a given offset. If what follows is not a recognized font type, do nothing. Argument: the offset for the result Returns: nothing */ static void set_fonttype(size_t offset) { size_t save_read_i; uint32_t save_read_c; uint32_t x; read_sigc(); if (!isalpha(read_c)) return; save_read_i = read_i; save_read_c = read_c; if ((x = font_readtype(TRUE)) != font_unknown) { *((uint8_t *)(((uschar *)curmovt) + offset)) = (uint8_t)x; } else { read_c = save_read_c; read_i = save_read_i; } } /************************************************* * Read and set font size * *************************************************/ /* This is for the table of font sizes in the movement structure. If the next thing in the input is a digit, read it as a font size. If not, do nothing. The size may be followed by a stretch and shear, if permitted. Multiple movements share the same font size structure until a change is made, in which case a new structure must be set up. Arguments: offset offset in fontsize structure for the fontinststr stretchOK TRUE if stretch and/or shearing are permitted for the font Returns: nothing */ static void set_fontsize(size_t offset, BOOL stretchOK) { read_sigc(); if (!isdigit(read_c)) return; /* If this movement is not the first and has not got its own fontsizes structure yet, set one up. */ if (!MFLAG(mf_copiedfontsizes)) { fontsizestr *new = mem_get(sizeof(fontsizestr)); *new = *(curmovt->fontsizes); curmovt->fontsizes = new; curmovt->flags |= mf_copiedfontsizes; } read_fontsize((fontinststr *)((char *)(curmovt->fontsizes) + offset), stretchOK); } /******************************************************************* * The following functions are referenced in the read_headstring * * vector of header directives. Each is called when the relevant * * directive is encountered. They all have the same interface: * * dir->arg1 and dir->arg2 contain up to two arguments associated * * with the directive. There are no arguments to the functions * * themselves, and they do not return any values. * ******************************************************************/ /************************************************* * Give warning for obsolete directive * *************************************************/ static void warning(void) { error(ERR39, dir->name); } /************************************************* * Give warning for obsolete directive * *************************************************/ /* For some directives we need to read the argument in case something else follows on the same input line. */ static void warningint(void) { int32_t x; if (read_expect_integer(&x, FALSE, FALSE)) error(ERR39, dir->name); } /************************************************* * Deal with font size * *************************************************/ static void movt_fontsize(void) { if (isdigit(read_c)) set_fontsize(dir->arg1, dir->arg2); else error(ERR8, "number"); } /************************************************* * Deal with font size and type * *************************************************/ static void movt_font(void) { usint x; set_fontsize(dir->arg2, TRUE); if ((x = font_readtype(FALSE)) != font_unknown) *((uint8_t *)(((uschar *)curmovt) + dir->arg1)) = x; } /************************************************* * Deal with movement flags * *************************************************/ /* The function is called for directives that just set or unset a bit in the movement flags. Some other flags are set/unset as part of a more complicated header directive. */ static void movt_flag(void) { if (dir->arg2) curmovt->flags |= dir->arg1; else curmovt->flags &= ~(dir->arg1); } /************************************************* * Deal with global boolean * *************************************************/ static void glob_bool(void) { if (movement_count == 1) *((BOOL *)(global_vars[dir->arg1])) = dir->arg2; else error(ERR40, dir->name); } /************************************************* * Deal with global 32-bit integer * *************************************************/ static void glob_int(void) { int32_t x; int32_t value = 0; int32_t flags = dir->arg2; int32_t *address = (int32_t *)(global_vars[dir->arg1]); if ((flags & int_rs) != 0 && (read_c == '+' || read_c == '-')) value = *address; if (read_expect_integer(&x, (flags & int_f) != 0, (flags & int_u) == 0)) { if (movement_count == 1) *address = value + x; else error(ERR40, dir->name); } } /************************************************* * Deal with movement 32-bit integer * *************************************************/ static void movt_int(void) { int32_t x; int32_t value = 0; int32_t flags = dir->arg2; int32_t *address = (int32_t *)((uschar *)curmovt + dir->arg1); if ((flags & int_rs) != 0 && (read_c == '+' || read_c == '-')) value = *address; if (read_expect_integer(&x, (flags & int_f) != 0, (flags & int_u) == 0)) *address = value + x; } /************************************************* * Deal with movement 8-bit integer * *************************************************/ /* These are always small positive numbers, with a specified maximum. */ static void movt_int8(void) { int32_t x; if (read_expect_integer(&x, FALSE, FALSE)) { if (x > dir->arg2) error(ERR38, dir->name, dir->arg2); else *((int8_t *)((uschar *)curmovt + dir->arg1)) = x; } } /************************************************* * Deal with header stave list * *************************************************/ /* Some lists turn into bit maps, others into chains of stavelist blocks (when a bit map would not distinguish between "1-2,2-4" and "1-4", for example). */ static void movt_list(void) { uschar *endptr; uint64_t *mapptr; stavelist **listptr; enum error_number n; if (dir->arg2) { mapptr = (uint64_t *)((uschar *)curmovt + dir->arg1); listptr = NULL; } else { mapptr = NULL; listptr = (stavelist **)((uschar *)curmovt + dir->arg1); } n = read_stavelist(main_readbuffer + read_i - 1, &endptr, mapptr, listptr); if (n != 0) { error(n); read_i = main_readlength; read_c = '\n'; } else { read_i = endptr - main_readbuffer; read_nextc(); } } /************************************************* * Deal with heading/footing text * *************************************************/ /* The bits in the map remember which have been read. This is so that those that persist by default, e.g. pageheading, can be overridden when supplied in a new movement. Some, e.g. heading, are always cleared at the start of a new movement, so this mechanism isn't necessary for them but it does no harm. */ static void movt_headfoot(void) { headstr **oldp = (headstr **)(((uschar *)curmovt) + dir->arg1); headstr *new = mem_get(sizeof(headstr)); /* Start a new chain if this is the first occurrence this movement. */ if ((read_headmap & dir->arg2) == 0) { read_headmap |= dir->arg2; *oldp = NULL; } /* Else find the end of the chain */ else while (*oldp != NULL) oldp = &((*oldp)->next); /* Add the new block onto the chain and initialize. */ *oldp = new; read_headfootingtext(new, dir->arg2, '\n'); } /************************************************* * Accadjusts * *************************************************/ static void accadjusts(void) { int i; int32_t *x = mem_get(NOTETYPE_COUNT*sizeof(int32_t)); for (i = 0; i < NOTETYPE_COUNT; i++) { if (read_c == ',') read_nextsigc(); if (read_c != '-' && read_c != '+' && !isdigit(read_c)) x[i] = 0; else (void)read_expect_integer(x+i, TRUE, TRUE); read_sigc(); } curmovt->accadjusts = x; } /************************************************* * Accspacing * *************************************************/ /* The ordering of accidentals has changed from the original PMW. In order to preserve compatibility with the specification, the widths here are read in a different order to the way the values are stored. If an additional value is given, it applies to the narrow Egyptian half sharp, which otherwise is set 0.2 points narrower than a normal sharp. This is stored in the "no accidental" slot in the table. */ static void accspacing(void) { int i; uint32_t *x = mem_get(ACCSPACE_COUNT*sizeof(uint32_t)); memcpy(x, curmovt->accspacing, ACCSPACE_COUNT*sizeof(uint32_t)); curmovt->accspacing = x; for (i = 0; i < 5; i++) { int32_t w; if (read_c == ',') read_nextsigc(); if (!read_expect_integer(&w, TRUE, FALSE)) break; switch(i) { case 0: x[ac_ds] = w; break; /* double sharp */ case 1: x[ac_hf] = x[ac_fl] = w; break; /* half flat & flat */ case 2: x[ac_df] = w; break; /* double flat */ case 3: x[ac_nt] = w; break; /* natural */ case 4: x[ac_hs] = x[ac_sh] = w; break; /* half sharp and sharp */ } read_sigc(); } if (isdigit(read_c)) (void)read_expect_integer((int32_t *)(&(x[ac_no])), TRUE, FALSE); else x[ac_no] = x[ac_sh] - 200; } /************************************************* * Set up font for B2PF processing * *************************************************/ /* The b2pffont directive is available only if explicitely selected when PMW is built. It is permitted only in the first movement of a file (like textfont). */ static void b2pffont(void) { #if !defined SUPPORT_B2PF || SUPPORT_B2PF == 0 error(ERR76); /* Hard error: not supported */ #else int rc; usint fontid, ln; uint32_t options = B2PF_UTF_32; if (movement_count != 1) { error(ERR40); return; } read_sigc(); if ((fontid = font_readtype(FALSE)) == font_unknown) return; if (font_b2pf_contexts[fontid] != NULL) error(ERR77); /* Hard */ /* Read B2PF options */ read_sigc(); while (read_c != '\"') { size_t i; read_nextword(); for (i = 0; i < b2pf_options_size; i++) { if (Ustrcmp(read_wordbuffer, b2pf_options[i].name) == 0) { options |= b2pf_options[i].option; break; } } if (i >= b2pf_options_size) { error(ERR78, read_wordbuffer); break; } read_sigc(); } font_b2pf_options[fontid] = options; /* Remember processing options */ /* Read the B2PF context name */ if (!string_read_plain()) { error(ERR8, "B2PF context name (quoted)"); return; } /* Create a B2PF context for this font (there are currently no context create options). */ rc = b2pf_context_create((const char *)read_stringbuffer, (const char *)font_data_extra, 0, font_b2pf_contexts + fontid, NULL, NULL, NULL, &ln); /* If there are more strings in quotes, add them as extra context rules. */ if (rc == B2PF_SUCCESS) { read_sigc(); while (read_c == '\"') { (void)string_read_plain(); /* Can't fail if leading quote seen */ rc = b2pf_context_add_file(font_b2pf_contexts[fontid], (const char *)read_stringbuffer, (const char *)font_data_extra, 0, &ln); if (rc != B2PF_SUCCESS) break; read_sigc(); } } if (rc != B2PF_SUCCESS) { size_t buffused; char buffer[128]; (void)b2pf_get_error_message(rc, buffer, sizeof(buffer), &buffused, 0); buffer[buffused] = 0; error(ERR79, buffer); /* Hard */ } #endif /* SUPPORT_B2PF */ } /************************************************* * Bar (initial bar number) * *************************************************/ /* The value retained is one less than the given number, that is, it is an offset to add to the default number. */ static void bar(void) { movt_int(); curmovt->baroffset -= 1; } /************************************************* * Barlinespace * *************************************************/ /* We have to set the default here in case the directive uses + or - to adjust the value. Note that this code is replicated in paginate.c. */ static void barlinespace(void) { if (read_c == '*') { curmovt->barlinespace = FIXED_UNSET; read_nextsigc(); } else { if (curmovt->barlinespace == FIXED_UNSET) { curmovt->barlinespace = (curmovt->note_spacing)[minim]/2 - 5000; if (curmovt->barlinespace < 3000) curmovt->barlinespace = 3000; } movt_int(); } } /************************************************* * Barnumberlevel * *************************************************/ /* A sign is mandatory */ static void barnumberlevel(void) { if (read_c != '+' && read_c != '-') error(ERR8, "\"+\" or \"-\""); else movt_int(); } /************************************************* * Barnumbers * *************************************************/ static void barnumbers(void) { BOOL wordread = FALSE; curmovt->barnumber_textflags = 0; if (isalpha(read_c)) { read_nextword(); read_sigc(); if (Ustrcmp(read_wordbuffer, "boxed") == 0) curmovt->barnumber_textflags = text_boxed; else if (Ustrcmp(read_wordbuffer, "roundboxed") == 0) curmovt->barnumber_textflags = text_boxed | text_boxrounded; else if (Ustrcmp(read_wordbuffer, "ringed") == 0) curmovt->barnumber_textflags = text_ringed; else wordread = TRUE; } if (!wordread && isalpha(read_c)) { read_nextword(); wordread = TRUE; } if (wordread) { if (Ustrcmp(read_wordbuffer, "line") == 0) curmovt->barnumber_interval = -1; else { error(ERR8, "\"line\""); return; } } else { if (!read_expect_integer(&(curmovt->barnumber_interval), FALSE, FALSE)) return; } set_fontsize(offsetof(fontsizestr, fontsize_barnumber), TRUE); set_fonttype(offsetof(movtstr, fonttype_barnumber)); } /************************************************* * Breakbarlines[x] * *************************************************/ static void breakbarlines(void) { if (!isdigit(read_c)) curmovt->breakbarlines = ~0LU; else movt_list(); if (dir->name[13] == 'x') curmovt->flags |= mf_fullbarend; else curmovt->flags &= ~mf_fullbarend; } /************************************************* * Clef size (relative) * *************************************************/ /* The clef font size is relative to a 10-point font, which is why it gets multiplied by 10. */ static void clefsize(void) { movt_fontsize(); curmovt->fontsizes->fontsize_midclefs.size *= 10; } /************************************************ * Clef widths * ************************************************/ /* There are only five different clef shapes, whose widths can be set here. The widths are applied to all clefs of the same shape. */ /* These are the five basic clef shapes, in the order in which their widths must be specifed in the "clefwidths" directive. */ static uint8_t clef_shapes[] = { clef_treble, clef_bass, clef_alto, clef_hclef, clef_none }; /* These are the basic clef shapes that apply to each actual clef. */ static uint8_t clef_shape_list[] = { clef_alto, /* alto */ clef_bass, /* baritone */ clef_bass, /* bass */ clef_alto, /* cbaritone */ clef_bass, /* contrabass */ clef_bass, /* deepbass */ clef_hclef, /* hclef */ clef_alto, /* mezzo */ clef_none, /* none */ clef_bass, /* soprabass */ clef_alto, /* soprano */ clef_alto, /* tenor */ clef_treble, /* treble */ clef_treble, /* trebledescant */ clef_treble, /* trebletenor */ clef_treble /* trebletenorB */ }; static void clefwidths(void) { usint i, j; for (i = 0; i < (sizeof(clef_shapes)/sizeof(uint8_t)) && isdigit(read_c); i++) { int32_t width; (void)read_expect_integer(&width, FALSE, FALSE); if (read_c == ',') read_nextc(); read_sigc(); for (j = 0; j < CLEF_COUNT; j++) if (clef_shape_list[j] == clef_shapes[i]) curmovt->clefwidths[j] = width; } } /************************************************* * Copyzero * *************************************************/ static void copyzero(void) { zerocopystr **pp = &(curmovt->zerocopy); if (!isdigit(read_c)) { error(ERR8, "stave number"); return; } while (isdigit(read_c)) { zerocopystr *p = mem_get(sizeof(zerocopystr)); *pp = p; pp = &(p->next); p->next = NULL; p->stavenumber = read_usint(); if (read_c == '/') { read_nextc(); if (!read_expect_integer(&(p->adjust), TRUE, TRUE)) break; } else p->adjust = 0; p->baradjust = 0; read_sigc(); if (read_c == ',') read_nextsigc(); } } /************************************************* * Doublenotes * *************************************************/ static void doublenotes(void) { curmovt->notenum *= 2; curmovt->time = read_scaletime(curmovt->time_unscaled); } /************************************************* * DrawStaveLines * *************************************************/ static void drawstavelines(void) { int x = 3; if (isdigit(read_c)) x = read_usint(); if (movement_count == 1) stave_use_draw = x; else error(ERR40, dir->name); } /************************************************* * EPS * *************************************************/ static void eps(void) { if (movement_count == 1) print_imposition = pc_EPS; else error(ERR40, dir->name); } /************************************************* * Gracespacing * *************************************************/ /* Read up to two fixed point numbers, second defaulting to the first; "+" and "-" can be used to adjust values. */ static void gracespacing(void) { int32_t arg; int32_t value = 0; BOOL wasrelative = FALSE; if (read_c == '+' || read_c == '-') { value = curmovt->gracespacing[0]; wasrelative = TRUE; } if (!read_expect_integer(&arg, TRUE, TRUE)) return; curmovt->gracespacing[0] = value + arg; read_sigc(); if (read_c == ',') read_nextsigc(); if (!isdigit(read_c) && read_c != '+' && read_c != '-') { curmovt->gracespacing[1] = wasrelative? curmovt->gracespacing[1] + arg : curmovt->gracespacing[0]; return; } value = (read_c == '+' || read_c == '-')? curmovt->gracespacing[1] : 0; if (!read_expect_integer(&arg, TRUE, TRUE)) return; curmovt->gracespacing[1] = value + arg; } /************************************************* * Halvenotes * *************************************************/ static void halvenotes(void) { if (curmovt->notenum > 1) curmovt->notenum /= 2; else curmovt->noteden *= 2; curmovt->time = read_scaletime(curmovt->time_unscaled); } /************************************************* * Hyphenstring * *************************************************/ static void hyphenstring(void) { curmovt->hyphenstring = string_read(font_rm, TRUE); } /************************************************* * Justify * *************************************************/ static void justify(void) { uint8_t yield = just_none; for (;;) { if (isalpha(read_c)) { size_t backup_i = read_i; uint32_t backup_c = read_c; read_nextword(); if (Ustrcmp(read_wordbuffer, "top") == 0) yield |= just_top; else if (Ustrcmp(read_wordbuffer, "bottom") == 0) yield |= just_bottom; else if (Ustrcmp(read_wordbuffer, "left") == 0) yield |= just_left; else if (Ustrcmp(read_wordbuffer, "right") == 0) yield |= just_right; else if (Ustrcmp(read_wordbuffer, "all") == 0) yield |= just_all; else { read_i = backup_i; read_c = backup_c; break; } } else break; read_sigc(); } curmovt->justify = yield; } /************************************************* * Key * *************************************************/ /* After setting the key for this movement, ensure the transpose data is updated, in case there are transposed text strings in the subsequent heading or footing lines. */ static void key(void) { curmovt->key = read_key(); (void)transpose_key(curmovt->key); } /************************************************* * Keytranspose * *************************************************/ static void keytranspose(void) { int32_t x, y; keytransstr *k; uint32_t oldkey = read_key(); if (oldkey == key_N) { error(ERR8, "transposable key signature"); return; } /* Find any existing setting; if found, it gets overwritten. */ for (k = main_keytranspose; k != NULL; k = k->next) { if (k->oldkey == oldkey) break; } /* No existing setting, create a new one. */ if (k == NULL) { int i; k = mem_get(sizeof(keytransstr)); k->oldkey = oldkey; k->next = main_keytranspose; main_keytranspose = k; for (i = 0; i < 24; i++) { k->newkeys[i] = KEY_UNSET; k->letterchanges[i] = 0; } } /* Now read the data. Transposition is in semitones for backwards compatibility, but one day quarter tones may be allowed, so we actually work in quarter tones. */ for (;;) { read_sigc(); if (!isdigitorsign(read_c)) return; if (!read_expect_integer(&x, FALSE, TRUE)) return; x *= 2; /* Quarter tones */ while (x > 23) x -= 24; while (x < 0) x += 24; read_sigc(); if (read_c != '=') { error(ERR8, "'='"); break; } read_nextc(); k->newkeys[x] = read_key(); if (read_c != '/') { error(ERR8, "'/'"); break; } read_nextc(); if (!read_expect_integer(&y, FALSE, TRUE)) break; if (y < -6 || y > 6) { error(ERR8, "number in the range -6 to +6"); break; } if (abs(y) > x + 1) { error(ERR46, y, x); break; } k->letterchanges[x] = y; } /* We get here only if there's been an error after setting up x. */ k->newkeys[x] = oldkey; k->letterchanges[x] = 0; } /************************************************* * Landscape * *************************************************/ static void landscape(void) { uint32_t temp = curmovt->linelength; curmovt->linelength = main_pagelength; main_pagelength = temp; if (main_sheetsize == sheet_A5) main_pagelength -= 28000; temp = main_sheetwidth; main_sheetwidth = main_sheetdepth; main_sheetdepth = temp; main_landscape = TRUE; if (movement_count != 1) error(ERR40, dir->name); } /************************************************* * Layout * *************************************************/ static void layout(void) { uint16_t temp[MAX_LAYOUT * 2]; usint stack[MAX_LAYOUT_STACK]; usint ptr = 0; usint level = 0; for (;;) { int32_t value; read_sigc(); /* Reached end of layout list. */ if (!isdigit(read_c)) { if (ptr == 0 || level > 0) { error(ERR8, "number"); return; } /* Final item is always repeat back to start */ temp[ptr++] = lv_repeatptr; temp[ptr++] = 0; /* Save in correct size piece of store */ curmovt->layout = mem_get(ptr*sizeof(uint16_t)); memcpy(curmovt->layout, temp, ptr*sizeof(uint16_t)); return; } /* Value must be > 0 */ (void)read_expect_integer(&value, FALSE, FALSE); if (value == 0) { error(ERR13, "zero value changed to 1"); value = 1; } /* If a number is followed by '(' it is a repeat count */ read_sigc(); if (read_c == '(') { read_nextc(); temp[ptr++] = lv_repeatcount; temp[ptr++] = value; stack[level++] = ptr; } /* Else it is a barcount value, with varying terminators. If none of the specials, it does nothing, and another number will be a continuation, while anything else is the next directive. There may be a number of these terminators. */ else { temp[ptr++] = lv_barcount; temp[ptr++] = value; for (;;) { if (read_c == ',') { read_nextsigc(); break; } /* Close bracket is the end of a repeat. Check nesting. It can be followed by comma, semicolon, or another bracket. */ else if (read_c == ')') { if (level == 0) { error(ERR8, "closing bracket not"); return; } else { temp[ptr++] = lv_repeatptr; temp[ptr++] = stack[--level]; } read_nextsigc(); } /* Semicolon generates a new page item */ else if (read_c == ';') { temp[ptr++] = lv_newpage; read_nextsigc(); } /* Anything else, just carry on with the big loop */ else break; } } } } /************************************************* * Makekey * *************************************************/ /* Read the definition of a custom key signature. A maximum of MAX_KEYACCS accidentals are supported. */ static void makekey(void) { int32_t i, n; uint8_t *kp; if (toupper(read_c) != 'X' || (read_nextc(), !read_expect_integer(&n, FALSE, FALSE)) || n == 0 || n > MAX_XKEYS) { error(ERR44, MAX_XKEYS); return; } kp = &(keysigtable[key_X + n - 1][0]); for (i = 0;; i++) { usint ac; read_sigc(); if (strchr("#$%", read_c) == NULL) break; if (i >= MAX_KEYACCS) { error_skip(ERR45, '\n', MAX_KEYACCS); break; } if (read_c == '%') { ac = ac_nt; } else { uint32_t peek_c = main_readbuffer[read_i]; ac = (read_c == '#')? ac_sh : ac_fl; if (peek_c == read_c) { ac++; read_i++; } else if (peek_c == '-') { ac--; read_i++; } } read_nextc(); if (!read_expect_integer(&n, FALSE, FALSE)) break; if (n > 9) { error(ERR8, "number between 0 and 9"); break; } /* The "makekey" directive numbers accidental positions from 0 for the bottom line, so we must add 1 because the new way of handling key signatures has zero for the space below the bottom line. Each item in a key signature list has an accidental in the top four bits and a position in the bottom four. */ kp[i] = (ac << 4) | (n + 1); } /* Mark the end of the list */ kp[i] = ks_end; } /************************************************* * Maxbeamslope * *************************************************/ static void maxbeamslope(void) { if (!read_expect_integer(&(curmovt->maxbeamslope[0]), TRUE, FALSE)) return; if (!read_expect_integer(&(curmovt->maxbeamslope[1]), TRUE, FALSE)) return; } /************************************************* * Midichannel * *************************************************/ static void midichannel(void) { int32_t channel; /* A channel number is always expected */ if (!read_expect_integer(&channel, FALSE, FALSE)) return; if (channel < 1 || channel > MIDI_MAXCHANNEL) { error(ERR48, "channel", channel, MIDI_MAXCHANNEL); channel = 1; } /* Remember which channels have been set for this movement. */ mac_setbit(curmovt->midichanset, channel); /* Deal with an optional voice setting */ if (string_read_plain()) { int voicenumber; if (read_stringbuffer[0] == 0) voicenumber = 129; /* >= 128 => don't do MIDI voice setting */ else { if (read_stringbuffer[0] == '#') voicenumber = Uatoi(read_stringbuffer+1); else voicenumber = read_getmidinumber(midi_voicenames, read_stringbuffer, US"voice"); if (voicenumber < 1 || voicenumber > 128) { error(ERR48, "voice", 128); voicenumber = 1; } } curmovt->midivoice[channel-1] = voicenumber - 1; /* There may be an optional volume setting */ if (read_c == '/') { int32_t vol; read_nextc(); if (read_expect_integer(&vol, FALSE, FALSE)) { if (vol > 15) error(ERR8, "number between 0 and 15"); else (curmovt->midichannelvolume)[channel-1] = vol; } } } /* Deal with an optional stave list */ read_sigc(); if (isdigit(read_c)) { int i; int pitch = 0; uint64_t map; uschar *endptr; enum error_number n; n = read_stavelist(main_readbuffer + read_i - 1, &endptr, &map, NULL); if (n != 0) { error(n); read_i = main_readlength; read_c = '\n'; } else { read_i = endptr - main_readbuffer; read_nextc(); } /* Deal with optional 'pitch' forcing */ if (string_read_plain()) { if (read_stringbuffer[0] == 0) pitch = 0; /* => don't do MIDI pitch forcing */ else if (read_stringbuffer[0] == '#') pitch = Uatoi(read_stringbuffer+1); else pitch = read_getmidinumber(midi_percnames, read_stringbuffer, US"percussion instrument"); } /* Now update the per-stave data */ for (i = 1; i <= MAX_STAVE; i++) { if ((map & (1lu << i)) != 0) { if (pitch != 0) curmovt->midinote[i] = pitch; curmovt->midichannel[i] = channel; } } } } /************************************************* * Midistart * *************************************************/ /* The mf_midistart flag indicates that the data was obtained for this movement. This prevents it being freed more than once when it is copied to a subsequent movement. */ static void midistart(void) { usint max = 0; usint count = 0; uint8_t *temp = NULL; /* Just in case there are two occurrences */ if (MFLAG(mf_midistart)) { free(curmovt->midistart); curmovt->midistart = NULL; curmovt->flags &= ~mf_midistart; } for (;;) { int32_t value; read_sigc(); if (!isdigit(read_c)) { if (count == 0) { error(ERR8, "number"); return; } temp[0] = count; curmovt->midistart = temp; curmovt->flags |= mf_midistart; return; } /* Ensure there's enough memory */ if (++count >= max) { max += MIDI_START_CHUNKSIZE; temp = realloc(temp, max*sizeof(uint8_t)); if (temp == NULL) error(ERR0, "re-", "MIDI start buffer", max*sizeof(uint8_t)); } (void)read_expect_integer(&value, FALSE, FALSE); if (value < 0 || value > 255) error(ERR8, "number in range 0-255"); temp[count] = value; } } /************************************************* * Miditempo * *************************************************/ static void miditempo(void) { BOOL barerror = FALSE; int i = 0; uint32_t lastbar = 0; uint32_t list[2*MIDI_MAXTEMPOCHANGE]; movt_int(); /* Read a single number for the base tempo */ curmovt->miditempochanges = NULL; /* Just in case */ read_sigc(); if (read_c == ',') read_nextsigc(); /* Now look for additional data giving tempo changes within a movement. Logical bar numbers can have a fractional part. They are stored in two 16-bit parts. */ while (isdigit(read_c)) { int32_t tempo; uint32_t bar = read_barnumber(); if (read_c != '/') { error(ERR8, "/"); break; } read_nextc(); if (!read_expect_integer(&tempo, FALSE, FALSE)) break; if (bar <= lastbar && !barerror) { error(ERR51); barerror = TRUE; } lastbar = bar; if (i >= 2 * MIDI_MAXTEMPOCHANGE) { error(ERR50, MIDI_MAXTEMPOCHANGE); break; } list[i++] = bar; list[i++] = tempo; read_sigc(); if (read_c == ',') read_nextsigc(); } if (i > 0) { curmovt->miditempochanges = mem_get((i+1) * sizeof(uint32_t)); memcpy(curmovt->miditempochanges, list, i * sizeof(uint32_t)); curmovt->miditempochanges[i] = UINT32_MAX; } } /************************************************* * Miditranspose * *************************************************/ static void miditranspose(void) { while (isdigit(read_c)) { int32_t amount; uint32_t stave = read_usint(); read_sigc(); if (read_c != '/') { error(ERR8, "/"); return; } read_nextc(); if (!read_expect_integer(&amount, FALSE, TRUE)) return; read_sigc(); (curmovt->miditranspose)[stave] = amount; if (read_c == ',') read_nextc(); read_sigc(); } } /************************************************* * Midivolume * *************************************************/ static void midivolume(void) { int i, v; if (!read_expect_integer(&v, FALSE, FALSE)) return; /* Default setting */ if (v > 15) { error(ERR8, "Number between 0 and 15"); return; } for (i = 1; i <= MAX_STAVE; i++) (curmovt->midistavevolume)[i] = v; /* Now look for additional data giving individual stave volumes */ read_sigc(); if (read_c == ',') read_nextsigc(); while (isdigit(read_c)) { uint32_t stave = read_usint(); if (stave > MAX_STAVE) { error(ERR10); stave = 1; } if (read_c != '/') { error(ERR8, "/"); break; } read_nextc(); if (!read_expect_integer(&v, FALSE, FALSE)) break; if (v > 15) { error(ERR8, "Number between 0 and 15"); break; } (curmovt->midistavevolume)[stave] = v; read_sigc(); if (read_c == ',') read_nextsigc(); } } /************************************************* * Notespacing * *************************************************/ static void notespacing(void) { int i; int32_t f; read_sigc(); /* Adjust movement note spacings by multiplication */ if (read_c == '*') { read_nextc(); if (!read_expect_integer(&f, TRUE, FALSE)) return; if (read_c == '/') { int32_t d; read_nextc(); if (!read_expect_integer(&d, TRUE, FALSE)) return; f = mac_muldiv(f, 1000, d); } for (i = 0; i < NOTETYPE_COUNT; i++) curmovt->note_spacing[i] = (f * curmovt->note_spacing[i])/1000; } /* Set absolute note spacings and make current */ else { for (i = 0; i < NOTETYPE_COUNT; i++) { if (!isdigit(read_c)) return; if (!read_expect_integer(&f, TRUE, FALSE)) return; curmovt->note_spacing[i] = read_absnotespacing[i] = f; read_sigc(); if (read_c == ',') read_nextsigc(); } } } /************************************************* * Page * *************************************************/ static void page(void) { if (movement_count != 1) { error(ERR40, dir->name); return; } if (!read_expect_integer((int32_t *)(&page_firstnumber), FALSE, FALSE)) return; read_sigc(); page_increment = 1; if (!isdigit(read_c)) return; (void)read_expect_integer((int32_t *)(&page_increment), FALSE, FALSE); } /************************************************* * PMW version check * *************************************************/ static void pmwversion(void) { BOOL ok = FALSE; int c = '='; int32_t v, vv; float f; if (read_c == '>' || read_c == '<' || read_c == '=') { c = read_c; read_nextc(); if (read_c == '=') { c = (c << 8) | read_c; read_nextc(); } } if (!read_expect_integer(&v, TRUE, FALSE)) return; (void)sscanf(PMW_VERSION, "%f", &f); vv = (int32_t)(f * 1000.0); switch (c) { case '<': ok = vv < v; break; case ('<'<<8)|'=': ok = vv <= v; break; case '=': case ('='<<8)|'=': ok = vv == v; break; case ('>'<<8)|'=': ok = vv >= v; break; case '>': ok = vv > v; break; } if (!ok) error(ERR53, c, string_format_fixed(v), PMW_VERSION); /* Hard */ } /************************************************* * Printkey * *************************************************/ static void printkey(void) { dirstr *d; pkeystr *p = mem_get(sizeof(pkeystr)); p->next = main_printkey; p->movt_number = movement_count; main_printkey = p; p->key = read_key(); read_nextword(); d = read_stave_searchdirlist(TRUE); if (d == NULL) { error_skip(ERR8, '\n', "clef name"); return; } p->clef = d->arg1; p->string = string_read(font_mf, TRUE); read_sigc(); p->cstring = (read_c == '"')? string_read(font_mf, TRUE) : empty_string; } /************************************************* * Printtime * *************************************************/ /* Local subroutine to deal with one PMW string possibly followed by /s or /S and a number. Arguments: s pointer to where to put a pointer to the string sizeptr pointer to where to put the font offset Returns: TRUE if all goes well; FALSE on error */ static BOOL ptstring(uint32_t **s, uint8_t *sizeptr) { *s = string_read(curmovt->fonttype_time, TRUE); if (*s == NULL) return FALSE; if (read_c == '/') { int32_t size; read_nextc(); if (read_c == 's') { read_nextc(); if (!read_expect_integer(&size, FALSE, FALSE)) return FALSE; if ((size -= 1) >= UserFontSizes) return error(ERR75, UserFontSizes); } else if (read_c == 'S') { read_nextc(); if (!read_expect_integer(&size, FALSE, FALSE)) return FALSE; if ((size -= 1) >= FixedFontSizes) return error(ERR75, FixedFontSizes); size += UserFontSizes; } else { error(ERR8, "/s or /S"); return FALSE; } *sizeptr = size; } else *sizeptr = ff_offset_ts; return TRUE; } /* The actual routine */ static void printtime(void) { ptimestr *p = mem_get(sizeof(ptimestr)); p->next = main_printtime; p->movt_number = movement_count; main_printtime = p; if ((p->time = read_time()) == 0) return; if (!ptstring(&(p->top), &(p->sizetop))) return; (void)ptstring(&(p->bot), &(p->sizebot)); } /************************************************* * Rehearsalmarks * *************************************************/ static void rehearsalmarks(void) { while (isalpha(read_c)) { read_nextword(); read_sigc(); if (Ustrcmp(read_wordbuffer, "linestartleft") == 0) { curmovt->flags |= mf_rehearsallsleft; continue; } if (Ustrcmp(read_wordbuffer, "nolinestartleft") == 0) { curmovt->flags &= ~mf_rehearsallsleft; continue; } if (Ustrcmp(read_wordbuffer, "roundboxed") == 0) curmovt->rehearsalstyle = text_boxed | text_boxrounded; else if (Ustrcmp(read_wordbuffer, "boxed") == 0) curmovt->rehearsalstyle = text_boxed; else if (Ustrcmp(read_wordbuffer, "ringed") == 0) curmovt->rehearsalstyle = text_ringed; else if (Ustrcmp(read_wordbuffer, "plain") == 0) curmovt->rehearsalstyle = 0; else error(ERR8, "\"boxed\", \"roundboxed\", \"ringed\", or \"plain\""); break; } set_fontsize(offsetof(fontsizestr, fontsize_rehearse), TRUE); set_fonttype(offsetof(movtstr, fonttype_rehearse)); } /************************************************* * Repeatstyle * *************************************************/ /* Repeat styles run from 0 to MAX_REPEATSTYLE, but can have 10 added to request "wings". This causes the mf_repeatwings flag to be set. */ static void repeatstyle(void) { int32_t x; if (read_expect_integer(&x, FALSE, FALSE)) { if (x >= 10) { x -= 10; curmovt->flags |= mf_repeatwings; } if (x <= MAX_REPEATSTYLE) curmovt->repeatstyle = x; else error(ERR174, MAX_REPEATSTYLE, MAX_REPEATSTYLE + 10); } } /************************************************* * Selectstaves * *************************************************/ static void selectstaves(void) { movt_list(); curmovt->select_staves |= 1; /* Stave 0 always selected */ /* Give a warning if "selectstaves" conflicts with -s. */ if (main_selectedstaves != ~0uL && main_selectedstaves != curmovt->select_staves) error(ERR169); } /************************************************* * Sheetdepth and sheetwidth * *************************************************/ static void sheetdim(void) { main_sheetsize = sheet_unknown; glob_int(); } /************************************************* * Sheetsize * *************************************************/ /* Sheetsize handles sheetdepth and sheetwidth via a set of named paper sizes. It also adjusts the default line length. */ static void sheetsize(void) { usint i; sheetstr *s; if (movement_count != 1) error(ERR40, dir->name); read_nextword(); for (i = 0; i < sheets_count; i++) { s = sheets_list + i; if (Ustrcmp(read_wordbuffer, s->name) == 0) break; } if (i < sheets_count) { curmovt->linelength = s->linelength; main_pagelength = s->pagelength; main_sheetdepth = s->sheetdepth; main_sheetwidth = s->sheetwidth; main_sheetsize = s->sheetsize; } else error(ERR8, "\"A3\", \"A4\", \"A5\", \"B5\", or \"letter\""); } /************************************************* * Startbracketbar * *************************************************/ static void startbracketbar(void) { if (isalpha(read_c)) { read_nextword(); if (Ustrcmp(read_wordbuffer, "join") == 0) curmovt->flags |= mf_startjoin; else if (Ustrcmp(read_wordbuffer, "nojoin") == 0) curmovt->flags &= ~mf_startjoin; else { error(ERR8, "\"join\" or \"nojoin\""); return; } } read_expect_integer(&curmovt->startbracketbar, FALSE, FALSE); } /************************************************* * Startlinespacing * *************************************************/ static void startlinespacing(void) { usint i; for (i = 0; i < 4; i++) { if (isdigit(read_c) || read_c == '-' || read_c == '+') { (void)read_expect_integer(&(curmovt->startspace[i]), TRUE, TRUE); if (read_c == ',') read_nextc(); read_sigc(); } else curmovt->startspace[i] = 0; } } /************************************************* * Stavesize * *************************************************/ /* Use a new memory block so that the setting applies only to this and any subsequent movements. */ static void stavesize(void) { int32_t *stavesizes = mem_get((MAX_STAVE+1)*sizeof(int32_t)); memcpy(stavesizes, curmovt->stavesizes, (MAX_STAVE+1)*sizeof(int32_t)); curmovt->stavesizes = stavesizes; while (isdigit(read_c)) { int32_t size; uint32_t stave = read_usint(); if (stave > MAX_STAVE) { error(ERR10); stave = 1; } if (read_c != '/') { error(ERR8, "/"); return; } read_nextc(); if (!read_expect_integer(&size, TRUE, FALSE)) return; stavesizes[stave] = size; read_sigc(); if (read_c == ',') read_nextsigc(); } } /************************************************* * Stavespacing * *************************************************/ static void stavespacing(void) { usint stave; int32_t space, ensure; uint64_t done = 0; uint32_t save_c = read_c; size_t save_i = read_i; BOOL all; if (!isdigit(read_c)) { error(ERR8, "number"); return; } /* Read the first number, check its terminator, then prepare to re-read depending on what it is. */ stave = read_usint(); all = read_c != '/'; read_c = save_c; read_i = save_i; /* If the first argument is an integer not ending in '/', read it as a dimension that applies to all staves. */ if (all) { space = read_fixed(); for (int i = 1; i <= MAX_STAVE; i++) curmovt->stave_spacing[i] = space; if (read_c == ',') read_nextc(); read_sigc(); } /* Now scan for stave/dimension pairs and triples */ while (isdigit(read_c)) { stave = read_usint(); if (read_c != '/') { error(ERR8, "/"); return; } read_nextc(); if (!read_expect_integer(&space, TRUE, FALSE)) return; read_sigc(); if (read_c == '/') { ensure = space; read_nextc(); if (!read_expect_integer(&space, TRUE, FALSE)) return; } else ensure = 0; if (stave == 0) error(ERR55, "stave spacing"); else { if (mac_isbit(done, stave)) error(ERR54, stave, US"stavespacing"); mac_setbit(done, stave); curmovt->stave_spacing[stave] = space; curmovt->stave_ensure[stave] = ensure; } if (read_c == ',') read_nextc(); read_sigc(); } } /************************************************ * Stem lengths * ************************************************/ static void stemlengths(void) { usint i; for (i = 2; i < NOTETYPE_COUNT && (read_c == '-' || read_c == '+' || isdigit(read_c)); i++) { (void)read_expect_integer(&(curmovt->stemadjusts[i]), TRUE, TRUE); if (read_c == ',') read_nextc(); read_sigc(); } } /************************************************* * Stemswap * *************************************************/ static void stemswap(void) { read_nextword(); if (Ustrcmp(read_wordbuffer, "up") == 0) curmovt->stemswaptype = stemswap_up; else if (Ustrcmp(read_wordbuffer, "down") == 0) curmovt->stemswaptype = stemswap_down; else if (Ustrcmp(read_wordbuffer, "left") == 0) curmovt->stemswaptype = stemswap_left; else if (Ustrcmp(read_wordbuffer, "right") == 0) curmovt->stemswaptype = stemswap_right; else error(ERR8, "\"up\", \"down\", \"left\", or \"right\""); } /************************************************* * Stemswaplevel * *************************************************/ static void stemswaplevel(void) { int32_t level; uint64_t done = 0; uint32_t save_c = read_c; size_t save_i = read_i; /* Read the first number, check its terminator, then prepare to re-read depending on what it is. */ if (!read_expect_integer(&level, FALSE, TRUE)) return; /* If the first argument does not end in '/', it is a value that applies to all staves. */ if (read_c != '/') { int i; for (i = 1; i <= MAX_STAVE; i++) curmovt->stemswaplevel[i] = level; read_sigcc(); } else { read_c = save_c; read_i = save_i; } /* Now scan for stave/adjustment pairs */ while (isdigit(read_c)) { usint stave = read_usint(); if (read_c != '/') { error(ERR8, "/"); return; } read_nextc(); if (!read_expect_integer(&level, FALSE, TRUE)) return; if (stave == 0) error(ERR55, "stem swap level"); else { if (mac_isbit(done, stave)) error(ERR54, stave, US"stemswaplevel"); mac_setbit(done, stave); curmovt->stemswaplevel[stave] = level; } read_sigcc(); } } /************************************************* * Systemseparator * *************************************************/ static void systemseparator(void) { if (!read_expect_integer((int32_t *)(&(curmovt->systemseplength)), TRUE, FALSE)) return; read_nextsigc(); if (!isdigit(read_c)) return; curmovt->systemsepwidth = read_fixed(); for (int i = 0; i < 3; i++) { int32_t value; read_nextsigc(); if (!isdigit(read_c) && read_c != '+' && read_c != '-') return; if (!read_expect_integer(&value, TRUE, TRUE)) return; if (i == 0) curmovt->systemsepangle = value; else if (i == 1) curmovt->systemsepposx = value; else curmovt->systemsepposy = value; } } /************************************************* * Textfont * *************************************************/ /* This also handles musicfont, if arg1 is non-zero. */ static void textfont(void) { uint32_t flags = 0; uint32_t fontid, n; /* Font selection is permitted only in the first movement */ if (movement_count != 1) { error(ERR40, dir->name); return; } /* If a font type is given (music font), use it, else read a font word or "extra ", optionally followed by "include". */ if (dir->arg1 >= 0) fontid = dir->arg1; else { if ((fontid = font_readtype(FALSE)) == font_unknown) return; read_sigc(); if (read_c != '"') { read_nextword(); if (Ustrcmp(read_wordbuffer, "include") == 0) flags = ff_include; else { error(ERR8, "\"include\" or a string"); return; } } } /* Read the font name and see if is already in the font list. If it is, set its number in the font table, enable include if required, and return. If not, set it up as a new font. */ if (!string_read_plain()) { error(ERR8, "string"); return; } n = font_search(read_stringbuffer); if (n != font_unknown) { font_table[fontid] = n; font_list[n].flags |= flags; } else { font_addfont(read_stringbuffer, fontid, flags); } } /************************************************* * Textsizes * *************************************************/ /* Note: set_fontsize() does nothing if the next character is not a digit. */ static void textsizes(void) { int i; for (i = 0; i < UserFontSizes; i++) { set_fontsize(offsetof(fontsizestr, fontsize_text) + i*sizeof(fontinststr), TRUE); if (read_c == ',') read_nextc(); } read_sigc(); if (isdigit(read_c)) error_skip('\n', ERR63, UserFontSizes); } /************************************************* * Time * *************************************************/ static void timesig(void) { uint32_t t = read_time(); /* returns 0 after giving error */ if (t != 0) { curmovt->time_unscaled = t; curmovt->time = read_scaletime(t); } } /************************************************* * Transpose * *************************************************/ static void transpose(void) { int32_t temp = curmovt->transpose; if (temp == NO_TRANSPOSE) temp = 0; movt_int(); /* Reads into curmovt->transpose */ curmovt->transpose = 2 * curmovt->transpose + temp; /* Quarter tones */ if (abs(curmovt->transpose) > MAX_TRANSPOSE) error(ERR64, (temp == 0)? "":"accumulated ", curmovt->transpose/2, MAX_TRANSPOSE/2); /* Hard error */ /* Set up transposing data in case this directive is followed by headings that contain transposed key names. The key must be transposed in order to set up the number of letter changes. */ active_transpose = curmovt->transpose; (void)transpose_key(curmovt->key); } /************************************************* * Transposed accidental option * *************************************************/ static void transposedacc(void) { read_nextword(); if (Ustrcmp(read_wordbuffer, "force") == 0) main_transposedaccforce = TRUE; else if (Ustrcmp(read_wordbuffer, "noforce") == 0) main_transposedaccforce = FALSE; else error(ERR8, "\"force\" or \"noforce\""); } /************************************************* * Transposed key * *************************************************/ static void transposedkey(void) { uint32_t oldkey = read_key(); read_nextword(); if (Ustrcmp(read_wordbuffer, "use") != 0) error(ERR8, "\"use\""); else { trkeystr *k = mem_get(sizeof(trkeystr)); read_sigc(); k->oldkey = oldkey; k->newkey = read_key(); k->next = main_transposedkeys; main_transposedkeys = k; } } /************************************************* * Trill string * *************************************************/ static void trillstring(void) { uint32_t *s; if (isdigit(read_c)) set_fontsize(offsetof(fontsizestr,fontsize_trill), TRUE); s = string_read(font_rm, TRUE); if (s != NULL) curmovt->trillstring = s; } /************************************************* * Heading directive list * *************************************************/ /* The code for the read_draw_definition() function that reads a drawing description is in the draw.c module. */ #define oo offsetof static dirstr headlist[] = { { "accadjusts", accadjusts, 0, 0 }, { "accspacing", accspacing, 0, 0 }, { "b2pffont", b2pffont, 0, 0 }, { "bar", bar, oo(movtstr,baroffset), int_u }, { "barcount", warningint, 0, 0 }, { "barlinesize", movt_int, oo(movtstr,barlinesize), int_uf }, { "barlinespace", barlinespace, oo(movtstr,barlinespace), int_rs+int_f }, { "barlinestyle", movt_int8, oo(movtstr,barlinestyle), 5 }, { "barnumberlevel", barnumberlevel, oo(movtstr,barnumber_level), int_rs+int_f }, { "barnumbers", barnumbers, 0, 0 }, { "beamendrests", movt_flag, mf_beamendrests, TRUE }, { "beamflaglength", movt_int, oo(movtstr,beamflaglength), int_uf }, { "beamthickness", movt_int, oo(movtstr,beamthickness), int_uf }, { "bottommargin", movt_int, oo(movtstr,bottommargin), int_uf }, { "brace", movt_list, oo(movtstr,bracelist), FALSE }, { "bracestyle", movt_int8, oo(movtstr,bracestyle), 1 }, { "bracket", movt_list, oo(movtstr,bracketlist), FALSE }, { "breakbarlines", breakbarlines, oo(movtstr,breakbarlines), TRUE }, { "breakbarlinesx", breakbarlines, oo(movtstr,breakbarlines), TRUE }, { "breveledgerextra", movt_int, oo(movtstr,breveledgerextra), int_uf}, { "breverests", movt_flag, mf_breverests, TRUE }, { "caesurastyle", movt_int8, oo(movtstr,caesurastyle), 1 }, { "check", movt_flag, mf_check, TRUE }, { "checkdoublebars", movt_flag, mf_checkdoublebars, TRUE }, { "clefsize", clefsize, oo(fontsizestr,fontsize_midclefs), FALSE }, { "clefstyle", movt_int8, oo(movtstr,clefstyle), 3 }, { "clefwidths", clefwidths, 0, 0 }, { "codemultirests", movt_flag, mf_codemultirests, TRUE }, { "copyzero", copyzero, 0, 0 }, { "cuegracesize", movt_fontsize, oo(fontsizestr,fontsize_cuegrace), FALSE }, { "cuesize", movt_fontsize, oo(fontsizestr,fontsize_cue), FALSE }, { "dotspacefactor", movt_int, oo(movtstr,dotspacefactor), int_uf }, { "doublenotes", doublenotes, 0, 0 }, { "draw", read_draw_definition, 0, 0 }, { "drawbarlines", glob_bool, glob_drawbarlines, TRUE }, { "drawstafflines", drawstavelines, 0, 0 }, { "drawstavelines", drawstavelines, 0, 0 }, { "endlinesluradjust",movt_int, oo(movtstr,endlinesluradjust), int_f }, { "endlineslurstyle", movt_int8, oo(movtstr,endlineslurstyle), 1 }, { "endlinetieadjust", movt_int, oo(movtstr,endlinetieadjust), int_f }, { "endlinetiestyle", movt_int8, oo(movtstr,endlinetiestyle), 1 }, { "eps", eps, 0, 0 }, { "extenderlevel", movt_int, oo(movtstr,extenderlevel), int_f }, { "fbsize", movt_fontsize, oo(fontsizestr,fontsize_text)+ff_offset_fbass*sizeof(fontinststr), TRUE }, { "footing", movt_headfoot, oo(movtstr,footing), rh_footing }, { "footnotesep", movt_int, oo(movtstr,footnotesep), int_f }, { "footnotesize", movt_fontsize, oo(fontsizestr,fontsize_footnote), TRUE }, { "gracesize", movt_fontsize, oo(fontsizestr,fontsize_grace), FALSE }, { "gracespacing", gracespacing, 0, 0 }, { "gracestyle", movt_int8, oo(movtstr,gracestyle), 1 }, { "hairpinlinewidth", movt_int, oo(movtstr,hairpinlinewidth), int_rs+int_f }, { "hairpinwidth", movt_int, oo(movtstr,hairpinwidth), int_rs+int_f }, { "halfflatstyle", movt_int8, oo(movtstr,halfflatstyle), 1 }, { "halfsharpstyle", movt_int8, oo(movtstr,halfsharpstyle), 1 }, { "halvenotes", halvenotes, 0, 0 }, { "heading", movt_headfoot, oo(movtstr,heading), rh_heading }, { "hyphenstring", hyphenstring, 0, 0 }, { "hyphenthreshold", movt_int, oo(movtstr,hyphenthreshold), int_rs+int_f }, { "includepmwfont", glob_bool, glob_incpmwfont, TRUE }, { "incpmwfont", glob_bool, glob_incpmwfont, TRUE }, { "join", movt_list, oo(movtstr,joinlist), FALSE }, { "joindotted", movt_list, oo(movtstr,joindottedlist), FALSE }, { "justify", justify, 0, 0 }, { "key", key, 0, 0 }, { "keydoublebar", movt_flag, mf_keydoublebar, TRUE }, { "keysinglebar", movt_flag, mf_keydoublebar, FALSE }, { "keytranspose", keytranspose, 0, 0 }, { "keywarn", movt_flag, mf_keywarn, TRUE }, { "landscape", landscape, 0, 0 }, { "lastfooting", movt_headfoot, oo(movtstr,lastfooting), rh_lastfooting }, { "layout", layout, 0, 0 }, { "ledgerstyle", movt_int8, oo(movtstr,ledgerstyle), 1 }, { "leftmargin", movt_int, oo(movtstr,leftmargin), int_f }, { "linelength", movt_int, oo(movtstr,linelength), int_rs+int_f }, { "longrestfont", movt_font, oo(movtstr,fonttype_longrest), oo(fontsizestr, fontsize_restct) }, { "magnification", glob_int, glob_magnification, int_uf }, { "makekey", makekey, 0, 0 }, { "maxbeamslope", maxbeamslope, 0, 0 }, { "maxvertjustify", glob_int, glob_maxvertjustify, int_uf }, { "midichannel", midichannel, 0, 0 }, { "midifornotesoff", glob_bool, glob_midifornotesoff, TRUE }, { "midistart", midistart, 0, 0 }, { "miditempo", miditempo, oo(movtstr,miditempo), int_u }, { "miditranspose", miditranspose, 0, 0 }, { "midivolume", midivolume, 0, 0 }, { "midkeyspacing", movt_int, oo(movtstr,midkeyspacing), int_f }, { "midtimespacing", movt_int, oo(movtstr,midtimespacing), int_f }, { "musicfont", textfont, font_mf, 0 }, { "nobeamendrests", movt_flag, mf_beamendrests, FALSE }, { "nocheck", movt_flag, mf_check, FALSE }, { "nocheckdoublebars",movt_flag, mf_checkdoublebars, FALSE }, { "nocodemultirests", movt_flag, mf_codemultirests, FALSE }, { "nokerning", glob_bool, glob_kerning, FALSE }, { "nokeywarn", movt_flag, mf_keywarn, FALSE }, { "nosluroverwarnings", movt_flag, mf_tiesoverwarnings, FALSE }, { "nospreadunderlay", movt_flag, mf_spreadunderlay, FALSE }, { "notespacing", notespacing, 0, 0 }, { "notime", movt_flag, mf_showtime, FALSE }, { "notimebase", movt_flag, mf_showtimebase, FALSE }, { "notimewarn", movt_flag, mf_timewarn, FALSE }, { "nounderlayextenders",movt_flag, mf_underlayextenders, FALSE }, { "nowidechars", glob_bool, glob_nowidechars, FALSE }, { "oldbeambreak", warning, 0, 0 }, { "oldrestlevel", warning, 0, 0 }, { "oldstemlength", warning, 0, 0 }, { "oldstretchrule", warning, 0, 0 }, { "overlaydepth", movt_int, oo(movtstr,overlaydepth), int_f }, { "overlaysize", movt_fontsize, oo(fontsizestr,fontsize_text)+ff_offset_olay*sizeof(fontinststr), TRUE }, { "page", page, 0, 0 }, { "pagefooting", movt_headfoot, oo(movtstr,pagefooting), rh_pagefooting }, { "pageheading", movt_headfoot, oo(movtstr,pageheading), rh_pageheading }, { "pagelength", glob_int, glob_pagelength, int_rs+int_f }, { "pmwversion", pmwversion, 0, 0 }, { "printkey", printkey, 0, 0 }, { "printtime", printtime, 0, 0 }, { "rehearsalmarks", rehearsalmarks, 0, 0 }, { "repeatbarfont", movt_font, oo(movtstr,fonttype_repeatbar), oo(fontsizestr, fontsize_repno) }, { "repeatstyle", repeatstyle, 0, 0 }, { "righttoleft", glob_bool, glob_righttoleft, TRUE }, { "selectstaff", selectstaves, oo(movtstr,select_staves), TRUE }, { "selectstave", selectstaves, oo(movtstr,select_staves), TRUE }, { "selectstaves", selectstaves, oo(movtstr,select_staves), TRUE }, { "sheetdepth", sheetdim, glob_sheetdepth, int_uf }, { "sheetsize", sheetsize, 0, 0 }, { "sheetwidth", sheetdim, glob_sheetwidth, int_uf }, { "shortenstems", movt_int, oo(movtstr,shortenstems), int_uf }, { "sluroverwarnings", movt_flag, mf_tiesoverwarnings, TRUE }, { "smallcapsize", movt_int, oo(movtstr,smallcapsize), int_uf }, { "staffsize", stavesize, 0, 0 }, { "staffsizes", stavesize, 0, 0 }, { "staffspacing", stavespacing, 0, 0 }, { "startbracketbar", startbracketbar, 0, 0 }, { "startlinespacing", startlinespacing, 0, 0 }, { "startnotime", movt_flag, mf_startnotime, TRUE }, { "stavesize", stavesize, 0, 0 }, { "stavesizes", stavesize, 0, 0 }, { "stavespacing", stavespacing, 0, 0 }, { "stemlengths", stemlengths, 0, 0 }, { "stemswap", stemswap, 0, 0 }, { "stemswaplevel", stemswaplevel, 0, 0 }, { "stretchrule", warningint, 0, 0 }, { "suspend", movt_list, oo(movtstr,suspend_staves), TRUE }, { "systemgap", movt_int, oo(movtstr,systemgap), int_uf }, { "systemseparator", systemseparator,0, 0 }, { "textfont", textfont, -1, 0 }, { "textsize", textsizes, 0, 0 }, { "textsizes", textsizes, 0, 0 }, { "thinbracket", movt_list, oo(movtstr,thinbracketlist), FALSE }, { "time", timesig, 0, 0 }, { "timebase", movt_flag, mf_showtimebase, TRUE }, { "timefont", movt_font, oo(movtstr,fonttype_time),oo(fontsizestr,fontsize_text)+ff_offset_ts*sizeof(fontinststr) }, { "timewarn", movt_flag, mf_timewarn, TRUE }, { "topmargin", movt_int, oo(movtstr,topmargin), int_uf }, { "transpose", transpose, oo(movtstr,transpose), 0 }, { "transposedacc", transposedacc, 0, 0 }, { "transposedkey", transposedkey, 0, 0 }, { "trillstring", trillstring, 0, 0 }, { "tripletfont", movt_font, oo(movtstr,fonttype_triplet),oo(fontsizestr,fontsize_triplet) }, { "tripletlinewidth", movt_int, oo(movtstr,tripletlinewidth), int_uf }, { "underlaydepth", movt_int, oo(movtstr,underlaydepth), int_f }, { "underlayextenders",movt_flag, mf_underlayextenders, TRUE }, { "underlaysize", movt_fontsize, oo(fontsizestr,fontsize_text)+ff_offset_ulay*sizeof(fontinststr), TRUE }, { "underlaystyle", movt_int8, oo(movtstr,underlaystyle), 1 }, { "unfinished", movt_flag, mf_unfinished, TRUE }, { "vertaccsize", movt_fontsize, oo(fontsizestr,fontsize_vertacc), FALSE } }; static int headsize = sizeof(headlist)/sizeof(dirstr); /************************************************* * Read PMW heading section * *************************************************/ /* This function is entered with the first line of the movement in the input buffer, and the first significant character already in read_c. It exits on reading the first unquoted [ in the input, or the end of the file. */ void pmw_read_header(void) { TRACE("Read header directives: movement %d\n", movement_count); for (;;) { dirstr *first, *last; read_nextword(); if (read_wordbuffer[0] == 0) { if (read_c == '[' || read_c == ENDFILE) break; error_skip(ERR8, '\n', "header directive"); continue; } /* Look up the word in the list of heading directives and if found, call the appropriate function. The directives whose names start with "play" are obsolete synonyms for those that start "midi" and are no longer documented. Give a warning, but continue to process them. */ first = headlist; last = first + headsize; while (last > first) { int c; dir = first + (last - first)/2; c = Ustrcmp(read_wordbuffer, dir->name); if (c == 0) { read_sigc(); (dir->proc)(); break; } if (c > 0) first = dir + 1; else last = dir; } if (last <= first) error_skip(ERR24, '\n', read_wordbuffer); } } /* End of pmw_read_header.c */ pmw-5.22/src/xml.c0000644000222100022210000003174014541067540012101 0ustar ph10ph10/************************************************* * MusicXML for PMW input * *************************************************/ /* Copyright (c) Philip Hazel, 2022 */ /* This file last updated: May 2022 */ /* This module contains functions used while creating and processing a chain of XML items. */ #include "pmw.h" /************************************************* * Convert string to a number with fraction * *************************************************/ /* The argument is checked for consisting only of decimal digits, optionally followed by a dot and a decimal fraction. The yield is in thousandths, that is, milli-units. Argument: the string Returns: the number, or -1 on error */ static int string_to_mils(uschar *s) { int yield = 0; while (isdigit(*s)) yield = yield * 10 + *s++ - '0'; yield *= 1000; if (*s == '.') { int m = 100; while (isdigit(*(++s))) { if (m > 0) { yield += (*s - '0') * m; m /= 10; } } } return (*s == 0)? yield : -1; } /************************************************* * Convert string to a number * *************************************************/ /* The argument is checked for consisting only of decimal digits, except that if ignore_fraction is true, a trailing fraction is ignored. Argument: s the string ignore_fraction TRUE to ignore fractional part Returns: the number, or -1 on error */ int xml_string_to_number(uschar *s, BOOL ignore_fraction) { int yield = 0; while (isdigit(*s)) yield = yield * 10 + *s++ - '0'; if (ignore_fraction && *s == '.') while (isdigit(*(++s))) {} return (*s == 0)? yield : -1; } /************************************************* * Convert string to number with checking * *************************************************/ /* As above, but convert the result into a number, ignoring any fractional part. Arguments: s string min minimum legal value max maximum legal value bad what to return on error wasbad error indicator Returns: legal value or bad */ int xml_string_check_number(uschar *s, int min, int max, int bad, BOOL *wasbad) { if (s != NULL) { int m, yield; if (*s == '-') { m = -1; s++; } else m = +1; yield = xml_string_to_number(s, TRUE); if (yield >= 0) { yield *= m; if (yield >= min && yield <= max) { *wasbad = FALSE; return yield; } } } *wasbad = TRUE; return bad; } /************************************************* * Add attribute value entry to tree * *************************************************/ /* This is used for the unrecognized and ignored trees. Arguments: Returns: */ void xml_add_attrval_to_tree(tree_node **tree, xml_item *i, xml_attrstr *a) { tree_node *p; uschar buff[256]; (void)sprintf((char *)buff, "+%s=%s:%s", a->name, a->value, i->name); p = tree_search(*tree, buff); if (p == NULL) { p = mem_get(sizeof(tree_node) + Ustrlen(buff)); p->name = mem_copystring(buff); (void)tree_insert(tree, p); } } /************************************************* * Create a new item with defaults * *************************************************/ /* Arguments: item name Returns: pointer to the item */ xml_item * xml_new_item(uschar *name) { xml_item *yield = mem_get(sizeof(xml_item)); yield->next = NULL; yield->prev = NULL; yield->partner = yield; yield->linenumber = 0; yield->flags = 0; yield->p.attr = NULL; Ustrcpy(yield->name, name); return yield; } /************************************************* * Insert an item into the chain * *************************************************/ /* This function inserts a single item before another. It is assumed that there is always a previous item. Arguments: new the item old the item to insert before Returns: nothing */ void xml_insert_item(xml_item *new, xml_item *old) { new->prev = old->prev; new->next = old; old->prev->next = new; old->prev = new; } /************************************************* * Find next item of same type in a chain * *************************************************/ /* Arguments: i start of enclosing item p current item of this type Returns: next item or NULL */ xml_item * xml_find_next(xml_item *i, xml_item *p) { xml_item *end = i->partner; if (end == i) end = NULL; i = p->partner->next; while (i != end) { if (Ustrcmp(p->name, i->name) == 0) return i; i = i->next; } return NULL; } /************************************************* * Find previous item of same type in a chain * *************************************************/ /* Arguments: i start of enclosing item p current item of this type Returns: next item or NULL */ xml_item * xml_find_prev(xml_item *i, xml_item *p) { xml_item *x; if (p->prev == i) return NULL; x = p->prev->partner; while (x != i) { if (Ustrcmp(p->name, x->name) == 0) return x; x = x->prev->partner; } return NULL; } /************************************************* * Find an item in a chain * *************************************************/ /* The search stops at the partner of the initial item. Arguments: i where to start name what to look for Returns: found item or NULL */ xml_item * xml_find_item(xml_item *i, uschar *name) { xml_item *end; end = i->partner; for (; i != end; i = i->next) { if (Ustrcmp(i->name, name) == 0) return i; } return NULL; } /************************************************* * Find a attribute for an item * *************************************************/ /* This function scans a list of attributes, looking for one by name. Arguments: i points to the item name the name of the attribute Returns: pointer to the attribute, or NULL */ xml_attrstr * xml_find_attr(xml_item *i, uschar *name) { xml_attrstr *p; for (p = i->p.attr; p != NULL; p = p->next) { if (Ustrcmp(p->name, name) == 0) break; } return p; } /************************************************* * Find the start of a part * *************************************************/ /* Arguments: i where to start looking name name of part Returns: found part start or NULL */ xml_item * xml_find_part(xml_item *i, uschar *name) { xml_attrstr *p; while (i != NULL) { i = xml_find_item(i, US"part"); if (i == NULL) return NULL; p = xml_find_attr(i, US"id"); if (p != NULL && Ustrcmp(p->value, name) == 0) return i; i = i->partner->next; } return NULL; } /************************************************* * Get string value for given item * *************************************************/ uschar * xml_get_this_string(xml_item *i) { i = xml_find_item(i, US"#TEXT"); return (i == NULL)? US"" : i->p.txtblk->string; } /************************************************* * Get number value for given item * *************************************************/ /* A fractional part is ignored by string_check_number(). Arguments: Returns: */ int xml_get_this_number(xml_item *i, int min, int max, int bad, BOOL moan) { uschar *s; BOOL wasbad; int yield; i = xml_find_item(i, US"#TEXT"); if (i == NULL) return bad; s = i->p.txtblk->string; yield = xml_string_check_number(s, min, max, bad, &wasbad); if (wasbad && moan) xml_Eerror(i, ERR23, s); return yield; } /************************************************* * Get string value for named item * *************************************************/ /* This function searches for an item of the given name contained within an outer item. Then it searches for text data within the inner item. Arguments: i the outer item name inner item name bad value to return if not found moan TRUE to give error Returns: string, or NULL */ uschar * xml_get_string(xml_item *i, uschar *name, uschar *bad, BOOL moan) { xml_item *yield = xml_find_item(i, name); if (yield == NULL) { if (moan) xml_Eerror(i, ERR24, name); return bad; } return xml_get_this_string(yield); } /************************************************* * Get number value for given item * *************************************************/ /* Call xml_get_string(), then convert the result into a number. A fractional part is ignored by misc_string_check_number(). Arguments: i the outer item name inner item name min minimum legal value max maximum legal value bad what to return on error moan TRUE to give error message Returns: legal value or bad */ int xml_get_number(xml_item *i, uschar *name, int min, int max, int bad, BOOL moan) { int yield; BOOL wasbad; uschar *s = xml_get_string(i, name, NULL, moan); if (s == NULL) return bad; yield = xml_string_check_number(s, min, max, bad, &wasbad); if (wasbad) xml_Eerror(i, ERR23, s); return yield; } /************************************************* * Set a new value for a number * *************************************************/ /* Call xml_get_string(), then replace the string with the string value of the given number. This is used to change staff numbers for coupled staves, so we know that the number is either 1 or 2. FIXME: perhaps this needs better checking and an error if name not found. Arguments: i the outer item name inner item name n the new number Returns: nothing */ void xml_set_number(xml_item *i, uschar *name, int n) { uschar *s = xml_get_string(i, name, NULL, TRUE); if (s != NULL) *s = n + '0'; } /************************************************* * Get mils value for given item * *************************************************/ /* Call xml_get_string(), then convert the result into a number with optional fractional part. Arguments: i the outer item name inner item name min minimum legal value max maximum legal value bad what to return on error moan TRUE to give error message Returns: legal value or bad */ int xml_get_mils(xml_item *i, uschar *name, int min, int max, int bad, BOOL moan) { int yield; uschar *s = xml_get_string(i, name, NULL, moan); if (s == NULL) return bad; yield = string_to_mils(s); if (yield >= 0 && yield >= min && yield <= max) return yield; if (moan) xml_Eerror(i, ERR23, s); return bad; } /************************************************* * Get string value for given attribute * *************************************************/ /* Arguments: i the item name name of attribute bad what to return on error moan TRUE to give error message Returns: legal value or bad */ uschar * xml_get_attr_string(xml_item *i, uschar *name, uschar *bad, BOOL moan) { xml_attrstr *p = xml_find_attr(i, name); if (p != NULL) return p->value; if (moan) xml_Eerror(i, ERR32, name); return bad; } /************************************************* * Get number value for given attribute * *************************************************/ /* A fractional part is ignored by misc_string_check_number(). Arguments: i the item name name of attribute min minimum legal value max maximum legal value bad what to return on error moan TRUE to give error message if non-existent Returns: legal value or bad */ int xml_get_attr_number(xml_item *i, uschar *name, int min, int max, int bad, BOOL moan) { int yield; BOOL wasbad = TRUE; uschar *s = xml_get_attr_string(i, name, NULL, moan); if (s == NULL) return bad; yield = xml_string_check_number(s, min, max, bad, &wasbad); if (wasbad) xml_Eerror(i, ERR23, s); return yield; } /************************************************* * Get mils value for given attribute * *************************************************/ /* As above, but convert the result into a number with optional fractional part. Arguments: i the outer item name the name of the attribute min minimum legal value max maximum legal value bad what to return on error moan TRUE to give error message Returns: legal value or bad */ int32_t xml_get_attr_mils(xml_item *i, uschar *name, int min, int max, int bad, BOOL moan) { int32_t yield; uschar *s = xml_get_attr_string(i, name, NULL, moan); if (s == NULL) return bad; yield = string_to_mils(s); if (yield >= 0 && yield >= min && yield <= max) return yield; if (moan) xml_Eerror(i, ERR23, s); return bad; } /************************************************* * Get/set a font size * *************************************************/ /* Manage the list of text font sizes. */ int xml_pmw_fontsize(int fsize) { int n; for (n = 0; n < xml_fontsize_next; n++) if (xml_fontsizes[n] == fsize) return n; if (n >= UserFontSizes) { error(ERR63, UserFontSizes); return 0; } xml_fontsizes[xml_fontsize_next] = fsize; return xml_fontsize_next++; } /* End of xml.c */ pmw-5.22/src/xml_debug.c0000644000222100022210000000602314541067540013243 0ustar ph10ph10/************************************************* * MusicXML input for PMW * *************************************************/ /* Copyright Philip Hazel 2021 */ /* This file created: January 2022 */ /* This file last modified: April*/ /* This module contains XML debugging functions. */ #include "pmw.h" /************************************************* * Print a string * *************************************************/ /* Non-printing characters are converted to escapes. Arguments: s the string len the length of the string post a string to print afterwards Returns: nothing */ static void debug_print_string(uschar *s, int len, const char *post) { for (; len-- > 0; s++) { if (*s >= 32 && *s < 127) eprintf("%c", *s); else if (*s == '\n') eprintf("\\n"); else if (*s == '\\') eprintf("\\"); else eprintf("\\x%02x", *s); } eprintf("%s", post); } /************************************************* * Output an item list * *************************************************/ /* This function scans an item list and writes it out. It's called from various places when the appropriate debugging switches are set. Arguments: item_list the start of the list when text string for heading, indicating where called from Returns: nothing */ void xml_debug_print_item_list(xml_item *item_list, const char *when) { xml_item *i; eprintf("----- Item list %s -----\n", when); for (i = item_list; i != NULL; i = i->next) { if (i->next != NULL && i->next->prev != i) { eprintf("*** Chain error: i=%p next=%p next->prev=%p\n", (void *)(i), (void *)(i->next), (void *)(i->next->prev)); eprintf("*** name=%s nextname=%s\n", i->name, i->next->name); } /* The anchor item for the whole shebang. */ if (Ustrcmp(i->name, "#") == 0) eprintf("#Anchor\n"); /* An input text item; there can be dummies, inserted when very large paragraphs are split. */ else if (Ustrcmp(i->name, "#TEXT") == 0) { xml_textblock *tb = i->p.txtblk; if (tb == NULL) eprintf("Dummy text block\n"); else debug_print_string(tb->string, tb->length, "\n"); } /* A source file name item */ else if (Ustrcmp(i->name, "#FILENAME") == 0) { eprintf("<#FILENAME> %s\n", i->p.string); } /* An unknown #-item is an internal error. */ else if (i->name[0] == '#') { eprintf("** Unknown special item %s\n", i->name); } /* An ending item */ else if (i->name[0] == '/') { xml_item *p = i->partner; if (p == NULL) eprintf("***bad end: no partner\n"); else eprintf("\n", p->name); } /* A starting item */ else { xml_attrstr *p; eprintf("<%s", i->name); for (p = i->p.attr; p != NULL; p = p->next) { eprintf(" %s='%s'", p->name, p->value); } if (i->partner == i) eprintf((i->name[0] == '?')? "?" : "/"); eprintf(">\n"); } } eprintf("----- End of item list -----\n"); } /* End of xml_debug.c */ pmw-5.22/src/Makefile0000644000222100022210000000674214541067540012601 0ustar ph10ph10# Building Makefile for PMW on Unix-like systems # The toplevel Makefile passes in configured settings FONTMETRICS=$(DATADIR)/fontmetrics PSHEADER=$(DATADIR)/PSheader MIDIVOICES=$(DATADIR)/MIDIvoices MIDIPERC=$(DATADIR)/MIDIperc STDMACS=$(DATADIR)/macros FONTDIR=$(DATADIR)/psfonts COMP = $(CC) -DFONTDIR='"$(FONTDIR)"' -DFONTMETRICS='"$(FONTMETRICS)"' -DPSHEADER='"$(PSHEADER)"' -DMIDIVOICES='"$(MIDIVOICES)"' -DMIDIPERC='"$(MIDIPERC)"' -DSTDMACS='"$(STDMACS)"' $(CFLAGS) -I. -c LINK = $(CC) $(CFLAGS) HDRS = config.h functions.h globals.h pmw.h rdargs.h structs.h DEPS = $(HDRS) Makefile ../Makefile XMLDEPS = xml.h xml_functions.h xml_globals.h xml_structs.h OBJ = debug.o draw.o error.o font.o globals.o main.o mem.o midi.o misc.o out.o \ paginate.o pmw_read.o pmw_read_header.o pmw_read_note.o pmw_read_stave.o \ pmw_read_stavedirs.o preprocess.o ps.o rdargs.o read.o setbar.o \ setbeam.o setnote.o setother.o setslur.o settie.o string.o tables.o \ transpose.o tree.o ifeq ($(SUPPORT_XML),1) XMLOBJ = xml.o xml_analyze.o xml_debug.o xml_error.o xml_globals.o \ xml_heading.o xml_read.o xml_staves.o xml_tables.o else XMLOBJ= endif # The normal targets in this Makefile are not called directly, but should be # called from the top-level Makefile. To make it easy when developing from # within the source directory, a call with no target gets passed back up to # the outer Makefile. intcall:; cd ..; $(MAKE); # This is the main target all: pmw pmw: $(OBJ) $(XMLOBJ) @echo "$(CC) -o pmw" $(FE)$(LINK) $(OBJ) $(XMLOBJ) -o pmw -lm $(LFLAGS) @echo ">>> pmw binary built" clean:; rm -f *.o pmw distclean: clean rm -f config.h .SUFFIXES: .o .c .c.o:; @echo "$(CC) $*.c" $(FE)$(COMP) $*.c debug.o: $(DEPS) debug.c draw.o: $(DEPS) draw.c error.o: $(DEPS) error.c font.o: $(DEPS) font.c globals.o: $(DEPS) globals.c main.o: $(DEPS) main.c mem.o: $(DEPS) mem.c midi.o: $(DEPS) midi.c misc.o: $(DEPS) misc.c out.o: $(DEPS) out.c paginate.o: $(DEPS) paginate.c pmw_read.o: $(DEPS) pmw_read.c pmw_read_header.o: $(DEPS) pmw_read_header.c pmw_read_note.o: $(DEPS) pmw_read_note.c pmw_read_stave.o: $(DEPS) pmw_read_stave.c pmw_read_stavedirs.o: $(DEPS) pmw_read_stavedirs.c preprocess.o: $(DEPS) preprocess.c ps.o: $(DEPS) ps.c rdargs.o: $(DEPS) rdargs.c read.o: $(DEPS) read.c setbar.o: $(DEPS) setbar.c setbeam.o: $(DEPS) setbeam.c setnote.o: $(DEPS) setnote.c setother.o: $(DEPS) setother.c setslur.o: $(DEPS) setslur.c settie.o: $(DEPS) settie.c string.o: $(DEPS) string.c tables.o: $(DEPS) tables.c transpose.o: $(DEPS) transpose.c tree.o: $(DEPS) tree.c xml.o: $(DEPS) $(XMLDEPS) xml.c xml_analyze.o: $(DEPS) $(XMLDEPS) xml_analyze.c xml_debug.o: $(DEPS) $(XMLDEPS) xml_debug.c xml_error.o: $(DEPS) $(XMLDEPS) xml_error.c xml_globals.o: $(DEPS) $(XMLDEPS) xml_globals.c xml_heading.o: $(DEPS) $(XMLDEPS) xml_heading.c xml_read.o: $(DEPS) $(XMLDEPS) xml_read.c xml_staves.o: $(DEPS) $(XMLDEPS) xml_staves.c xml_tables.o: $(DEPS) $(XMLDEPS) xml_tables.c # End of building Makefile for PMW pmw-5.22/src/xml_globals.c0000644000222100022210000000365014541067540013603 0ustar ph10ph10/************************************************* * MusicXML input for PMW * *************************************************/ /* Copyright (c) Philip Hazel, 2022 */ /* This file last edited: User 2022 */ /* Allocate storage and initialize global XML variables, apart from those that are tables of some kind. */ #include "pmw.h" /************************************************* * General global variables * *************************************************/ uint8_t xml_couple_settings[64]; int xml_error_max = 0; int32_t xml_first_system_distance = -1; int32_t xml_fontsizes[UserFontSizes]; int xml_fontsize_next = 0; int32_t xml_fontsize_word_default = -1; xml_group_data *xml_groups_list = NULL; BOOL xml_group_symbol_set = FALSE; tree_node *xml_ignored_element_tree = NULL; uschar *xml_layout_list = NULL; size_t xml_layout_list_size = 0; size_t xml_layout_top = 0; xml_item *xml_main_item_list = NULL; uint32_t xml_movt_setflags = 0; uint32_t xml_movt_unsetflags = 0; xml_part_data *xml_parts_list = NULL; xml_item *xml_partwise_item_list = NULL; int xml_pmw_stave_count = 0; xml_item *xml_read_addto = NULL; BOOL xml_read_done = FALSE; uschar *xml_read_filename = NULL; int xml_read_linenumber = 0; BOOL xml_right_justify_stave_names = TRUE; BOOL xml_set_stave_size = FALSE; int xml_stave_sizes[64]; int xml_time_signature_seen = -1; tree_node *xml_unrecognized_element_tree = NULL; BOOL xml_warn_unrecognized = TRUE; /* End of xml_globals.c */ pmw-5.22/src/xml_read.c0000644000222100022210000005134314541067540013075 0ustar ph10ph10/************************************************* * MusicXML input reading * *************************************************/ /* Copyright Philip Hazel 2021 */ /* This file created: January 2022 */ /* This file last modified: April 2022 */ /* This file contains the top-level function for MusicXML input files. */ #include "pmw.h" /************************************************* * Static variables * *************************************************/ static FILE *infile; static uschar *linebuffer; /************************************************* * Print unknown element/attribute tree * *************************************************/ /* Prints the tree of unknown or ignored elements and attributes, calling itself recursively to get them in order. Argument: a tree node Returns: nothing */ static void print_unknown_tree(tree_node *tn) { if (tn->left != NULL) print_unknown_tree(tn->left); if (tn->name[0] == '+') { uschar *eptr = Ustrrchr(tn->name, ':'); uschar *vptr = Ustrchr(tn->name, '='); if (vptr == NULL) fprintf(stderr, "'%.*s' in <%s>\n", (int)(eptr - tn->name - 1), tn->name + 1, eptr + 1); else fprintf(stderr, "'%.*s' value \"%.*s\" in <%s>\n", (int)(vptr - tn->name - 1), tn->name + 1, (int)(eptr - vptr - 1), vptr + 1, eptr + 1); } else { fprintf(stderr, "<%s>\n", tn->name); } if (tn->right != NULL) print_unknown_tree(tn->right); } /************************************************* * Process XML element list * *************************************************/ /* Called after reading and analyzing a MusicXML input file. */ static void xml_process(void) { /* If movement_count == 0 we are processing a freestanding MusicXML file and need to set up and initialize a movement. */ if (movement_count == 0) { movements_size += MOVTVECTOR_CHUNKSIZE; movements = realloc(movements, movements_size * sizeof(movtstr *)); if (movements == NULL) error(ERR0, "re-", "movements vector", movements_size); /* Hard */ premovt = &default_movtstr; movements[movement_count++] = curmovt = mem_get(sizeof(movtstr)); read_init_movement(curmovt, xml_movt_unsetflags, xml_movt_setflags); } /* Process the items. It is during this processing that various parameters such as the magnification and font sizes are discovered. */ xml_do_heading(); xml_do_parts(); /* Deal with any explicit stave sizes. */ if (xml_set_stave_size) { int32_t *stavesizes = mem_get((MAX_STAVE+1)*sizeof(int32_t)); memcpy(stavesizes, curmovt->stavesizes, (MAX_STAVE+1)*sizeof(int32_t)); curmovt->stavesizes = stavesizes; for (int i = 1; i <= xml_pmw_stave_count; i++) if (xml_stave_sizes[i] > 0) stavesizes[i] = xml_stave_sizes[i]; } /* Deal with font sizes if there are any other than the default 10-point size. For all except the default 10pt font, we unscale by the magnification so that, when re-scaled by PMW they are the sizes specified in the XML. This sometimes means that the first two end up at the same size. */ if (xml_fontsize_next > 1) { fontinststr *fdata = curmovt->fontsizes->fontsize_text; for (int i = 1; i < xml_fontsize_next; i++) { fdata[i].size = mac_muldiv(xml_fontsizes[i], 1000, main_magnification); fdata[i].matrix = NULL; } } } /************************************************* * Check for supported element * *************************************************/ /* This function is called when a new element is encountered. We check to see whether it and its attributes are recognized. If not, remember what is not recognized and what it ignored for possible outputting at the end of processing. Argument: pointer to the item Returns: nothing */ static void check_supported(xml_item *new) { int c = -1; int bot = 0; int top = xml_supported_elements_count; int mid; tree_node *tn; xml_attrstr *attr; while (top > bot) { mid = (top + bot)/2; c = Ustrcmp(new->name, xml_supported_elements[mid].name); if (c == 0) break; if (c < 0) top = mid; else bot = mid + 1; } /* Element is not recognized; insert in tree if not already there. */ if (c != 0) { tn = tree_search(xml_unrecognized_element_tree, new->name); if (tn == NULL) { tn = mem_get(sizeof(tree_node)); tn->name = mem_copystring(new->name); (void)tree_insert(&xml_unrecognized_element_tree, tn); } return; } /* Element is recognized, check its attributes. Those that start with "#" are invented internal ones. If the first attribute is "*" it means the entire element is ignored. If a subsequent attribute is "**" it means all the following attributes are ignored. */ if (xml_supported_elements[mid].attrs != NULL && Ustrcmp((xml_supported_elements[mid].attrs)[0], "*") == 0) { tn = tree_search(xml_ignored_element_tree, new->name); if (tn == NULL) { tn = mem_get(sizeof(tree_node)); tn->name = mem_copystring(new->name); (void)tree_insert(&xml_ignored_element_tree, tn); } } /* Scan attribute list */ else for (attr = new->p.attr; attr != NULL; attr = attr->next) { uschar buffer[256]; uschar **aptr; if (attr->name[0] == '#') continue; aptr = xml_supported_elements[mid].attrs; if (aptr != NULL) { BOOL ignored = FALSE; for (; *aptr != NULL; aptr++) { if (Ustrcmp(*aptr, "**") == 0) ignored = TRUE; else if (Ustrcmp(*aptr, attr->name) == 0) break; } if (*aptr != NULL) { if (ignored) /* Add the attribute to the ignored tree */ { (void)sprintf(CS buffer, "+%s:%s", attr->name, new->name); tn = tree_search(xml_ignored_element_tree, buffer); if (tn == NULL) { tn = mem_get(sizeof(tree_node)); tn->name = mem_copystring(buffer); (void)tree_insert(&xml_ignored_element_tree, tn); } } continue; /* Recognized, next attribute */ } } /* Add the attribute to the unrecognized tree */ (void)sprintf(CS buffer, "+%s:%s", attr->name, new->name); tn = tree_search(xml_unrecognized_element_tree, buffer); if (tn == NULL) { tn = mem_get(sizeof(tree_node)); tn->name = mem_copystring(buffer); (void)tree_insert(&xml_unrecognized_element_tree, tn); } } } /************************************************* * Handle some actual text * *************************************************/ /* This function is called when a character that is not inside an element is encountered. Copy the text until we hit '<' or end of line. Argument: p current data pointer Returns: updated data pointer */ static uschar * read_text(uschar *p) { int len; int extra = 0; uschar *pp = p; while (*p != 0 && *p != '<') p++; len = p - pp; /* If the previous item is a data item, tack this text onto it. */ if (Ustrcmp(xml_read_addto->name, "#TEXT") == 0) { xml_textblock *tb = xml_read_addto->p.txtblk; xml_textblock *tbnew = mem_get(sizeof(xml_textblock) + tb->length + len + 1); tbnew->next = NULL; (void)memcpy(tbnew->string, tb->string, tb->length); (void)memcpy(tbnew->string + tb->length, pp, len); tbnew->length = tb->length + len; tbnew->string[tbnew->length] = 0; xml_read_addto->p.txtblk = tbnew; } /* Otherwise we have to make a new data item. The item's name is #TEXT; it points to a textblock item. */ else { xml_item *new; xml_textblock *tbnew; tbnew = mem_get(sizeof(xml_textblock) + len + 1); tbnew->next = NULL; (void)memcpy(tbnew->string, pp, len); tbnew->length = len; tbnew->string[tbnew->length] = 0; new = mem_get(sizeof(xml_item)); new->next = xml_read_addto->next; new->prev = xml_read_addto; new->partner = new; new->linenumber = xml_read_linenumber; new->flags = 0; Ustrcpy(new->name, US"#TEXT"); new->p.txtblk = tbnew; xml_read_addto->next = new; xml_read_addto = new; } return p + extra; } /************************************************* * Handle markup item * *************************************************/ /* This function is called when a '<' character is encountered. It creates an element item with a chain of attribute settings. If the element ends with /> the partner pointer is set to point to itself. Otherwise, we push the element onto the stack so that it can get matched up when the terminator is encountered later. Arguments: p pointer in input line, at initial '<' nest_stack the nesting stack nest_ptrptr pointer to the stack pointer Returns: updated pointer, past the terminating '>' updates the stack pointer */ static uschar * read_element(uschar *p, xml_item **nest_stack, int *nest_ptrptr) { BOOL ender = FALSE; BOOL procinst = FALSE; int i = 0; int nest_stackptr = *nest_ptrptr; int elementstartline = read_linenumber; uschar name[NAMESIZE]; uschar *pp = name; xml_item *new; /* Handle special kinds of markup: is a processing instruction - ignore unless for pmw is a heading (?) - currently ignored is a comment that may span multiple lines, and be nested (?) */ if (*(++p) == '?') { if (Ustrncmp(p, "?pmw", 4) != 0 || !isspace(p[4])) { for (;;) { while (*(++p) != 0 && *p != '>'); if (*p == '>') { p++; return p; } p = Ufgets(linebuffer, LINEBUFSIZE, infile); xml_read_linenumber++; if (p == NULL) xml_error(ERR12, elementstartline); /* Hard */ } } /* We have a processing instruction for pmw. Arrange to set this up as an item whose name is "?pmw", with appropriate attributes. We can do this by setting the leading '?' and then falling through. */ procinst = TRUE; *pp++ = '?'; i++; p++; } /* Handle headings, and comments */ else if (*p == '!') { int nestcount; /* If not a comment, just skip to the closing '>' */ if (Ustrncmp(p, "!--", 3) != 0) { while (*(++p) != 0 && *p != '>'); if (*p == '>') p++; return p; } /* Handle comments */ nestcount = 1; p += 3; while (nestcount > 0) { while (*p != 0) { if (Ustrncmp(p, "-->", 3) == 0) { p += 3; if (--nestcount <= 0) break; } else if (Ustrncmp(p, " .endd In this case a minus sign (indicating a quaver) has been omitted after the note &`g`&, which is therefore taken as a crotchet. The input line in which the error was detected is shown, and the character `>' is output underneath the position where the error was detected. In this example, PMW has just reached the bar line. The line number is given using the phrase `near line &'n'&' because sometimes PMW has read on to the next line before detecting the error. Most errors cause PMW to stop processing before it writes anything to the main output, in which case there is a final message `&`** No output generated`&.' However, there are a few errors that do not stop the output from being written. An example is the detection of a bar that is too wide for the page; PMW diagnoses this, and then squashes it to fit. The messages for all these errors start with the word `warning'. .section "Return codes" .index "return codes" PMW gives the C return code &`EXIT_SUCCESS`& (which is normally zero) when it has successfully generated some output, even if one or more warnings were given. Otherwise, it returns &`EXIT_FAILURE`& (which is normally 1). . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .chapter "Getting started with PMW encoding" CHAPfirstintro In this and the next chapter we cover the basic facilities of the way PMW input is encoded, omitting some of the more exotic features in order to keep the explanations simple. Full information is given in the reference section of this manual, which starts at chapter &<>&. We start with a file that contains the first few bars of &'Happy Birthday'&. .code heading "|Happy Birthday" breakbarlines underlaysize 9.5 notespacing *1.1 key F time 3/4 unfinished [stave 1 treble 1 text underlay] "Hap-py birth-day to you, hap-py birth-day to you. Hap-py" [nocheck] [nocount] c-.; c= | dcf | E c-.; c= | dcg | F c-.; c= | [endstave] [stave 2 bass 0] [nocheck] r | F. | C. | c d e | F. | [endstave] .endd Let's suppose the file is called &_bday_&. If you have PMW installed, you can process such a file by running this command: .code pmw bday .endd If there are no errors in the notation, there will be no output on the screen, but a new file called &_bday.ps_& will have been created. You can view this on screen by running: .code gv bday.ps .endd or by using another PostScript viewer such as &(evince)&. You may need to set the environment variable &`GS_FONTPATH`& (&R; &<>&) first. The result should look like this: .music music01 88 0,-22 centre If there are errors in the input file, one or more messages will be written to the standard error file, and should therefore appear on your screen. The messages should be self-explanatory. Correct the error(s), and try again. We now explain what the different parts of this input file mean to PMW. The data is in two parts: first there is header information, such as the textual heading and key and time signatures for the piece, and then the music for each stave is given separately. The header in this example contains seven &'header directives'&. They have been put on separate lines for readability, but this is not a requirement; you can have several directives on one line if you like. .code heading "|Happy Birthday" .endd .index "| (vertical bar) in strings" The first directive provides a text heading for the piece. The text itself must be supplied inside double quote marks. Heading lines normally consist of a left part, a centred part, and a right part. The division between these is marked by a vertical bar character in the text. This example outputs nothing at the left (because there is nothing before the vertical bar), and nothing at the right (because there isn't a second vertical bar). In other words, the entire title is centred. .code breakbarlines .endd .index "&%breakbarlines%&" The second directive causes PMW to make a break in the bar lines after each stave. Without this, the bar lines would be drawn continuously from the top of the first stave to the bottom of the second. It is conventional not to have bar lines between staves when there is vocal underlay (lyrics), as they can get in the way of the words. In orchestral scores you may want to have bar line breaks between different groups of instruments, and this can be achieved by listing the stave numbers after which you want the breaks: .code breakbarlines 4, 8, 12 .endd This breaks the bar lines after staves 4, 8, and 12. .code underlaysize 9.5 .endd The third directive sets the font size for the underlay text (the sung words). Font sizes are given in &'points'&, the traditional measure of type size used by printers. .index "default" "text size" .index "text" "default size" The default size for all text attached to a stave is 10 points; choosing a slightly smaller size for underlay is often helpful in fitting in the words. &*Note*&: The music above and in all the following examples in this manual is shown at 0.85 times its normal size, so the type sizes you see here are smaller than they will be if you process the example yourself. .code notespacing *1.1 .endd The fourth directive is an instruction to PMW to increase its normal horizontal note spacing by a factor of 1.1 (the asterisk is being used as a multiplication symbol). The standard note spacing is suitable for instrumental music. When vocal underlay is involved, it often improves the layout if the spacing is increased by a factor of between 1.1 and 1.2. PMW automatically increases the space between two notes in a bar if this is necessary to avoid two underlaid syllables colliding, but if this happens a lot, the spacing of the notes can look very strange. It is best to set the note spacing sufficiently wide that most of the layout is determined by the music, with only the occasional adjustment for the words. .code key F .endd The fifth directive sets the key signature. If no key signature is given, C major is assumed. Minor keys are given by adding the letter `m', for example, &`Am`&. Sharp and flat key signatures are given using the standard accidental notation in PMW. A sharp is represented by the character &`#`&, which is easily remembered. Unfortunately, there are no keys on the computer keyboard that resemble flats or naturals, so instead the two keys that are next to &`#`& on some keyboards were chosen: &`$`& for a flat (think `dollar' for `down') and &`%`& for a natural. For example, the key signatures C sharp minor and G flat major are coded as &`C#m`& and &`G$`& respectively. .code time 3/4 .endd The sixth directive sets the time signature. If no time signature is given, 4/4 is assumed. As well as the usual numeric time signatures, the letters &`C`& and &`A`& can be given, signifying `common' and `alla breve' time. These are output as &{{^}}& and &{{_}}& respectively. .code unfinished .endd The final directive tells PMW that this is not a complete piece of music; this stops it from putting a thick bar line at the end. The header ends and the stave data begins with the first line that starts with a square bracket: .code [stave 1 treble 1 text underlay] .endd You will notice that a bit further down there is a line containing just &%[endstave]%&. This marks the end of the data for the first stave. Each stave's data is always contained between &%[stave]%& and &%[endstave]%&. The data itself consists of a mixture of encoded music, words, bar lines, and so on, and also &'stave directives'&. To make it clear what is what, the stave directives are enclosed in square brackets, and they are shown in brackets whenever they are mentioned in this manual. Several stave directives can appear in succession within a single pair of brackets. The number following the word `stave' in the &%[stave]%& directive gives the number of the stave. The top stave of a system is numbered 1, the next one down is numbered 2, and so on. PMW can handle up to 63 staves in a system. Usually, a clef-setting directive comes next, as in both staves of this example, where the first stave uses the treble clef and the second stave the bass clef. The number that follows the clef name sets the &'current octave'& for the notes of the stave. PMW octaves run from C up to B, and octave number 1 starts at middle C. It is usual, therefore, to set the current octave to 1 when using the treble clef, and to 0 when using the bass clef, as has been done here. The remaining stave directive, &`text`& &`underlay`&, sets the default type for any text strings in the first stave. PMW supports several different kinds of text, as we shall see later, and one of them can be set as the default for a stave. Instances of strings of other types then have to be marked as such. When a stave has vocal underlay in it, it is usual to set the default as above, because by far the majority of the text will be underlay. So at last we come to the music and words of the first stave: .code "Hap-py birth-day to you, hap-py birth-day to you. Hap-py" [nocheck] [nocount] c-. c= | d c f | E c-. c= | d c g | F c-. c= | .endd .index "underlay" The vocal underlay is given as a text string preceding the notes to which it relates. You can split up underlay into strings that are as long or as short as you like. PMW automatically distributes the syllables to the notes that follow. Single hyphens are used to separate the different syllables of the words, as in `hap-py' and `birth-day'. PMW supplies as many hyphens as necessary to fill the space between them on the page. Text strings are not restricted to just the characters on the computer keyboard; see section &<>& for details of how to access other characters. The music itself is divided up into bars by the vertical bar character. PMW checks that the contents of a bar agree with the time signature, and complains if there are too many or too few notes. It is possible to turn this check off, and this has been done for the first bar by including &%[nocheck]%& (you can also turn it off for the whole piece). The first bar also contains &%[nocount]%& because it is conventional not to include an `upbeat' bar at the start of a piece in bar numbering (&R; &<>&). .index "notes" "pitch" .index "pitch of note" The notes are encoded using their familiar letter names. Because we set the current octave to be octave 1, the letter &`c`& in the first bar represents middle C. To raise a note by an octave it is followed by a quote character, so &`c'`& would give the C above middle C. A note can be lowered an octave by following its letter with a grave accent. .index "length" "of notes" The duration of a note is primarily determined by whether a capital (upper case) letter or small (lower case) letter is used. A lower case letter stands for a crotchet, and an upper case one is used for a minim, as in the third bar of this stave. Further characters are used to adjust the duration: a minus sign (hyphen) after a lower case letter turns the crotchet into a quaver, the hyphen being mnemonically like the flag used to distinguish a quaver from a crotchet. .index "notes" "dotted" A dotted note is coded by adding a full stop, as in the first, third, and fifth bars. An equals sign (two flags) signifies a semiquaver. Sequences of notes that are shorter than a crotchet are automatically beamed together unless separated by a semicolon (&R; &<>&). The convention in vocal parts is not to beam notes that are sung to different syllables, which is why semicolons are used here. The only new feature in the second stave is the use of the letter &`r`& for a rest. This example has no accidentals, but if you need one, it is entered before the note letter (just as accidentals are written before notes). The characters used for accidentals were described above when discussing key signatures, but to remind you: .itable none 0 0 2 12 left 100 left .row &`#`& "is used for a sharp" .row &`$`& "is used for a flat" .row &`%`& "is used for a natural" .endtable Should you need double sharps or double flats, just type the character twice. PMW also has support for half accidentals (&R; &<>&). The spacing used in this example was chosen to make it easy to read. PMW does not require spaces to appear between notes or before bar lines, so the first two bars of the first stave could equally well appear like this: .code [nocheck]c-.c=|dcf| .endd However, spaces must not be used between any of the characters that make up the encoding for one note. For example, &`#`&&~&`c`& would not be recognized because of the space between the &`#`& and the &`c`&. Normally, you should put in spaces where it helps you to see the various items in a bar. Wherever one space is allowed, you may put as many as you like. You may also start a new line in the input at most places where a space is allowed, for example, between notes, or between text strings and notes. Most people try not to have a line break in the middle of the notes of a bar, as this makes the file easier to read. .index "@ (comment) character" .index "annotating input" When you start entering longer pieces, you may find it helpful to annotate the input file to make it easier to find your way around it. PMW recognizes the character &`@`& as a `comment character' &-- anything on an input line that follows &`@`& is completely ignored. So, for example, you could have a line such as: .code @ This is the pedal part .endd at the start of a stave. It is also a good idea to put a bar number in the input at the end of each input line, and some people even like to keep each bar on a separate line like this: .code [nocheck] r | @0 F. | @1 C. | @2 c d e | @3 F. | @4 .endd In the next chapter we will introduce other features of the PMW encoding, but without showing the complete file every time. It particular, the &%[stave]%& and &%[endstave]%& directives will normally be omitted. However, before doing that we introduce a general feature that can be used to simplify and customise PMW input files. .section "Simple macros" SECTmacro .index "macros" "definition" .index "macros" "insertion" A &'macro'& is a concept found in computer programming languages and in some kinds of wordprocessing systems. The idea is very simple: whenever there is a sequence of input characters that are going to be repeated several times in a document, the sequence is given a name. Referring to the name later in the input calls up the required characters. There are several advantages in using a macro for a repeated character sequence. Not only does it save typing, but it also guarantees that the same input string is used every time, thus ensuring consistency. In addition, if a change needs to be made to the string, it only has to be done once. Simple macros are introduced here because they are conveniently used for text strings such as &'mf'&, or &'ff'& which may appear many times in a piece. A macro definition can specify exactly how you would like such a string to appear &-- what size, which font, etc. Several files of `standard macros' are provided with PMW (&R; &<>&). These contain basic macros for dynamics, fingering, figured bass text, and more. There are also a number of macros contributed by users in the &_contrib_& directory of the distribution tarball. As a brief introduction to macros, consider the following input line: .code *define mf "\it\m\bi\f"/b .endd .index "&%*define%&" This is a directive that defines a macro whose name is &%mf%&. It is an example of a &'preprocessing directive'&, which is a third kind of directive, in addition to header directives and stave directives. Preprocessing directives may occur anywhere in a PMW input file. They always occupy a complete input line by themselves, and are identified by starting with an asterisk. The &%*define%& directive must be followed by the name of the macro being defined. The replacement text for the macro consists of the rest of the input line, which may be empty. White space that immediately follows the macro name is not included. .index "&& (insert) character" After the definition above has been processed, an occurrence of the characters &`&&mf`& anywhere in the input is replaced by the text &`"\it\m\bi\f"/b`&. There must not be any space between the introductory &`&&`& character and the name of the macro that is being inserted. This particular example specifies a text item for the string &'m&*f*&'&, where the &'m'& is in italic and the &*&'f'&*& in bold italic, as is commonly done. (See sections &<>& and &<>& for explanations of how the above string achieves this.) The example also specifies that the string is to be positioned below the stave. If other options are needed for instances of the string, they can be added after the macro call; in particular, adding &`/a`& will cause the text to be above the stave, because when both &`/b`& and &`/a`& appear, the rightmost one is used. Here are some examples of possible uses of this macro: .code &mf abc | &mf/a efg | cg &mf/d6 d | .endd The option &`/d6`& moves the text down by six points. Macros can be used for any string of input characters; their use is not confined to text items. A full description of all the macro facilities is given in section &<>&. . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .chapter "Using other PMW features" CHAPlastintro In this chapter we cover most of the major PMW facilities in an introductory manner. All the information is repeated in more detail in the reference chapters that follow. .section "More about notes" This section describes some more common facilities related to notes. .subsection "Note types" .index "notes" "types of" .index "flags" PMW can handle eight different kinds of note, from breves to hemi-demi-semiquavers. The encoding for some of them was introduced in the previous chapter. For notes longer than a minim the plus character is used to double the duration, and for those shorter than a semiquaver, the minus and equals characters can be combined. The complete set is as follows: .music "music02" 36 0,-14 If a stave consists mostly of notes that are shorter than a crotchet, some typing can be saved by the use of the &%[halvenotes]%& stave directive, which halves the length of subsequent notes. For more detail see section &<>&. .subsection "Rests" .index "rests" .index "whole bar rests" Rests are specified in the same way as notes, but using the letter R instead of a note letter. The length of the rest is indicated by the case of the letter and following plus, minus, or equals characters, exactly as for notes. There is one additional character that can follow the letter R, and that is an exclamation mark. This indicates that the rest is equal to the bar length, whatever the time signature may be. See section &<>& for details about other special types of rest. .subsection "Repeated rest bars" .index "repeated rest bars" .index "rests" "repeated bars" .index "repeated bars" .index "many bars rest" A whole bar rest can be repeated any number of times by putting a number in square brackets before the rest. For example, the code for 24 bars' rest is: .code [24] R! | .endd In fact, this kind of repetition is not confined to rest bars; it can be used to repeat any one bar. It is also possible to repeat sequences of more than one bar (&R; &<>&). .subsection "Beams" SUBSECTbeams .index "beaming" "breaking a beam" .index "beaming" "across rests" .index "notes" "beaming" .index "rests" "beaming across" .index "semicolon" "beam breaking" .index "; (semicolon)" "beam breaking" .index "comma" "beam breaking" .index ", (comma)" "beam breaking" Notes that are shorter than a crotchet are automatically beamed together within a bar, except when a note is followed by a beam breaking character. A semicolon breaks the beaming completely, whereas a comma breaks all but the outermost beam. Beams carry on across rests that are shorter than a crotchet, but they are always broken at the end of a bar, unless a continuation over the bar line is explicitly requested (&R; &<>&.) .music music03 40 0,-10 centre White space is permitted between the last note of a beam and any breaking character (semicolon or comma). .subsection "Triplets" .index "irregular note groups" Triplets are encoded by enclosing a set of notes in curly brackets. If the notes are beamed, just the number `3' appears alongside the beam. Otherwise, a longways `bracket' is drawn: .music music04 46 0,-8 centre You can change the way triplets are handled by putting options after the opening curly bracket. If you put &`/a`& the `3' will be put above the notes, whereas &`/b`& forces it below the notes. In both cases the longways bracket is also drawn. .music music05 48 0,-6 centre The last set of notes shows that triplets are beamed onto adjoining notes unless a beam breaking character is present. PMW supports other irregular note groupings as well as triplets, and has several more options for controlling the form and placing of the mark (&R; &<>&, &<>&, &<>&, &<>&). .subsection "Accents and ornaments" .index "accents" "on notes" .index "expression marks" .index "notes" "accents" .index "notes" "expression" The coding for accents and ornaments is always placed between two backslash characters immediately following a note. For example, a note with a staccato dot is followed by &`\.\`&. The most common accents and ornaments are: .music music06 78 0,-12 centre The codes &`\v\`& and &`\V\`& are used for small and large `vertical wedge' accents because of the similarity of shape, though the accents themselves may be the opposite way up to the coding letters, depending on whether they appear above or below the note. The other mark that looks like the letter V is a string `up bow' mark, which is why &`\u\`& is used to represent it. Other controlling options are also given between the same pair of backslash characters. For example, to force the stem of a note to point upwards or downwards, the encodings &`\su\`& or &`\sd\`& are used, respectively. When there is more than one item between the backslashes, spaces may be used to separate them. Details of all the various options are given in several sections from &<>& onwards. .subsection "Chords" .index "chords" "specifying" Chords in which all the notes are the same length are encoded by enclosing a number of separate notes in round brackets (parentheses). If the chord has an accent, or any other special option, this must be given with the first note. The notes can be given in any order. .music music07 42 0,-10 centre .section "Bar lengths and bar numbers" SECTbarlennum .index "bar lengths" .index "variable bar lengths" .index "odd bar lengths" .index "length" "of bars" PMW checks that the notes given for a bar match the current time signature, and generates an error message if they do not. However, there are times when this checking needs to be disabled. For a piece that has variable-length bars without time signatures, or indeed for typesetting the kind of examples that appear in this manual, the checking can be entirely suppressed by using the header directive &%nocheck%&. The length check can also be disabled for an individual bar. This is done by using the &%[nocheck]%& stave directive in the bar concerned, in each stave. The most common occurrence of this is at the start or end of a piece where there is an incomplete bar. If there is more than one stave, PMW checks that each one has the same note length in each bar. If not, it generates a warning message for each mismatch. Output is still generated; the short bars are filled with blank space. .index "whole bar rests" .index "rests" "whole bar, length check" However, this check does not apply to whole bar rests that are notated using an exclamation mark (for example &`R!`&), unless the bar ends with something else (such as a clef change) that depends on the bar length. This exception is made so that the whole bar rest notation can conveniently be used in situations where the bars in the other staves are of varying lengths. .index "MIDI" "whole bar rests" If a MIDI file is generated, however, whole bar rests always take up the length of time implied by the time signature. .subsection "Bar numbers" SUBSECTbarnumbers .index "bar numbers" "requesting" .index "numbering bars" The &%barnumbers%& header directive is used to request automatic bar numbering above the top stave of systems. There are several options that control where the numbers appear and in what form. .code barnumbers line .endd This causes PMW to output a bar number at the start of each line of music, except for the first line. .code barnumbers 10 .endd This causes PMW to output a bar number every 10 bars. You can choose any number you like; specifying 1 causes every bar to be numbered. If the word `boxed' or `roundboxed' appears after the directive name, the numbers are enclosed in a rectangular box with mitred or round corners, respectively. You may also specify the point size of the font after the word `line' or the count. .code barnumbers boxed line 9 .endd This requests bar numbers at the start of each line, in boxes, using a 9-point font. The default font size is 10 points. Finally, you can specify the font to be used for the number: .code barnumbers 5 italic .endd This requests bar numbers in italic, every five bars, using the default font size of 10 points. There are further options for forcing or suppressing individual bar numbers, and for moving them (&R; &<>&). .subsection "Bar counting" SUBSECTbarcounting .index "bar counting" .index "bar numbers" "counting" .index "counting bars" When a piece starts with an incomplete bar, it is conventional not to count it for bar-numbering purposes. Bar number 1 is normally the first complete bar of the piece. PMW does not do this automatically, but it does have the &%[nocount]%& stave directive, which causes a bar not to be counted for numbering purposes. This can be used anywhere in the piece, not only in the first bar. Section &<>& explains how PMW identifies uncounted bars if it needs to refer to them, for example, in an error message. The following example shows the use of the &%barnumbers%&, &%[nocheck]%&, and &%[nocount]%& directives: .code barnumbers boxed 2 italic time 4/4 [stave 1 treble 1] [nocount nocheck] b`-; c-d- | e.d-; e-a-g-e- | d-c-a`.c-; e-f- | @2 g. a-; g-e-c-e- | Dr-; b`-; c-d- | @4 .endd .music music08 40 0,-18 centre .section "More about underlay (lyrics)" .index "text" "underlay" .index "underlay" "multiple notes per syllable" PMW supports overlay (words above the stave) as well as underlay, though this is much less common. To avoid too many repetitions of `underlay or overlay', this manual mainly describes underlay, on the understanding that all the facilities are also available for overlay. .subsection "Multi-note syllables" In the example in chapter &<>&, each syllable of the underlay was associated with just one note. When this is not the case, equals characters are used to continue a syllable over as many notes as necessary. .code "glo-========ri-a in==" a-e-a- | b-c'=b=a=b= | c'-c'-b- | g-a-b- | .endd .music music09 40 10,-10 If the continued syllable is not the last one in a word, the equals characters follow the hyphen. PMW outputs a string of hyphens or an extender line, as appropriate, depending on whether the syllable is at the end of a word or not. PMW does not treat tied notes specially when distributing underlaid syllables to notes, and so an equals character must be used when a syllable is associated with a tied note. An underlay string must be followed by all the notes to which it relates. This includes continued notes that are indicated by equals characters. Consider the following example: .code "the cat sat=" g- | gg_ | "on the mat" ge-f- | gr | .endd This example is not correct, because the first string provides words for four notes (three syllables plus a continuation), but only three notes follow before the next string. If, as in this example, you start another underlay string before the previous one is all used up, the second string is treated as a second verse and is positioned underneath the first string. .subsection "Special characters and font changes" SUBSECTspecfont The computer keyboard does not contain all the characters that are needed for underlay, and there is often a requirement to use different fonts (for example, italic). To cope with these issues, PMW treats the backslash character specially if it is found in a quoted string. (This applies to all strings, not just underlay.) Backslash is known as the `escape character' because it allows an escape from the string in order to give some control information. .index "\ (escape) character" .index "escaped characters" .index "backslash" There are a number of `escape sequences' that allow you to specify characters that may not be directly available on the keyboard: .itable none 0 0 2 40 left 200 left .row &`\a'`& "outputs á" .row &`\a``& "outputs à" .row &`\a.`& "outputs ä" .row &`\a^`& "outputs â" .row &`\ss`& "outputs ß" .endtable .index "accented characters in strings" For example, the input string &`"\it\sch\o.ner"`& becomes &'schöner'&. Using such escapes makes it possible to encode any character using only ASCII codes. However, PMW does also recognize UTF-8 encoding in character strings. Changes of font are specified by giving a two-letter font code between a pair of backslashes: .itable none 0 0 2 40 left 200 left .row &`\it\`& "change to &'italic'&" .row &`\rm\`& "change to roman" .row &`\bf\`& "change to &*bold face*&" .row &`\bi\`& "change to &*&'bold italic'&*&" .endtable .index "font changes" There is an in-depth discussion of text fonts and character encodings in section &<>&. Section &<>& has more details about escape sequences, and there is a list of available text characters and their escape sequences in chapter &<>&. .subsection "Spacing" SUBSECTunderlayspacing .index "underlay" "spacing" .index "spacing" "underlay" Within a bar, PMW ensures that the syllables of underlay text do not crash into each other, by spreading out the notes if necessary. &*Warning:*& If use of the &%layout%& header directive (&R; &<>&) causes the bars in a system to be horizontally compressed in order to fit them on the line, underlaid syllables may be forced into each other. It's best to avoid settings of &%layout%& that cause compression if possible. Sometimes you may want to make additional adjustments to the spacing. The &%[space]%& directive is used to insert additional space between notes. The units used for space in PMW are &'printers' points'&, of which there are 72 to the inch. .code a [space 7] b .endd This coding ensures that the two notes are 7 points (about 0.1 of an inch) further apart than they would otherwise be. Any underlay that is attached to the notes is also moved appropriately. .index "# character in underlay" .index "^ character" "in underlay" .index "circumflex" "in underlay" There are also two facilities for altering the position of an underlay syllable relative to its note. Firstly, the character &`#`&, if it appears in an underlay string, is replaced by a space, but is treated as part of a syllable. Since syllables are centred on their notes, putting &`#`& characters at the start of a syllable moves it to the right, and putting them at the end moves it left. Secondly, if the character &`^`& appears in an underlay syllable, only those characters to the left of it are used for finding the centre of the string; the character itself is not output. The &`#`& and &`^`& characters are treated specially only in underlay (and overlay) strings. This example shows how the use of &`#`& and &`^`& affects the positioning of syllables: .code "music ###music music### mu^sic" G+ G+ G+ G+ .endd .music music10 30 8,-14 .section "Other kinds of text" .index "text" "on staves" Text strings that are not part of the underlay are normally followed by one of the options &`/a`& or &`/b`&, indicating that the string is not underlay, and that it is to be placed above or below the stave, respectively. If &%[text underlay]%& has not been set for the stave, unqualified strings are treated as if &`/b`& were present. Such strings are normally aligned so that they start at the position of the following note, or at the bar line if there are no following notes in the bar. However, if the option &`/e`& is given, the string is aligned so as to end at the subsequent note or bar line. The position of any string can be adjusted by following it by one or more of the options &`/u`& (up), &`/d`& (down), &`/l`& (left), or &`/r`& (right) and a number, which is a distance in printers' points. It is also possible to adjust the horizontal position by reference to the musical offset (&R; &<>&). The initial font for non-underlay strings is italic, but the escape sequences described above can be used to change it as necessary. Here are some examples: .code "X"/a g "X"/a/u4 g "X"/a/l6 g | "rall."/a gab | "\bi\ff"/b A. | G. "\rm\May, 1994"/b/e | .endd .music music11 40 8,-16 Music characters (such as notes) are available for use in strings, and there are a number of escape sequences for the most common cases. .itable none 0 0 2 40 left 200 left .row &`\*m\`& "outputs a minim" .row &`\*c\`& "outputs a crotchet" .endtable .index "notes" "in text strings" These are most useful in strings of the form &`"\*c\ \rm\= 45"`&, which becomes: .display &{5}& = 45 .endd .index "rehearsal marks" A rehearsal mark is a special kind of string that is coded by placing it in square brackets: .code ["A"] .endd PMW outputs such strings in a fairly large font, enclosed in a rectangular box; there are options to change these settings (&R; &<>&). .section "Ties, slurs, and glissandos" SECTtiesslurs .index "ties" "specifying" .index "slurs" "introduction" .index "glissandos" Single notes and chords are tied together by entering an underscore character at the end of the first note, or following the closing parenthesis of the first chord. For single notes, ties are normally drawn on the opposite side of the noteheads from the stems, but can be followed by &`/a`& or &`/b`& to force them above or below the noteheads. These options can also be used for chords. .music music12 44 0,-4 centre When two single notes of different pitches are connected by a slur, the same notation (an underscore) can be used. However, for chords, the &%[slur]%& directive (see below) is required to draw slurs, because if two chords are joined by an underscore, the notes in each that are of the same pitch are joined by a tie mark, any other notes being left alone. An underscore is also used for glissandos between single notes; following it with &`/g`& causes a glissando line to be drawn instead of a short slur. .music music13 40 0,-10 For slurs involving chords or covering more than two notes, the &%[slur]%& and &%[endslur]%& (or &%[es]%&) directives are used. The notes that are to be covered by the slur appear between them. The slur is drawn above the notes unless &`/b`& is given. .code [slur] d-. [slur] d=_; d=c=a-; [es] [slur/b] %d'\-\ a-\sd\ b_b- [es] [endslur] .endd .music music14 40 8,-10 This example shows that slurs can be `nested' inside one another if necessary, each &%[endslur]%& directive relating to the most recent &%[slur]%&. There are options for handling more complicated cases, and there are also options for adjusting the positions and shapes of slurs, and for introducing gaps (&R; &<>&). .section "Repeats" SECTrepeats .index "repeat marks" .index "first time bar" Conventional musical repeat marks are encoded using the input strings &`(:`& and &`:)`& which may occur in the middle of a bar as well as at the start or end. A number of different mark styles are available (&R; &<>&). When there is a first time and a second time ending, the directives &%[1st]%& and &%[2nd]%& are used to indicate it, with the directive &%[all]%& marking the bar where all the endings are complete. .code b-f'-e'-; d'_c'- | [1st] g-d'-d'- g. :) | [2nd] c'=b=c'-a- b. | [all] (: d'-c'-b- a_g- | .endd .music music15 50 0,-16 centre The &%[all]%& directive is not used when the second time bar is the final bar of a piece. Instructions such as &'Da capo'& are given as text strings, and the music font contains the two conventional signs used in conjunction with &'Dal segno'&. They correspond to the letters c and d, and can be included in text strings as follows: .itable none 0 0 2 60 left 200 left .row &`"\mf\c"`& "gives&~&~ &{{c}}&" .row &`"\mf\d"`& "gives&~&~ &{{d}}&" .endtable The escape sequence &`\mf\`& changes to the music font, full details of which are given in chapter &<>&. .section "Hairpins" .index "hairpins" Crescendo and diminuendo `hairpins' are coded using the characters &`<`& and &`>`& in pairs. The hairpin starts at the note following &`<`& or &`>`& and ends at the note before the next one. Hairpins are drawn below the stave by default, but the directive &%[hairpins above]%& can be used to cause them to be drawn above. Either end of a hairpin can be moved by following the angle bracket with &`/u`& (up), &`/d`& (down), &`/l`& (left), or &`/r`& (right), and a number, which gives a distance in points. Any up or down movements specified at the start of a hairpin apply to the whole hairpin, but any that are specified at the end apply only to the end &-- by this means, sloping hairpins can be drawn. .display &`&~< abc'd' < | >&). .section "Staves and systems" This section gives some introductory information about setting up staves and systems. The reference chapters describe additional facilities for use in complicated cases. .subsection "Stave spacing" .index "staves" "spacing" .index "spacing" "staves" .index "default" "stave spacing" The default spacing between staves is 44 points. This is the distance between the bottom line of one stave and the bottom line of the one below it. The &%stavespacing%& header directive is used to alter this. In the most simple case it is followed by a single dimension, which sets the same spacing for all staves. This directive may also be followed (optionally after a single dimension) by a list of stave numbers and spacings, each pair being separated by a slash. These set spacings for specific staves; each dimesion is a distances to the stave below. .code stavespacing 2/60 4/54 .endd This example specifies that the spacing between staves 2 and 3 is to be 60 points, and that between 4 and 5 is to be 54 points. The remaining spacings will take the default value of 44 points. PMW does not make any alterations to stave spacings by itself. However, there is commonly a requirement to make a change in the spacings for one particular system, usually when one stave has unusually high or low notes. This can be done by using the &%[sshere]%& directive. When this is encountered, it causes the spacing to be changed for the current system only. A completely new value can be given, but if a number is given preceded by a plus or minus sign, it causes a change in the spacing of that amount. .itable none 0 0 2 100 left 200 left .row "&`[sshere +4]`&" "increases the spacing by 4 points" .row "&`[sshere -2]`&" "decreases the spacing by 2 points" .row "&`[sshere 48]`&" "sets the spacing to 48 points" .endtable If there is more than one &%[sshere]%& in the same stave in a single system, the last absolute setting (if any) is used, with any relative changes acting cumulatively. For more details see sections &<>& and &<>&, which also describe facilities for adjusting the amount of space above a stave. .subsection "System gap" .index "system gap" .index "spacing" "systems" .index "gaps" "between systems" The distance between systems is called the `system gap', and is set by the &%systemgap%& header directive. Again, the default is 44 points. However, since PMW normally puts additional space between systems so that the bottom stave is at the bottom of the page, the system gap value is really a minimum distance between systems. (See the &%justify%& directive if you want to stop PMW from doing this vertical justification.) There is an &%[sghere]%& directive for changing the system gap for a single system, and it works in exactly the same way as &%[sshere]%&. For more details see section &<>&. .subsection "System separators" It is common in scores to have two short thick lines between systems at the lefthand side, to emphasise visually where a new system begins. PMW can be configured to output such lines; see section &<>& for details. .subsection "Brackets and braces" .index "joining signs" .index "staves" "joining signs" By default, PMW joins together the staves that comprise a system with a bracket. The other kind of joining sign (used most often for two staves for one instrument) is the brace, which is a large version of the &`{`& character. .index "&%bracket%&" .index "&%brace%&" There are two header directives, &%bracket%& and &%brace%&, that specify which staves are to be joined with each of these signs. Each of these directives is followed by a list of stave ranges. .code bracket 1-4, 8-11 brace 5-6 .endd This example causes the system to be divided into three sets of staves. Two of the groups, staves 1&--4 and 8&--11, are each joined by a bracket, whereas staves 5&--6 are joined by a brace. If you don't want any staves at all to be bracketed, as might be the case when setting a keyboard piece, you need to include the directive &%bracket%& with nothing after it, in order to cancel the default setting, which is to bracket all the staves of the system. .subsection "Initial text" .index "text" "at stave start" At the start of a piece it is common to show the names of the voices and/or instruments to the left of the first system. This is done by giving a string in quotes as part of the &%[stave]%& directive. .code [stave 1 "Clarinet" treble 1] .endd The text can be split up into several lines by including vertical bar characters; each vertical bar causes a line break. .code [stave 5 "Horn|in F" treble 1] .endd Options are available for changing the form and layout of this text (&R; &<>&). .section "Keyboard staves" .index "keyboard staves" .index "staves" "keyboard" Keyboard music is one of the more complicated kinds of music to typeset, especially if it is a reduction of an instrumental score. It is usually a good idea to study the manuscript carefully to decide exactly how it is to be encoded before you start. A brace is normally used to join the staves of keyboard music, with the name of the instrument mid-way between the two staves. This can by done by adding &`/m`& to the relevant string (see the example in the next section). .subsection "Overprinted staves" .index "overprinting" "staves" .index "staves" "overprinted" There are two ways of tackling pieces that have two parts on one stave, with stems pointing in different directions. If most of the piece is like this, the best approach is to use two different PMW staves, but specify a stave spacing of zero for the first one so that the staves appear on top of each other. Use can be made of the directives &%[stems up]%& and &%[stems down]%& to force the stem directions of all notes. The directives &%[ties above]%& and &%[ties below]%& can also be used to force the default direction of all ties. In the following example, two PMW staves have been used for each visible stave, and the stave spacings have been set accordingly. The spacing after stave 2 has been increased to avoid clashes of stems between the two staves. .code time 3/4 bracket brace 1-4 stavespacing 1/0 2/48 3/0 [stave 1 "Piano"/m treble 1 stems up ties above] Ae' | d'_af | e_fe | D. | [endstave] [stave 2 treble 1 stems down ties below] e_da | A#d | [smove 6] %>& for more details about special kinds of rest. .subsection "Coupled staves" SUBSECTcoupleintro .index "coupled staves" .index "staves" "coupled" .index "treble/bass coupling" .index "bass/treble coupling" Keyboard music sometimes includes sets of beamed notes that extend over both staves. These can be handled using a technique known as `coupling': .code [stave 1 treble 1 couple down] g-e-c-g`-e`-c`- | e'-\sd\c'-g-g`-\sw\e`-c`- [endstave] [stave 2 bass 0] Q! | Q! | [endstave] .endd .music music22 70 8,-16 The upper stave has been `coupled' downwards to the lower one. When this is done, any note in the upper stave that is lower than middle C is put on the lower stave. Notice the use of invisible rests on the lower stave to fill the bars without showing anything. An alternative approach is to use &%[couple up]%& to get notes from the lower stave that are higher than middle C put on the upper stave. Simultaneous coupling of two staves in both directions is permitted. &*Warning:*& Coupling does not work properly unless the upper stave is using the treble clef and the lower one is using the bass clef, and the distance between them is a multiple of four points. The second bar of this example shows how to position notes on both sides of a beam, a facility that is often needed when using coupled staves. The &`\sd\`& option on the first note of the beam forces its stem to be downwards. Normally, this would mean that all the other notes in the beam would also have downward pointing stems. However, the fourth note has the option &`\sw\`&, which has the effect of swapping the stem direction for the remaining notes. For a stem direction swap to work, the two nearest notes have to be fairly far apart, as these two are. If stem swapping is tried in the middle of the first bar of this example, PMW generates an error, because there is not enough space to fit the beam in between the two sets of notes. The coupling state can be changed as often as necessary in a piece: &%[couple off]%& turns it off. .section "Heads and feet" .index "head lines" .index "foot lines" .index "&%heading%&" We introduced the &%heading%& directive in chapter &<>&. You may have as many &%heading%& directives as you like at the start of a piece. By default, the first two appear in larger type than the remainder. However, you can specify an explicit font size by giving a number before the string: .code heading 13 "|Scherzo" .endd This example specifies a size of 13 points. After outputting a heading, the `current point' is moved down the page by a distance equal to the font size, so a second heading after the one above would be placed 13 points below it. You can control this distance by giving a number after the string: .code heading 16 "|Mass" 24 .endd This example specifies a type size of 16 points, and a subsequent space of 24 points. One special case of this is to specify a distance of zero so that the next heading is at the same level. This makes it possible to have different sizes on the same line. .code heading 16 "|Piece" 0 heading 12 "Words: J. Smith||Music: A. Jones" 24 .endd In this example, the first heading consists of centred text, and the second has only left-hand and right-hand parts, with nothing in the middle, so they do not overlap. .index "&%footing%&" The &%footing%& directive is of exactly the same form as &%heading%&; it specifies text for the bottom of the first page. The escape sequence &`\c)`& is useful in footings; it becomes ©. Both &%heading%& and &%footing%& apply to the first page of a piece only. To output heads and feet on other pages, you must use the &%pageheading%& and &%pagefooting%& directives. .index "&%pageheading%&" .index "&%pagefooting%&" The &%pageheading%& directive applies to all pages except the first, and &%pagefooting%& applies to all pages, unless overridden for the first page by a &%footing%& directive. .index "page numbers" .index "numbering pages" The most common use of these directives is for outputting page numbers at the top or bottom of each page. There are three escape sequences for inserting a page number into a string: .itable none 0 0 2 30 left 400 left .row &`\p\`& "the current page number" .row &`\pe\`& "the current page number only if it is even" .row &`\po\`& "the current page number only if it is odd" .endtable This is a typical example: .code pagefooting "|\p\" .endd It puts the page number centrally at the foot of each page (unless there is also a &%footing%& directive for something different on the first page). .code pageheading "\pe\||\po\" .endd This example causes page numbers to appear at the top of each page other than the first, alternately on the left and right. Even numbers are on the left, odd ones on the right. .index "heading" "printing outside margins" .index "footing" "printing outside margins" .index "margin" "printing outside" When heading or footing text contains left-hand and right-hand parts, these line up with the left and right edges of the music staves. Page numbers are sometimes needed outside these normal margins. The easiest way to do this is to make use of one of the special characters in the music font. These are characters that cause no marks to be made on the page, but which move the current position. They are provided for use by PMW when building up complicated shapes from simpler ones, but they can be used for other purposes as well. Full details of the music font are given in chapter &<>&. The character of interest here is character number 123, which corresponds to the &`{`& character in text fonts. It causes a leftwards movement of 0.33 times the font's size (for example, 3.3 points for a 10-point font). Consider this directive: .code pageheading "\mf\{{{{\rm\\pe\||\po\\mf\{{{{" .endd The escape sequence &`\mf\`& changes to the music font. The string of four &`{`& characters causes a leftwards movement of the current position, so that the even page number will appear to the left of the normal margin (&`\rm\`& changes back to the roman font). At the end of the line, the backwards spacing must follow the page number. At first sight it looks odd to end a string with spacing characters, but because this is a right-aligned string that must end at the right-hand margin, the backwards movement has the effect of causing the odd page numbers to appear to the right of the normal margin, so that the subsequent leftwards movement brings the current point back to the margin. Another common requirement is to put page numbers higher up the page than PMW normally starts. This can be achieved by using a &%pageheading%& directive with an empty text string and a negative downwards movement. .code pageheading "" -10 .endd This example has the effect of moving up the page by 10 points. .section "Page layout" .index "page layout" .index "layout of pages" The horizontal length of music systems can be set by means of the &%linelength%& directive, and the vertical length of pages by the &%pagelength%& directive. The default values are: .code linelength 480 pagelength 720 .endd These are suitable values for A4 paper while leaving fairly generous margins, especially at the sides. The linelength can be increased to as much as 520 for A4 paper without getting too near the edges. The music is positioned centrally on the page, so changing the line length changes both margins symmetrically. PMW defaults to A4 paper, but the &%sheetsize%& directive can be used to set A3, as well as some other standard sizes, and the &%sheetwidth%& and &%sheetdepth%& directives can be used to set the dimensions of the paper independently. The value given for the page length sets the space used for headings and music systems. However, it does not include the space for footings, which always start 20 points below the page length distance down the page. By default, PMW fills up each system with as many bars as it can within the given line length, and then fills up each page with as many systems as it can. Sometimes this means that the music takes up more or fewer pages than required, or does not end tidily at the end of a page. If you know the layout that is required in advance, you can use the &%layout%& header directive to specify how many bars there are in each system and how many systems there are on each page. Otherwise, when using the default filling mechanism, the following stave directives can be used to influence the layout: .ilist The &%[newline]%& directive causes PMW to start a new line of music (a new system) with the bar in which it appears. It need appear only in one stave. .next The &%[newpage]%& directive causes PMW to start a new page with the system in which it appears. It need appear only in one stave. .next The &%notespacing%& directive can be used to spread out or to compress the music. This example reduces all the distances by a factor of 0.92: .code notespacing *0.92 .endd .endlist However much you reduce the notespacing, PMW will not allow notes to be output on top of each other. Quite small changes of note spacing can sometimes make dramatic changes to the layout of a piece, by causing changes in the assignment of bars to systems. At other times, for example when bars are very long, a large change might be needed to have any effect. Occasionally it is helpful to change the notespacing for part of a piece only. This can be done by using the &%[notespacing]%& stave directive (abbreviation &%[ns]%&). This should always be given at the start of a bar; it then affects the current bar and subsequent ones. If it is given without a value, the spacing is reset to what it was at the start of the piece. Therefore, to reduce the spacing for one bar only, one might have: .code [ns *0.8] g=a=b=g=; b=a=g=b= | [ns] D | .endd This should be given in the first stave because PMW processes the staves in order, for each bar, and any previous staves would be processed using the old value. That is also why resetting the value should be done in the next bar; if &%[ns]%& were at the end of the first bar, the reset values would be used for the following staves. Another way of fitting a piece onto a given number of pages is to change the magnification, as described in the next section. .section "Magnification" SECTmagnification .index "magnification" The standard size of music formatted by PMW has a distance of 4 points between stave lines. The &%magnification%& header directive can be used to cause it to output bigger or smaller staves. .code magnification 1.5 magnification 0.75 .endd The first example has the effect of increasing the gap between stave lines to 6 points, whereas the second reduces it to 3 points. There is also a directive called &%stavesize%& (&R; &<>&) that can be used to alter the magnification for individual staves, relative to the overall magnification. There are no restrictions on the values that can be given for the magnification. When a magnification is specified, everything is magnified (or reduced) in proportion, and the distances given in PMW directives are all magnified too. This means that if a vertical distance is specified as 4 points, it is always equal to the distance between stave lines. Thus, changing the magnification does not require changes to the music data. However, exceptionally, the values given for the &%linelength%& and &%pagelength%& directives are &'not'& magnified or reduced. They specify the real dimensions of the page, and so do not have to be changed if the magnification is altered. .section "Extracting parts from a score" .index "extracting parts from a score" .index "parts, extracting from score" When a score file has been created, individual parts can be extracted by using the &%-s%& command line option, as described in section &<>&. For example, if the input were a string quartet, selecting stave 2 would cause just the second violin part to be output. Usually, you will want to make some changes for a part. At the very least, the headings will probably be different, and you may want to have cue notes in parts but not in the score. You may also want to output parts at a larger magnification, and force page or line breaks at particular places. This is where PMW's &'conditional directives'& come in. These are preprocessing directives that allow you to skip parts of the input file under certain conditions. For example, the start of a file might be something like this: .code *if score magnification 0.9 *else magnification 1.3 *fi .endd .index "&%*if%&" .index "&%*else%&" .index "&%*fi%&" Because they are preprocessing directives, each &%*if%&, &%*else%&, or &%*fi%& must appear on a line by itself. In the example above, &%*if%& tests to see whether a full score is being output, and if so, sets the magnification to 0.9. Otherwise it sets it to 1.3. PMW considers that a score is being output if no staves are selected by the &%-s%& command line option. The &%*if%& directive can also test for individual stave selections, and this is the way to set up appropriate headings: .code *if stave 1 heading "Violin I" *fi *if stave 2 heading "Violin II" *fi *if stave 3 heading "Viola" *fi *if stave 4 heading "Violoncello" *fi .endd The `stave' test succeeds if the given stave, and only the given stave, is selected, but it is possible to give a list or range of staves (and to use the plural `staves'): .code *if staves 1-2 heading "Violins" *fi .endd .index "format option" Finally, the &%*if%& directive can be used to test for an arbitrary &'format name'& defined by the user. You specify the format using the &%-f%& option in the PMW command line. It can be any word that you like. For example, if you wanted to extract the string parts from a score, instead of explicitly specifying the stave numbers each time, you could specify `strings' as the format, and use input such as: .code *if strings selectstaves 4-9 *fi .endd The &%selectstaves%& directive has the same effect as selecting staves by the &%-s%& command line option (which it overrides), provided it precedes any tests on the stave selection. This facility can be put to many other uses for varying the format of the output. It is not necessary to indent the directives that appear between &%*if%& and &%*fi%&, but it helps make the input more readable. These conditional preprocessing directives can be used anywhere in a PMW file, not just in the header portion. Here is an example that shows how to notate rest bars in a score, but cue bars in a part: .code [stave 6 "Trumpet" treble 1] [20] R! | *if score [2] R! | *else "(flute)"/a [cue] g'f'e' | [cue] C'. | *fi .endd The &%[cue]%& directive specifies that the remaining notes in the bar are to be output at the cue note size. . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .chapter "Standard Macros" CHAPstdmacs .index "standard macros" .index "macros" "standard" The use of macros is introduced above. Several files of pre-defined macros are provided with PMW. They contain shorthands for a number of common requirements. Suggestions for additions are welcome. .ilist &%FBass%& contains macros for figured bass notation. .next &%Fingering%& contains macros for fingering numbers. .next &%StdMacs%& contains macros for a number of common items, including dynamics. .endlist The &%*include%& preprocessing directive (&R; &<>&) gives access to these files, for example: .code *include "Fingering" .endd However, you must not have a file of your own called &%Fingering%& because that will take precedence. .section "Figured bass macros" .index "figured bass" "macros" The standard macro file called &%FigBass%& contains a general macro for figured bass numbers, along with some shorthands for common figurings. You can change two aspects of these macros by defining either or both of the macros &`FBI`& or &`FBU`& before including the &%FigBass%& file. &`FBI`& specifies initial text for the start of each figured bass string. It defaults to &`\mf\z`& which uses the music font to insert a small amount of white space &-- this makes for better alignment with the notes. &`FBU`& specifies the type of text to use. It defaults to &`/fbu`&, which specifies text at the figured bass size (see the &%fbsize%& directive), positioned at the underlay level. This ensures that the top line of figured bass numbers are all at the same level. You can change this to &`/fb`&: .code *define FBU /fb *include "FigBass" .endd In this configuration, each figuring's vertical position depends on the note above. The basic figured bass macro is called &`FB`&, and it takes up to three arguments, which are output one below the other. It is placed immediately before the note to which it applies, as in these examples: .code &FB(3) g &FB(3,4) g &FB(7,2,4) G .endd There are three macros for isolated accidentals, called &`FBF`& (flat), &`FBN`& (natural) and &`FBS`& (sharp). There are also a number of shorthands for common figurings. All of them are shown below: .music music68 200,-50 The names of the macros are intended to suggest their contents, with `b' for `below', `c` for `cross', `f' for `flat', `n' for `natural', `s' for `sharp', and `u' for `underscore'. There are two versions of some crossed numbers, the plain `c' versions using a character in the music font, whereas the `cp' versions use a normal digit overprinted with a `+', which makes the cross more prominent. .section "Fingering macros" SECTfingeringmacros .index "fingering indications" "macros" The standard macro file called &%Fingering%& contains definitions of macros whose names are &`&&0`&, &`&&1`&, &`&&2`&, &`&&3`&, &`&&4`&, and &`&&5`&, plus one called &`&&THUMB`& for the cello thumb sign &{a}&  . Like the figured bass macros, these must appear before the note to which they refer. There is an issue if you want to use both the figured bass and the fingering macros at the same time, because there is a name clash. For this reason, a prefix can be set for the fingering macros. If your input is like this: .code *define FINGERPREFIX f *include "Fingering" .endd the names of the fingering macros become &`&&f0`&, &`&&f1`&, etc. You can also change the size of the numbers by setting &`FINGERSIZE`& for the numbers and &`THUMBSIZE`& for the thumb indicator. Finally, you can set &`FINGERTYPE`& to adjust the position. The default is &`/a/c`&, which puts the fingering above the note, centred. An individual number can be forced below the note by following the macro call with &`/b`&, but if you want them all below, setting &`FINGERTYPE`& may be more convenient. There is more discussion of fingering and an example below (&R; &<>&). .section "Miscellaneous macros" The standard macro file &%StdMacs%& contains definitions for a number of common musical notations. .subsection "Dynamics and common instructions" The meaning of the following macro names should be obvious: &`f, ff, fff, fp, fz, mf, mp, p, pp, ppp, sf, sfz, fsubito, fsub, psubito, psub, ppsubito, ppsub, animato, cantabile, atempo, cresc, decresc, semprecresc, dim, pocorall, pocorit, ponticallo, naturale, legno, rall, rit, simile, sonore, sotto, tempo1, ten, tranq`& .subsection "Slur shorthands" The macros &`sa`& and &`sb`& are shorthands for starting a slur above or below the notes, respectively. Additional options for the slur may be given as an argument to the macro call. For example, to move the start of a slur up and to the right one might have &`&&sa(/u4/r2)`&. There is also a macro called &`es`& to end a slur, where again options may be given as an argument. .subsection "Octavo marks" The macros &`S8a`& and &`S8b`& notate the start of an `8va' marking above or below the stave, respectively, with &`E8a`& and &`E8b`& marking the end. There a discussion of how these work below (&R; &<>&). .subsection "Piano pedal marks" .index "piano pedal marks" The macro &`ped`& puts a conventional &{£}& sign below the stave, and &`pedstar`& outputs &{$}&. There also three macros for pedal markings with horizontal lines: &`&&pedline`& follows &{£}& with a horizontal line that continues till &`&&pedend`& is reached. Intermediate `blips' can be created with &`&&pedblip`&. Here is a simple example: .code &ped C e &pedstar g | &pedline Cdg | &pedblip geC &pedend | .endd .music music69 40 0,-10 An optional argument for &`&&pedline`& is a downward movement (default 6) and an optional argument for &`&&pedblip`& is the width of the blip (default 4). There is discussion of how these macros work in the description of the &%[linegap]%& directive (&R; &<>&). . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .chapter "PMW reference description" CHAPreference Earlier chapters describe the basic features of the PMW music encoding in an introductory manner, in an order suitable for this purpose. Using only the material therein, you should be able to typeset a wide variety of music. However, there are many special-purpose features that have not yet been covered. The remainder of this document is written in the form of a reference manual. It contains a complete description of PMW input files, repeating in more detail some of what has gone before. PMW has many in-built features for common music notation. More unusual requirements can be met by making use of PMWs drawing features, described in chapter &<>&. Some examples can be found in the &_contrib_& directory in the PMW distribution. .index "reference syntax" .index "syntax for reference section" When describing the syntax of directives, use is often made of one or more italic words in angle brackets, for example: .display &`tripletfont`& <&'fontsize'&> <&'name'&> .endd What this means is that the bracketed italic words must be replaced by some specific instance of what they describe (in this case, values for the font size and the font name) when the directive is used. This is an example of the use of &%tripletfont%&: .code tripletfont 8 italic .endd Frequently, when the required value is a single number, &'n'& or some other single letter is used. In the example above, <&'fontsize'&> was replaced by a single number; however, more complicated ways of specifying the size of a font are possible (&R; &<>&). The following sections describe the format of PMW input files, and then discuss a number of general features, with references to particular directives. Complete descriptions of the directives themselves are not given here; they may be found in &'Header directives'& and &'Stave directives'& (chapters &<>& and &<>&). The chapter in between, &'Stave data'& (chapter &<>&), contains the specification of all items other than directives that may appear as part of a stave's data. .section "Format of PMW files" SECTfileformat .index "input file format" .index "file format" .index "format of input file" A file containing input for PMW is a text file in 8-bit UTF-8 Unicode format. However, non-ASCII characters (those with code points greater than 127) are recognized only within text strings. All other notation uses only ASCII characters. You can use any available text editor or wordprocessor to create such files. The input is in free format. Outside quoted strings, there is only one circumstance in which the use of white space is necessary, and that is .index "space character" to delimit an item when there would otherwise be ambiguity, for example, when a word is followed by another word. However, spaces are allowed between items, and can be profitably used to increase the readability of the file. Other than in quoted strings, a sequence of spaces is equivalent to one space. .index "@ (comment) character" .index "comment character" .index "annotating input" The character &`@`& is a comment character; if it appears outside a quoted string, the rest of the input line is ignored. This provides a way of annotating PMW input files. The first line of a file is very often something like this: .code @ Created by Christopher Columbus, October 1492 .endd .subsection "Line breaks" .index "line breaks" Line breaks in a PMW input file are equivalent to spaces, except in these circumstances: .ilist When a line contains a comment (see above), all characters from the introductory &`@`& character to the end of the line are ignored. .next Line breaks are not permitted within the options that follow a note between two backslash characters, whereas other white space is allowed. .next When a directive name is followed by a list of stave numbers, these can be separated by commas and/or white space, but must all be on one line. .next Line breaks are not permitted within the arguments of a macro call (&R; &<>&), nor within the argument of a string repetition (&R; &<>&). .next Preprocessing directives (&R; &<>&) always take up a complete line of their own, and may not continue onto subsequent lines. .endlist Line breaks inside quoted strings are converted to spaces. .subsection "Ignoring line breaks" SUBSECTconcatenation .index "line breaks" "ignoring" .index "concatenating input lines" .index "lines" "concatenating input" .index "&A3; (line concatenator)" The restrictions on line breaks just described may occasionally cause a very long line to be required. For example, a macro that generates a number of bars may have quite a long replacement string. To aid readability in such cases, a feature is provided for joining two or more input lines into one long line. If an input line ends with three ampersands (&`&A3;`&), the ampersands and the newline are removed, and the next line is concatenated. This happens before any other processing. For example, .display &`*define &A3;`& &`cresc &A3;`& &`"Crescendo"/b`& .endd is converted into the single line .code *define cresc "Crescendo"/b .endd before being processed. .subsection "Macro insertion and repetition" .index "&& (insert) character" .index "insert character" .index "macros" "insertion" In addition to its use in line concatenation, the character &`&&`& is an insert character that is recognized at any point in the file. It must be followed either by an asterisk and a number, or by the name of a previously-defined macro. The former syntax is used for repeating a sequence of characters (&R; &<>&). If a macro name follows, the macro's contents are inserted at that point &-- for details, see the description of the &%*define%& preprocessing directive in section &<>&. If a literal &`&&`& character is actually required in the input, it must be entered as &`&&&&`&. .subsection "Case sensitivity" .index "case-sensitivity" PMW is case-sensitive. That is, it distinguishes between capital (upper case) and small (lower case) letters. The only places where case does not matter are: .ilist In the names of directives (&`KEY`& is equivalent to &`key`&); .next In the names of key signatures (&`E$M`& is equivalent to &`e$m`&); .next In the `common' and `cut' (alla breve) time signatures (&`C`& and &`A`& are equivalent to &`c`& and &`a`&); .next In format words used to specify alternative forms of output; .next In words following the &%*if%& preprocessing directive. .endlist .subsection "Header information" .index "file header" .index "header" "for PMW file" A PMW file starts with a number of directives collectively known as the &'header'&. These provide information that applies to the whole piece of music, for example, one or more title lines, and they may also change the values of parameters such as the line length that control the final layout on the page. If the file contains multiple movements (&R; &<>&) there can be a set of header directives for each movement, though some parameters (for example, the magnification) can be set only at the start. .index "title pages" If the title lines fill up a lot of the page, there may be insufficient room for the first system of music, which is therefore moved onto the next page. This gives a way of producing a title page followed by pages of music, all from a single input file. The header is terminated by the first unquoted opening square bracket in the file, and may be completely empty. .subsection "Stave information" Following the header there is information for each stave, in this form: .index "&%[stave]%&" .display &`[stave `&<&'n'&> <&'additional data'&>&`]`& <&'notes and other stave items'&> &`[endstave]`& .endd A description of the &%[stave]%& directive is given in section &<>&. .index "maximum number of staves" There may be up to 63 normal staves, numbered from 1 to 63. They can be defined in any order, though they are always output in numerical order down the page. Data may also be supplied for a stave numbered 0, which has special properties (&R; &<>&). If a stave numbered &'n'& is present, all the staves with numbers lower than &'n'& .index "missing staves" .index "staves" "missing" are automatically supplied as empty staves if they do not appear in the input. For example, if only staves 2 and 4 are given, empty staves 1 and 3 are manufactured. .index "concert posters" .index "posters" A PMW input file need not contain any stave data at all; in this circumstance the only output will be the headings and footings, on a single page. This is a slightly eccentric way of creating concert posters. .subsection "Multiple movements" SUBSECTmovement .index "movement" "specifying" .index "&%[newmovement]%&" A PMW file may contain more than one movement, that is, the piece may be split up into several independent sections, each with its own title. It is worth doing this if there is some possibility of not having to start a new page for each movement. If you know that each movement will always start on a new page, you might prefer to keep each movement in a separate file. (See the &%*include%& preprocessing directive (&R; &<>&) for a way of including a common header when processing each file.) The term `movement' is something of a misnomer. All it means to PMW is that another piece of music is to follow, possibly on the same page as the previous one. A `movement' may be as short as a few bars of a musical example. .index "&%[newmovement]%&" The start of a new movement is indicated by the &%[newmovement]%& directive, which must appear within a header or following the information for a stave. After this there may appear a new set of header directives, followed by the staves for the new movement. The general format of a complete PMW input file is therefore as follows: .display &'Header information'& &'First stave of first movement'& &'Second stave of first movement'& … &'Last stave of first movement'& &`[newmovement]`& &'Supplementary header information'& &'First stave of second movement'& &'Second stave of second movement'& … etc. .endd .index "new page for movement" .index "movement" "new page" PMW starts a new page at the beginning of a new movement, unless there is enough room on the current page for the headings and the first system, or, if the first system contains only one stave, two systems. This can be overridden by options on the &%[newmovement]%& directive (&R; &<>&). .index "movement" "non-persistent parameters" In general, most parameters that can be set by header directives persist from movement to movement, but &%doublenotes%&, &%halvenotes%&, &%key%&, &%layout%&, &%notime%&, &%startbracketbar%&, &%startnotime%&, &%suspend%&, &%time%&, &%transpose%&, and &%unfinished%& apply only to the movement for which they are specified. &%Notespacing%& persists in one of its forms, but not the other. .index "&%notespacing%&" .code notespacing 33 30 24 18 14 12 10 10 .endd In this example, &%notespacing%& sets absolute note spacings at the start of a movement. Such spacings are reset as the defaults at the start of subsequent movements. .code notespacing *1.2 .endd In this example, &%notespacing%& is used to multiply the current note spacings by the given factor. Such a change does not persist into the next movement. Of the parameters whose values persist, most may be changed by header directives at the start of the new movement. .index "movement" "first " .index "directives" "first movement only" However, the following directives may appear at the start of the first movement only: &%b2pffont%&, &%drawbarlines%&, &%drawstavelines%&, &%eps%&, &%incPMWfont%&, &%landscape%&, &%magnification%&, &%maxvertjustify%&, &%midifornotesoff%&, &%musicfont%&, &%nokerning%&, &%nowidechars%&, &%page%&, &%pagelength%&, &%righttoleft%&, &%sheetdepth%&, &%sheetsize%&, &%sheetwidth%&, and &%textfont%&. .section "Input preprocessing" SECTpreprocess .index "directives" "preprocessing" .index "preprocessing directives" Each logical input line (possibly after concatenation of multiple physical lines using the &`&&&&&&`& facility) is &'preprocessed'& before being interpreted. Preprocessing allows the input to be modified in various ways, and is controlled by special preprocessing directives. These may occur at any point in an input file; in the header, in the middle of a stave's data, or between staves. A preprocessing directive must be at the start of a line, preceded by an asterisk (spaces before the asterisk are permitted). It takes up the rest of the line; it may not continue onto the next line. Very long preprocessing directives can be input on multiple physical lines by making use of the input concatenation feature (&R; &<>&). .subsection "*Comment" .index "&%*comment%&" This directive causes the remainder of the input line to be written to the PMW verification output (the standard error stream). It may be useful for outputting reminders to the user. .subsection "*Define" SECTdefine .index "macros" "definition" .index "macros" "name length" .index "strings" "macro-defined" .index "&%*define%&" The &%*define%& directive is used to define &'macros'&. A macro is a name for a string of characters, usually for something that is needed more than once. Using a macro ensures consistency, and a short name saves typing. The format of &%*define%& for a simple macro is: .display &`*define`& <&'name'&> <&'rest of line'&> .endd The rest of the input line, starting from the first non-space after the name, up to but not including the newline, is remembered and associated with &'name'&, which must consist of a sequence of letters and digits and be no longer than 256 characters. It may start with a letter or a digit, so names such as &`8va`& can be used, .index "macros" "form of names" and upper and lower case letters are considered different in macro names. The rest of the line may consist of no characters at all, in which case &'name'& is associated with an empty string. .index "comment on &%*define%&" If there is a comment character @ on the input line, outside double quote marks, it terminates the string that is being defined. That is, a comment is permitted on a &%*define%& directive, provided there are either no quotes, or only matched pairs of quotes, before the start of the comment. If you use macros to generate partial strings, with unmatched quotes in the defining lines, the use of the @ character should be avoided. .subsection "Macro calls" .index "&& (insert) character" When an input line is preprocessed, the character &`&&`& is used as a flag character to trigger the substitution of text wherever it appears (except when it follows the @ comment character). There are three cases: .ilist The sequence &`&&`&&'name'& in the input is replaced by the remembered text of the macro called &'name'&, which must have been previously defined. .next The sequence &`&&*`& followed by a number and a parenthesized argument is an input sequence repetition, details of which are given below (&R; &<>&). .next If a real ampersand character is required in the input, it must be entered as &`&&&&`&. .endlist Any other character following &`&&`& causes an error message to be output. The ampersand is then ignored. .index "semicolon" "after macro name" .index "; (semicolon)" "after macro name" To avoid ambiguity, a semicolon character can optionally be used to terminate the name in a simple macro substitution, for example, if the immediately following character is a letter or a digit. The semicolon is removed from the text when the substitution takes place. If an actual semicolon is required in the input following such a substitution, two semicolons must be entered. If an undefined name is encountered following &`&&`&, PMW issues an error message, and substitutes an empty string. It is possible to test whether or not a name has been defined (&R; &<>&). An example of the use of a simple macro is given in section &<>&. .subsection "Macros with arguments" SUBSECTmacarg .index "macros" "arguments" .index "arguments for macros" There are times when it is useful to be able to vary the text that is inserted by a macro. The word &'argument'& is used in mathematics and computer programming to describe values that are passed to functions and macros on each call, and that term is adopted here. The argument values for a macro call are passed in a pair of parentheses that immediately follow the macro name without intervening white space. A semicolon that follows the closing parenthesis is not treated specially and is interpreted as the next input item. The use of arguments is best explained by an example. Suppose a piece of music has many `hanging ties', that is, ties that extend to the right of a note but end in mid-air rather than on the next note. The input to achieve this for the note &`g'`& could be: .code [slur/rr15] g' [es] .endd To shorten this input, a macro with an argument can be defined as follows: .code *define hang() [slur/rr15] &&1 [es] .endd The parentheses after the macro name tell PMW that this macro has one or more arguments, and the characters &`&&&&1`& in the replacement text indicate the place where the first argument is to be inserted. This macro can be used for many different notes, for example: .code &hang(g') &hang(B++) &hang(e'-) .endd In each case, the text that forms the argument is substituted into the replacement text where &`&&&&1`& appears. The argument is supplied immediately after the macro name, enclosed in parentheses. &*Note*&: When a macro is defined without parentheses, as in the previous section, an opening parenthesis following the name in a macro call is not treated as introducing arguments. .index "macros" "maximum number of arguments" Up to 20 arguments may be used. The example macro above could be extended to make use of a second argument as follows: .code *define hang() [slur/rr15&&2] &&1 [es] .endd Now it is possible to use a second argument to specify that the tie is to be below the note, for example: .code &hang(g,/b) .endd .index "comma" "in macro argument" .index ", (comma)" "in macro argument" As this example shows, arguments are separated from each other by commas. All the characters between the parentheses and commas form part of the argument; if, for example, there is a space after the opening parenthesis or after a comma, it forms part of the next argument. Arguments may contain no characters; this is not an error. An argument can be inserted many times in the replacement text. .index "semicolon" "in macro argument" .index "; (semicolon)" "in macro argument" If the following character is a digit, the argument number must be followed by a semicolon as a terminator. This means that if the following character is a semicolon, two semicolons are required. There are also times when it is necessary to include commas and parentheses as part of an argument. The following rules make this possible: .ilist No special action is necessary if an argument contains matched parentheses. Within them, commas are not recognized as terminating an argument, and an internal closing parenthesis does not terminate the macro call. For example: .code &hang((fac')) .endd .next To include an unmatched opening or closing parenthesis or a comma that is not within nested parentheses, the character &`&&`& is used as an escape character. For example, if a note with a bracketted (parenthesized) accidental is used with the &`hang`& macro, the input is: .code &hang(#&)c') .endd Without the &`&&`& preceding it, the accidental's closing parenthesis would be interpreted as terminating the argument list. .next If an argument contains matched double quote characters, commas and parentheses (matched or unmatched) within the quotes are not treated specially. An unmatched double quote character can be included by escaping it with &`&&`&. .endlist In fact, the appearance of &`&&`& before a non-alphanumeric character anywhere in a macro argument always causes the next character to be taken literally, whatever it is. To include an &`&&`& character itself within the text of an argument, it must be specified as &`&&&&`&. Macro arguments may contain references to other macros, to any arbitrary depth. An &`&&`& followed by an alphanumeric character in an argument is interpreted as a nested macro reference. It is also possible to have macro substitutions in the definition of another macro. .index "macros" "argument defaults" If a macro that is defined with argument substitutions is called without arguments, or with an insufficient number, nothing is substituted for those that are not supplied, unless defaults have been provided as an argument list in the macro definition. Each default argument must be no longer than 256 characters (arguments in macro calls can be longer). If a macro is defined or called with more arguments than are referenced in its replacement string, the additional arguments, either explicit or defaulted, are ignored. Here is an example of the use of default arguments: .code *define hang(g',/a) [slur/rr15&&2] &&1 [es] .endd When the macro is called, empty and missing arguments are replaced by the defaults. .itable none 0 0 3 80 left 60 left 200 left .row &`&&hang()`& "behaves as" &`&&hang(g',/a)`& .row &`&&hang`& "behaves as" &`&&hang(g',/a)`& .row &`&&hang(B)`& "behaves as" &`&&hang(B,/a)`& .row &`&&hang(,/b)`& "behaves as" &`&&hang(g',/b)`& .endtable The rules for the default argument list are the same as for argument lists when calling macros, except that, if &`&&`& is required to escape a character, it must be written twice. This is necessary because macro definition lines are themselves subject to scanning for macro substitution before they are interpreted. For example: .code *define hang(#&&)g') [slur/rr15] &&1 [es] .endd It follows that, if an &`&&`& character is actually required in a default argument, &`&&&&&&&&`& must be entered. .subsection "Input repetition" SUBSECTstringrepetition .index "input repetition" .index "repetition" "of input string" A single bar may be repeated by starting it with a number in square brackets (&R; &<>&) and there is an input shortcut facility for repeating individual notes (&R; &<>&). There is also a way of repeating an arbitrary string of input characters during preprocessing. This is coded as an ampersand followed by an asterisk, a number, and then a single argument in parentheses, in the same format as a macro argument. This example generates the same sequence of bars three times in succession: .code &*3(abc|def|[2]R!|) .endd This example repeats a group of semiquavers four times, breaking the beam after each group: .code &*4(g=a=b=c'=;) .endd An error occurs if more than one argument is given. This construction may be nested and may contain ordinary macro calls. Like a macro call, the entire argument must be on a single logical input line; if it is very long, line concatenation (&R; &<>&) can be used to spread it over multiple lines in the input file. .subsection "*Include" SUBSECTinclude .index "&%*include%&" .index "included files" .index "files, including" This directive can be used to include one file within another. For example, the same standard header file could be used with a number of different pieces or movements that require the same style. The name of the included file is given in quotes: .code *include "std-setup" .endd If the name does not start with a slash, it is interpreted relative to the directory containing the current input file, unless the current input is the standard input, in which case a non-absolute path name is taken relative to the current directory. If a file whose name contains no slashes cannot be found, it is sought in the `standard macros' directory (&R; &<>&). Included files may be nested. That is, an included file may contain further &%*include%& directives. .subsection "Conditional preprocessing directives" SUBSECTconditional .index "conditional directives" .index "directives" "conditional" .index "&%*if%&" .index "&%*fi%&" .index "&%*else%&" The conditional preprocessing directives are &%*if%&, &%*else%&, and &%*fi%&. Their purpose is to arrange for certain sections of the input file to be included or omitted under certain circumstances. The &%*if%& directive is followed by a condition, which consists of a word, possibly followed by more data. It the condition is true, subsequent lines of the input, up to &%*else%& or &%*fi%&, are processed. If the condition is not true, these lines are skipped. When &%*else%& is used to terminate the block of lines after &%*if%&, the lines between it and a subsequent &%*fi%& are obeyed or skipped depending on whether the first block of lines was skipped or obeyed. An example will make this clearer: .code *if score magnification 0.9 *else magnification 1.2 *fi .endd Each &%*if%& must have a matching &%*fi%&, but there need not be an &%*else%& between them. It is permitted to nest conditional directives, that is, a complete sequence of &%*if%& → &%*fi%& may occur within another. This provides a way of testing that a number of conditions are all true. The word `or' can be used in a condition to test whether either one of two (or more) conditions is true: .code *if staves 1-3 or stave 7 *if violin or viola .endd If a condition is preceded by the word `not', the sense of the condition is negated: .code *if not score magnification 1.2 *fi .endd We now describe the various conditions that can be tested using &%*if%&. .ilist If the word that follows &%*if%& or &%*if not%& is `score', the condition is true only if no stave selection option is specified on the PMW command line, and the &%selectstave%& directive has not been used earlier in the file. .next If the word is `part', the condition is true if and only if a stave selection option is given on the command line, or via the &%selectstave%& directive earlier in the file. .next If the word is `stave' or `staff' or `staves', it must be followed by a list of staves. In this case, the condition is true if the listed staves, &'and no others'&, are selected. The intended use is for varying the headings of the piece when different combinations of staves are selected. .next If the word is `undef', it must be followed by a name, and the condition is true only if the given name has not yet been defined as a macro using the &%*define%& directive. .next If the word is `transpose' and no number follows, the condition is true if any transposition, including zero transposition, is in force. If a positive or negative number follows `transpose', the condition is true if that particular transposition is in force. .next If the word is `format', the condition is true if the &%-f%& command line option has been used to specify a named format, and false otherwise. .next .index "format option" If the word following &%*if%& is not one of the above, the condition is false, unless the &%-f%& command line option was used to specify the same word that follows &%*if%& or &%*if not%& as a format name. The comparison of the words is done in a case-independent manner. .endlist Here are some examples of the use of the conditional preprocessing directives: .code flow *if score @ full score reduced magnification 0.8 *else @ part(s) magnified magnification 1.1 systemgap 60 *fi *if stave 1 heading "Flute" *fi *if staves 2-3 heading "Violins" *fi *if undef topspace *define topspace 20 *fi *if transpose heading "|(Transposed version)" *fi *if large magnification 1.5 *fi .endd The last example would be triggered by including &*-f large*& on the PMW command line. Only one format word can be set at a time in this way. It must begin with a letter and consist of letters and digits only. .section "Identification and counting of bars" SECTident .index "bars" "identification of" .index "identification of bars" .index "numbering bars" PMW identifies bars in its messages using the same number as would be output as a bar number on the music. This applies both to error messages and to the bar numbers that are used to verify the layout of systems on the page. This makes it easy to associate messages with the actual bars of the music, but it requires some special notation for identifying bars containing the &%[nocount]%& directive. If the first bar of a stave contains a &%[nocount]%& directive (which is the most common use of &%[nocount]%&) it is identified as bar number zero, provided that the &%bar%& directive has not been used. If there is more than one such bar at the start of a stave, they are identified as `0', `0.1', `0.2', etc. Bars other than at the start of a stave that contain &%[nocount]%& directives are identified by the number of the previous counted bar, followed by `.1', `.2', etc. as needed. This also applies to uncounted bars at the start of a stave if &%[bar]%& has been used to set an initial bar number other than one. For example, the following input contains five bars that would be identified in messages as `0', `1', `2', `2.1', and `3': .code [stave 1 treble 1] [nocount] a | gggg | cd [nocheck] :) | [nocount nocheck] ef | gggg | .endd .index "bars" "count of" .index "bar counting" .index "counting bars" The number of bars in each stave is included as part of the information that appears as a result of specifying &%-v%& on the PMW command line (&R; &<>&). The count is given as the number of bars that do not contain &%[nocount]%&, followed by the number of bars that do contain &%[nocount]%&, if any, enclosed in parentheses and preceded by a plus sign. The count for the example above would be `3(+2)'. .section "Dimensions" .index "dimensions" .index "point, definition of" The unit of length used by PMW is the printer's &'point'&. As defined by the PostScript language this is equal to 1/72 of an inch (the true printer's point is slightly smaller). One millimetre is 2.835 points. Whenever a dimension is required in a PMW directive, its units are always points. .code linelength 720 .endd This example specifies a line length of 720 points, that is, 10 inches. PMW works internally in millipoints (thousandths of a point), and any dimension can be given with a decimal point and a fractional part, though any digits after the third decimal place are ignored. .code barlinespace 3.5 .endd This example specifies that the horizontal space after bar lines should be 3.5 points. .index "magnification" When the output is being magnified (or reduced), dimensions specified by the user refer to the unmagnified (or unreduced) units, with the exception of the line length, page length, sheet depth, and sheet width, which are always in absolute units. For example, if the line length is set to 480 points, it remains 480 points at a magnification of 1.5, but if the distance between staves is set to 50 points, the staves are actually positioned 75 points apart at this magnification. This means that a change of magnification does not require dimensions in the input to be changed. The following dimension information (in points) is given to help users who want to position items manually on the page: .itable none 0 0 2 190 left 20 right .row "distance between stave lines" "4" .row "width of noteheads" "6" .row "default text baseline level below stave" "10" .row "default text baseline level above stave" "4" .endtable .index "notes" "width of head" .index "width" "of notehead" .index "text" "baseline level" The solid vertical line of the bracket that is used to join the staves of a system together is 2 points wide. This is another useful reference when trying to make dimensional judgements. .section "Paper size" SECTpapersizes .index "paper size" .index "size" "of paper" .index "A3, A4, A5 paper size" .index "B5 paper size" .index "letter, paper size" .index "&%sheetwidth%&" .index "&%sheetdepth%&" .index "&%sheetsize%&" By default, PMW assumes that printing is to take place on A4 paper and so it creates a page image appropriate to that size. If a different paper size is required, the &%sheetwidth%& and &%sheetdepth%& directives can be used to specify what its dimensions are. For standard paper sizes, it is not normally necessary to use &%sheetwidth%& and &%sheetdepth%&, because the &%sheetsize%& directive, which takes as its argument one of the words `A3', `A4', `A5', `B5', or `letter', can be used instead. This has the effect of setting the sheet width and depth to the correct values for the given size. It also sets the page length and line length parameters to appropriate default values for the paper size, but these can be changed by subsequent appearances of the &%linelength%& or &%pagelength%& directives. &%Sheetsize%& should therefore be given at the top of the file before any use of &%linelength%& or &%pagelength%&, and also before any use of the &%landscape%& directive. All the &%sheet%&... directives may appear only in the first movement of a file. In the most common case, the page image size fits the size of paper being used, but PMW does also support &'two-up'& printing, in which two page images are put next to each other on a larger piece of paper, for certain paper sizes. Details of this are given in chapter &<>&. .section "MIDI output" SECTmidi .index "MIDI" "output" When MIDI output is requested by the &%-midi%& command line option, a number of directives whose names all start with `midi' are available for controlling the allocation of MIDI voices and channels to staves. The &%midichannel%& (&R; &<>&) header directive is used to specify the allocation of a MIDI voice and/or particular PMW staves to a MIDI channel, and the &%[midichannel]%& (&R; &<>&), &%[midivoice]%& (&R; &<>&), and &%[midipitch]%& (&R; &<>&) directives are used to change the setup in the middle of a piece. For percussion staves, where the playing pitch selects different instruments, the &%[printpitch]%& (&R; &<>&) directive can be used to force the visible notes to a single pitch. If the input file contains no MIDI-specific directives, all notes are played through MIDI channel 1. The voice allocation on the channel is not changed, so whatever MIDI voice is assigned to the channel is used. The `velocity' parameter for each note corresponds to the volume setting, since `velocity' controls the volume on many MIDI instruments. If relative volumes are set by means of the &%midivolume%& (&R; &<>&) or &%[midivolume]%& (&R; &<>&) directives, the overall volume is multiplied by the relative volume and then divided by 15 (the maximum relative volume). Thus, for example, if the overall volume is 64 and a stave has a relative volume of 10, its notes are played with a `velocity' of 42. Notes that are suppressed by the use of &%[notes off]%& are by default also omitted from MIDI output. The header directive &%midifornotesoff%& can be used to change this behaviour. .section "Headings and footings" .index "footing" "new movement" .index "heading" "new movement" There are three different sets of heading/footing directives: .ilist &%heading%& and &%footing%& specify text that appears once, on the first page of a piece or at the start of a new movement. .next &%pageheading%& and &%pagefooting%& specify text for the second and subsequent pages of a piece or movement. .next &%lastfooting%& specifies text for the final page of a piece or (by request) at the end of a movement. .endlist Page headings and footings persist from movement to movement, but new ones can be specified if required. New page headings and footings completely replace those of the previous movement, and are used at the first page break of the new movement. For all movements, if no &%footing%& is given, but there is a &%pagefooting%& (either given for the movement or carried on from the previous one), the page footing appears at the bottom of the first page as well as on all subsequent pages. One exception to the above is when a new movement continues on the same page as one or more previous movements. If a &%footing%& was specified for a previous movement but has not yet been used (in other words, this is still the first page of that movement) and the subsequent movements do not themselves have overriding &%footing%& directives, that footing appears on the page. If, for example, a copyright footing is defined at the start of the first movement, it will appear at the bottom of the first page, even if the second movement starts on that page, provided the second movement does not itself contain any &%footing%& directives. If the start of a new movement coincides with the top of a new page, the page heading is followed by the heading for the new movement. This means that, for example, if page numbers are specified in the first movement by a &%pageheading%& directive, they will appear by default on all subsequent pages. .index "movement" "suppressing page heading" Sometimes page headings need to be suppressed at the start of a new movement, for example if they are being used to show the name of the movement at the top of each page. This can be done by adding the keyword `nopageheading' to the &%[newmovement]%& directive: .code [newmovement nopageheading] .endd This option can be used with or without the `newpage' option; it takes effect only if the new movement actually starts at the top of a page, and it applies only to the one movement. When a new movement does start at the top of a page there is sometimes a requirement for a special footing on the last page of the preceding movement. This can be requested by the use of: .code [newmovement uselastfooting] .endd This causes PMW to use the &%lastfooting%& setting for this purpose and also applies to just the one movement. The value of &%lastfooting%& can be reset in the new movement if necessary. .section "Horizontal and vertical justification" .index "justification" .index "horizontal justification" .index "vertical justification" The word `justification' is used in a typesetting context to describe the way in which a line of text is arranged within its boundaries. `Left justified' means that the line begins hard up against the left-hand edge; `right justified' means it is hard up against the right-hand edge. If both left and right justification are required, the line must be stretched out so that it fits exactly between the boundaries. There is also a concept of `vertical justification', in which the lines of a page are spread out so that the page is exactly filled, instead of leaving blank space at the bottom. In typesetting music, similar considerations apply, with music systems taking the place of lines. Normally, systems are stretched to fill out the entire width required, but there are occasions when this is not required, or would look silly because the line is very short. Similarly, it is often necessary to spread systems vertically so that the bottom stave is at the same level on each page. PMW supports both horizontal and vertical justification. By default, both are enabled, but the &%justify%& and &%[justify]%& directives allow the user to control the justification of each page and each system if required. The &%topmargin%& and &%bottommargin%& directives offer some further flexibility in the page layout. .section "Key signatures" SECTkeysig .index "key signatures" "specifying" .index "accidentals" "in key signatures" Standard key signatures are specified by key letter, followed by a PMW accidental character if necessary, and then possibly the letter &`m`& to indicate a minor key. PMW uses the sharp character (&`#`&) to indicate a sharp, but because there is nothing resembling a flat on a computer keyboard, the key that is adjacent to sharp on some keyboards, the dollar sign (&`$`&), is used. All the standard key signatures are supported. .itable none 0 0 2 30 left 200 left .row &`a`& "means A major" .row &`c#m`& "means C sharp minor" .row &`B$`& "means B flat major" .row &`CM`& "means C minor" .endtable There is in addition a pseudo-key N, which behaves like C major except that it does not transpose. See the next section for a discussion of key signatures after transposition, and the &%printkey%& directive (&R; &<>&) for how to output key signatures in non-standard ways. PMW also supports up to 10 custom key signatures called &`X1`& to &`X10`& which are defined by the &%makekey%& directive (&R; &<>&). This can specify arbitrary accidentals, including half-accidentals and double accidentals, at any position on the stave. .section "Transposition" SECTtransposition .index "transposition" Octave transposition can be specified for each stave, to simplify the input notation. See the &%[octave]%& and the various clef directives (&%[treble]%&, &%[bass]%&, etc). In addition, general transposition can be specified for the whole piece or for individual staves. PMW can transpose up or down by any number of semitones less than 61 (5 octaves). A transposition for the whole piece can be specified externally, via the &%-t%& command line option, or within the input file by the &%transpose%& header directive. Transposition for individual staves is specified with &%[transpose]%&. If more than one transposition is present, the effect is cumulative. .index "transposition" "key signatures" .index "key signatures" "after transposition" PMW transposes key signatures as well as notes, but there is a special pseudo-key N that does not transpose. This is described below. Custom key signatures (&`X1`& to &`X10`&) can be transposed, but additional information, supplied by one or more &%keytranspose%& directives (&R; &<>&), must be supplied for this to work. A piece that is to be transposed should be input with its original key signature(s) specified in the usual way. When &%[transpose]%& is used to transpose a single stave, only those key signatures that follow the directive in the input are transposed. When transposing a non-custom key signature, the key F♯ major is used in transposed output only if specially requested via the &%transposedkey%& directive, G♭ being used by default. A number of other keys are also not used by default but can be specially requested. The complete list is as follows: .itable none 0 0 5 16 left 30 left 110 centre 18 left 50 left .row C♭ "major" "instead of the default" B "major" .row C♯ "major" """" D♭ "major" .row F♯ "major" """" G♭ "major" .row A♭ "minor" """" G♯ "minor" .row A♯ "minor" """" B♭ "minor" .row D♯ "minor" """" E♭ "minor" .endtable The &%transposedkey%& directive also has uses when transposing music in which the key signature has fewer accidentals than the tonality. .index "accidentals" "transposed" Except when using the pseudo-key N, if a note is specified with an accidental, an accidental will always be present by default after transposition, whether or not it is strictly necessary. This ensures that `cautionary accidentals' are preserved over transposition. There is an option to suppress this action for individual notes, and the &%[transposedacc]%& and &%transposedacc%& directives can be used to suppress it within a part or throughout a piece, respectively. .subsection "The non-transposing pseudo-key N" SUBSECTtransposeN .index "transposition" "non-transposing key" .index "key signatures" "non-transposing" .index "key N" There are some instruments (transposing brass for example) whose parts are often set with no key signatures. This can, of course, be typeset by specifying C major, but if such a part is transposed, it may acquire an unwanted key signature. To avoid this, PMW supports a pseudo-key N, which behaves like C major, except that it does not transpose. It can only be specified on its own, that is, not with a following accidental or &`m`&. When key N is in force, notes transpose as usual. The choice of accidental for the new note is influenced by what C major would require. However, there are some special rules that apply only to this kind of transposition. .ilist If the new note's accidental is redundant, discard it, except in one specific circumstance: when a note that is notated with a natural is the first non-tied note in the bar. The reasoning behind this is that the original natural must be `cautionary'. Apart from this special case, the behaviour is as if &%[transposedacc noforce]%& has been applied. However, an accidental can be forced for individual notes by following the original accidental with &`^+`&, for example &`#^+a`&. .next Do not use double sharps or double flats unless the original note had a double sharp or double flat, respectively. .next Convert new notes E♯ and B♯ into F and C, respectively. .next Convert new notes C♭ and F♭ into B and E respectively. .endlist .subsection "Transposition of key and chord names" .index "transposition" "chord names" .index "transposition" "key names" PMW can automatically transpose the names of standard keys and chords in text strings. This is achieved by means of a special escape sequence &`\t`&. .code "Sonata in \tE$" .endd In this example, the sequence &`\tE$`& is replaced by E♭ when no transposition is taking place and by F when a transposition of +2 is set. Full details of string escape sequences, including key and chord name transpostion, are given in section &<>&. .section "Time signatures" SECTtimesig .index "time signatures" "specifying" Time signatures are specified by separating two numbers with a slash. For example, 3/4 specifies waltz time. PMW imposes no limitations on the values of the numbers used in time signatures. There are two special time signatures that are specified as letters: .ilist .index "common time" The letter &`C`& specifies `common time' &-- equivalent to 4/4 but output using the conventional character &{{^}}&. .next .index "alla breve" The letter &`A`& specifies `alla breve' &-- equivalent to 2/2 but output using the conventional `cut time' character &{{_}}&. .endlist A time signature can be preceded by a number and an asterisk. This has the effect of multiplying the number of notes in the bar for the purposes of checking bar lengths. However, the time signature is output as given. Thus, for example, the time signature &`2*C`& is shown as &{{^}}&, but expects there to be four minims rather than four crotchets in a bar, and &`2*3/4`& is shown as 3/4 but expects three minims in a bar. There are options for suppressing time signatures at various places, and the &%printtime%& directive can be used to specify exactly how certain time signatures are to be shown. For example, 8/8 could appear as 3+3+2/8, or only a single, large number could be used. By default, numerical time signatures use the bold font. However, the &%timefont%& header directive can specify an alternative. In addition, if &%printtime%& is used, the normal font-changing escape sequences can be used in the strings. PMW can handle music where different staves have different time signatures. For compatible cases such as 3/4 &'vs'& 6/8 no special action is necessary. For other cases (for example, 2/4 &'vs'& 6/8) the &%[time]%& stave directive has to be used to specify the conversion. .section "Incipits" SECTincipit .index "incipits" The word &'incipit'& is the name given to stave notation that appears before the first bar of a piece, as commonly seen in scholarly editions. This notation is often used to show the original clef and other information about the piece. Here is a typical example: .music "music18" 64 8,-20 This example was produced by using the &%startbracketbar%& directive to `indent' the joining bracket by one bar. It also uses the masquerade facility (&R; &<>&) to output a semibreve in the place of a minim, an invisible rest &`q`& (&R; &<>&) and an invisible bar line &`|?`& (&R; &<>&) to generate extensions to the stave lines, and &%[nocheck]%& to disable bar length checks where necessary. The input is as follows: .code startbracketbar 1 unfinished [stave 1 soprano 1 key F time C nocheck] A | [treble 1 key a$ time c] Rc'd' | [nocheck] q |? [endstave] [stave 2 tenor 1 key F time C nocheck] C\M+\ | [treble 1 key a$ time c] Ead' | [nocheck] q |? [endstave] .endd If an incipit is required on one stave only, for example, for a single voice introduction at the start of a liturgical item, the other staves can be completely suppressed by making use of the &%omitempty%& option of the &%[stave]%& directive. For example, changing the second stave above: .code [stave 2 omitempty] | @ An empty bar [treble 1 key a$ time c] Ead' | [nocheck] q |? [endstave] .endd .music "music61" 64 8,-20 Another style of incipit leaves blank space between the incipit stave and the start of the piece proper. With a little bit of trickery, PMW can cope with this as well. The incipit and the rest of the piece must be input as separate `movements', separated by &%[newmovement thisline]%&. The incipit movement must be specified as left justified, and the start of the next movement as right justified, switching to left and right justification on the second system. If necessary, &%[newline]%& can be used to control the number of bars in the first system. .section "Text fonts" SECTtextfonts .index "text" "fonts" .index "fonts" "names of" .index "naming fonts" .index "font names" PMW supports the use of a number of different fonts, or typefaces, for use in text strings. As well as the standard four (roman, italic, bold face, and bold italic), the use of a symbol font and of the music font is supported. In addition, up to twelve other fonts can be defined by the user. The different kinds of text (for example, underlay or bar numbers) each have a default font, and there are directives to change these. The &%textfont%& header directive (&R; &<>&) is used to define exactly which fonts correspond to these names: .itable none 0 0 2 90 left 200 left .row "&`roman`&" "the roman font" .row "&`italic`&" "the &'italic'& font" .row "&`bold`&" "the &*bold face*& font" .row "&`bolditalic`&" "the &*&'bold italic'&*& font" .row "&`symbol`&" "the symbol font" .row "&`extra`& <&'n'&>" "the <&'n'&>th extra font" .endtable The music font can be changed by &%musicfont%&, but this is likely to be of use only to PMW maintainers. By default, the &'Times'& series of fonts are used for text, and the &'Symbol'& font for symbols. .index "fonts" "metrics" PMW needs access to the `fontmetrics' (&`.afm`&) file of every text font that it uses, and fontmetrics files for the standardly available PostScript fonts are supplied with PMW. If you want to use other fonts, you will need to obtain the appropriate fontmetrics files and install them in PMW's &%fontmetrics%& directory, or use the &*-F*& command line option to specify one or more additional directories where they may be found. You may also want to supply Unicode translation files (&R; &<>&). These can alter a font's encoding and define translations from Unicode code points to code points within the font. The encoding defines which of a font's characters are accessible via numerical code points. PMW supports up to 512 characters per font. If the font you want to use does not have a fontmetrics file, you can create one in various ways. For example, there is a utility called &'ttf2afm'& that generates AFM files for TrueType fonts. The &'FontForge'& open source font editor can create AFM files for any font that it can load. Some fonts contain thousands of characters, resulting in large AFM files. These are readable text files, and you can reduce the amount of work PMW has to do by cutting out any unwanted characters. .section "Font sizes, aspect ratios, and shearing" SECTfontsize .index "fonts" "sizes" .index "aspect ratio of fonts" .index "fonts" "aspect ratio" .index "sheared fonts" .index "fonts" "shearing" Many PMW directives allow you to specify a size for a font. For example, when defining a heading: .code heading 15 "|Sonatina" 30 .endd The first number (15) specifies a 15-point font. .index "text" "aspect ratio" .index "text" "sizes" .index "text" "shearing" There are further parameters to control the size and shape of any text font. These are coded as two additional numbers, separated from the main size value by slashes: .code heading 15/1.3/10 "|Sonatina" 30 .endd The first additional number is a horizontal stretching factor that alters the aspect ratio of the font. If it is greater than one, the resulting font appears short and fat; if it is less than one, the appearance is tall and thin. Stretching a font horizontally makes it look larger without using up any more vertical space. .music "music30" 38 The second additional number is a shearing angle, measured in degrees. It specifies the angle between the true vertical and what were originally vertical lines in the font. A positive shear angle causes the font to slope to the right, and a negative one makes it slope to the left. Sheared roman fonts are sometimes used instead of italic fonts: .code heading 14/1/20 "Slanted text" .endd In this example, the heading font has a 20° shear. .music "music31" 12 0,-2 Stretching and shearing values can be specified in all the places where a text font size can be specified. .section "Text strings" SECTtextstrings .index "strings" .index "text" "strings" Text strings (often just called `strings') are used in a number of different places in PMW to define text that appears on the page with the music. They must always be enclosed in double-quote characters. There is no limit to the length of a string. .index "special characters in strings" .index "strings" "special characters" Three characters are treated specially in all strings: .ilist The single quote character &`'`& and the grave accent character &```& are converted into typographic closing and opening quote characters, respectively, in fonts whose fontmetrics file specifies the Adobe standard encoding. This is the case for all the default fonts except the music and symbol fonts. A closing quote character is the same as an apostrophe. .next The backslash character &`\`& is an &'escape character'&. Amongst other things, it can be used to include specially treated characters, including itself, as literals in a string (&R; &<>&). .endlist There are also some characters that are treated specially only in some specific types of string: .ilist In vocal underlay or overlay strings, &`#`& (sharp), &`-`& (hyphen), &`=`& (equals), and &`^`& (circumflex) are treated specially (&R; &<>&). .next .index "vertical bar in strings" .index "strings" "vertical bar" .index "| (vertical bar) in strings" In headings and footings, the vertical bar &`|`& serves to separate the left-hand, middle and right-hand parts of the text. In text that appears at the start of a stave, it serves to delimit individual lines. .endlist A backslash can be used to remove the special meaning from any of these characters. In chapter &<>& there is a list of the characters in fonts that use the Adobe standard encoding. These characters are accessible using UTF-8 or escape sequences in text strings. There are, of course, many other characters that are defined in Unicode, but which are not present in these fonts. Some of them (for example, Greek letters) exist in the &'Symbol'& font. For fonts that do not use the Adobe standard encoding, you can use Unicode code points only if a file that translates from Unicode to the font's own encoding is available (&R; &<>&). If not, you are restricted to the font's 256 code points. .subsection "Unicode and UTF-8 encoding" SUBSECTuniutf .index "Unicode" .index "UTF-8 encoding" .index "ISO-8859-1" .index "character codes" "discussion of" .index "strings" "encoding" This section is rather technical. Unless you need to know some of the deep details of character handling or font encodings, you can ignore it and the following two sections, and skip to section &<>& (&'Escaped characters'&) below. Basic fonts in PostScript can display up to 256 characters, many more than are available on a computer's keyboard. The original computer character set, often referred to as ASCII, comprises 95 characters (including space), whose code values lie between 32 and 126, inclusive. These are the characters you can type on the keyboard. Codes less than 32, together with code 127, are used for control functions such as `newline' and `delete'. Codes greater than 127 are not defined in the ASCII character set. When people needed more than 95 characters, a number of different codes were defined, including several called ISO-8859-&'n'& (for different values of &'n'&). These all kept the same meanings for codes 0&--127, but added different sets of characters for the values 128&--255. The most widely used of these codes is ISO-8859-1 (`Latin1'), which contains many of the accented characters used in Western European languages. The problem with using many different character codes is that it is hard to switch between them. Even for music, where there is not much text, the name of the composer may be in one language, requiring a certain set of accents, and the rest of the text may be in another, requiring different accents. The long-term solution to this problem is Unicode, which is a single encoding for all the world's characters. Unicode character values are no longer constrained to lie in the range 0&--255, thus enabling the character sets from many languages to be simultaneously defined. However, this means that no longer can every character fit into one byte of memory. The Unicode encoding copies ISO-8859-1 for the first 256 characters. Furthermore, there is a way of encoding these characters called UTF-8 which keeps the byte values 0&--127 as the encoding for those character values. For character codes greater than 127, a multibyte encoding is defined. If a file consists of bytes containing only the original 127 ASCII values, it is a valid UTF-8 encoded Unicode file. From version 4.10 onwards, PMW treats the bytes that make up quoted strings as UTF-8 encoded Unicode character sequences. For example, the following byte sequence (where each byte is expressed in hexadecimal) encodes two characters: .code 41 C2 A6 .endd The first byte, with a decimal value of 65, is less than 128, and is therefore an entire character on its own. The remaining two bytes together encode the value 166. If you have a text editor that can create files using UTF-8 encoding for Unicode characters, you can use these characters directly in PMW strings. If not, you can refer to characters whose values are greater than 127 using escape sequences, as described in section &<>& below. &*Historical Note:*& Before release 4.10, PMW interpreted each byte in a text string as a single character, with a value in the range 0&--255. Values less than 128 were interpreted as ASCII, and values in the range 160&--255 were taken from ISO-8859-1. Some of the values in the range 128&--159 were subverted for additional characters such as en-dash and em-dash that are not defined in ISO-8859-1. In addition, access to non-ASCII characters was available via escape sequences so that a PMW input file could contain only ASCII bytes and still use all the ISO-8859-1 characters, though in practice input files in ISO-8859-1 code were used. .subsection "Font encoding and Unicode translation files" SUBSECTunitrans .index "Unicode" "translation files" .index "&`.utr`& file extension .index "fonts" "encoding" .index "fonts" "Unicode translation" .index "fonts" "metrics" In PostScript code, a font may contain any number of characters, identified by name, but only 256 are accessible by code point. The mapping between code points and character names is the font's &'encoding'&. Each font has a default encoding for up to 256 characters, but this can be changed. PMW actually sets up two PostScript fonts for each text font, so as to make 512 code points available for each PMW font. From the user's point of view, each text font can handle characters whose code points are in the range 0&--511. Fonts whose fontmetrics files specify Adobe standard encoding contain a known set of around 350 characters (they may contain others as well). For such fonts PMW sets up an encoding that makes all these standard characters accessible via Unicode code points (&R; &<>&). The first 384 code points (0&--383) in the PMW &'virtual font'& are directly encoded to match Unicode. The remaining 44 standard characters have Unicode code points that are greater than 511 (U+01FF). PMW handles these by encoding them starting at code point 384 and arranging an automatic translation from their high-valued Unicode code points. The remaining code points in the virtual font are undefined. Fonts whose fontmetrics files do not specify Adobe standard encoding contain an unknown set of characters. Without additional data the only characters that are accessible are those in the font's default encoding, using code points in the range 0&--255. Code points in the range 256&--511 are duplicates of the lower range. &'Unicode translation files'& can be used to modify the encoding arrangements just described, and can also be used to set up custom character translations. When PMW loads a font, it looks for an optional &`.utr`& file in the same directories that are searched for fontmetrics (&`.afm`&) files (see the &*-F*& command line option). A &`.utr`& file can do three things, and its format is very simple: .ilist In each line, leading white space is ignored. .next Empty lines and lines that start with &`#`& are ignored. .next A line that begins with a slash defines an encoding value that modifies the default encoding. The format is: .display /<&'character name'&> <&'code point'&> <&'optional comment'&> .endd The code point can be specified in decimal, hexadecimal preceded by &`0x`&, or octal starting with &`0`&. It must be in the range 0&--511. These examples come from an Arabic font: .code /uni0627 65 ALEF /uni0622 336 ALEF with MADDA ABOVE .endd In this font, character names are based on Unicode code points. U+0627 is the ALEF character; here it is being encoded as character 65, with an accented version as character 336. Code points that are not mentioned in the &`.utr`& file are unchanged. .next A line that starts with a question mark specifies the Unicode character to substitute when an unsupported Unicode code point is encountered. The rest of the line is an optional comment. For example: .code ? 35 Use code 35 for unknowns .endd .next Other lines specify a translation from a Unicode code point to a code point within the font. They must start with a space-terminated hexadecimal number, optionally preceded by &`U+`& or &`0x`&, followed by the corresponding font code point, for example: .code 0627 65 ALEF fe8d 65 ALEF ISOLATED FORM 0622 336 ALEF with MADDA ABOVE .endd As this example shows, more than one Unicode code point can be mapped to the same font code point. .endlist If a Unicode code point greater than U+01FF is encountered that is neither handled by the standard encoding mechanism described above nor handled by a translation file, it is replaced by the font's `unknown character' code, and a warning is issued. Unicode translation files with the extension &`.utr`& are provided for the &'Symbol'& font and also for the PMW-Music font, though only a small number of characters in the latter correspond to Unicode code points. .subsection "Backwards compatibility for character strings" SUBSECTbackcompat .index "ISO-8859-1" .index "character codes" "backwards compatibility" Some byte values are invalid in UTF-8 strings. In particular, a single byte with a value greater than 127 that is between two bytes whose values are less than 128 cannot occur. When PMW encounters such a byte in a string, it interprets it as a single-byte encoding of a character in the range 128&--255. This is done for backwards compatibility so that input files for PMW releases prior to 4.10 that made use of the ISO-8859-1 encoding directly can still be processed. From release 5.00 a warning is issued if any such character is encountered. The output is likely to be correct in most cases; only when there are several high-valued bytes in a row, and they happen to form a valid UTF-8 character, will things go wrong. .subsection "Escaped characters" SUBSECTescaped .index "escaped characters" .index "backslash" .index "\ (escape) character" .index "strings" "escaped characters" .index "strings" "accented characters" .index "accented characters in strings" .index "strings" "special characters" .index "special characters in strings" From PMW release 4.10 onwards you can use UTF-8 encoding to directly represent Unicode character values in text strings. However, it is also possible to use just the set of ASCII characters in PMW input files, without loss of functionality. The backslash character is used as a means of including characters that are not on the computer keyboard, for specifying changes of font, and for some other special effects. For example, the following sequences are available to represent some of the commonly accented characters in European languages: .itable none 0 0 2 40 left 300 left .row &`\a'`& "codes for  á" .row &`\a``& "codes for  à" .row &`\a^`& "codes for  â" .row &`\a.`& "codes for  ä" .endtable Many other accented characters are available, and there are other escape sequences for other special characters: .itable none 0 0 3 40 left 68 left 300 left .row &`\c)`& "codes for  ©" .row &`\c]`& "codes for  ©" "(but see below)" .row &`\ss`& "codes for  ß" .row &`\?`& "codes for  ¿" .row &`\\`& "codes for  \" .row &`\"`& "codes for  "" "(because &`"`& on its own terminates the string)" .row &`\'`& "codes for  '" "(because &`'`& on its own codes for ' )" .row &`\``& "codes for  `" "(because &```& on its own codes for ` )" .row &`\<<`& "codes for  “" .row &`\>>`& "codes for  ”" .row &`\--`& "codes for  &--" .row &`\---`& "codes for  —" .endtable .index "copyright symbol" The normal way to include a copyright symbol in a string is to use &`\c)`& because this obtains it from the current font. However, some older PostScript printers do not have a copyright symbol in every font. The alternative escape sequence &`\c]`& is provided to use the copyright symbol from the PostScript &'Symbol'& font. A complete list of all the available special characters and their escape sequences is given in chapter &<>&. Other escape sequences are summarized in chapter &<>&. Characters that are not on the keyboard can also be included in strings by giving the character number, in hexadecimal preceded by &`x`& or in decimal, enclosed between two backslashes. For example, &`\xb7\`& or &`\183\`& is a bullet character. The interpretation of string escape sequences happens when a string is first read. This means that characters that are interpreted in underlay text and elsewhere are always recognized as special, however they are coded. For example, if a vertical bar in a heading is entered as &`\124\`& it is still recognized as a left/centre/right separator. If you need one of these characters to appear without interpretation, you can escape it with a backslash. For example, &`\|`& encodes a literal vertical bar. &*Note:*& This is a change from the way strings were handled in releases prior to 5.00. In earlier releases escapes were processed later, after checking for special characters. .index "Symbol font" .index "fonts" "Symbol" Characters from the PostScript &'Symbol'& font are available for use in text strings. This font contains some large brackets that are sometimes useful, as well as a number of other special characters that are not present in the ordinary text fonts. Since release 4.35, Unicode encoding can be used for this font because a translation file from Unicode code points to the font's own code points is now provided. Code points less that 256 that are not in the translation file are output unchanged. To include a single character from the Symbol font without affecting the font of subsequent characters, specify its hexadecimal character number preceded by &`sx`&, or its decimal character number preceded by &`s`&, enclosed in backslashes. For example, &`\s174\`& is .index "right arrow symbol" the → right arrow symbol. This could also be given as &`\sx2192\`&, which is the Unicode code point. .subsection "Page numbers" .index "page numbers" .index "numbering pages" There are some escape sequences that are different to the others in that they do not generate a particular fixed character: .itable none 0 0 2 50 left 300 left .row &`\p\`& "inserts the current page number" .row &`\po\`& "inserts the current page number if it is odd" .row &`\pe\`& "inserts the current page number if it is even" .endtable If the page number is even, &`\po\`& inserts nothing, and if it is odd, &`\pe\`& inserts nothing. These are made available for use in heading and footing lines, to enable page numbers to be placed on the right or left as appropriate. There is an additional facility for skipping parts of the string depending on the value of the page number. Any characters between two occurrences of the substring &`\so\`& are skipped if the page number is odd, and similarly for &`\se\`& if the page number is even. This makes it possible to specify page headings of this form: .code pageheading "\so\page \p\\so\||\se\page \p\\se\" .endd This example outputs `page &'n'&' on the left or right of the page, depending on the value of the page number. The effect of &`\so\`& followed by &`\se\`& or &'vice versa'& is undefined. .subsection "Numbering repeated bars" .index "numbering repeated bars" .index "repeated bars" "numbering" There is a facility for requesting the same bar to be repeated multiple times. In text strings in such bars, the escape sequence &`\r\`& is replaced by the repetition number. For more details, see section &<>&. .subsection "Transposing key and chord names" SUBSECTtranchordnames .index "transposition" "chord names" .index "transposition" "key names" A special escape sequence is provided to define the names of keys or chords that should be changed by transposition. This makes it straightforward to transpose pieces that show chord names above a line of music or include a key name in the title. The feature applies only to the names of standard keys; there is no support for custom keys or half accidentals. The escape sequence is &`\t`&, and it must be followed by one of the letters A&--G, in upper case. This may optionally be followed by one of the accidental characters &`#`&, &`$`&, or &`%`&. Such a sequence has two effects; firstly, the key or chord name is transposed in the same way as its base note would be transposed, and secondly, if the new name involves a sharp or a flat, the correct sign is used, with appropriate spacing adjustment. Thus, even without transposition, this notation is a convenient way of specifying key or chord names that involve accidentals. Natural signs are never used on transposed names. The rules for transposing notes can yield a new note with a double sharp or a double flat. When this happens for a key or chord name, the enharmonic name is substituted. For example, G is used for F double-sharp. When a string that involves a transposable name appears in a heading or footing line, only external transposition specified by the &%-t%& command line option plus any &%transpose%& header directives that are earlier in file are applied to it, because the transposition is performed when the string is read. It is also important to specify the key signature before the transposable heading or footing, in case it affects the result. For example, consider this directive: .code heading "Sonata in \tC minor" .endd If no key is specified before this line in an input file, and a transposition of +1 is applied, the result is `Sonata in D♭ minor', because PMW assumes the key of C major. However, if the key is set to C minor before the heading line, the result of transposing by +1 is `Sonata in C♯ minor'. .subsection "The transposition setting" .index "transposition" "inserting value" Another use for the &`\t`& escape sequence is to insert the transposition value into a string. In this case, &`\t`& must be followed by a backslash. For example: .code heading "(Transposed by \t\ semitones)" .endd The insertion happens when the string is read. .subsection "Font changes" SUBSECTfontchanges .index "font changes" .index "text" "font changes" Roman, italic, bold and bold italic fonts are available for all text. By default, these use the &'Times'& series of fonts but can be changed by the &%textfont%& header directive. In addition, the user may define up to twelve additional fonts via &%textfont%&. If any of these is used without being defined, the roman font is substituted. The initial font setting at the start of each character string is roman for all text that is not part of any stave's data. Within a stave, the default depends on whether the text is underlay, overlay, figured bass, or other text. .index "figured bass" "default font" .index "underlay" "default font" .index "fonts" "default at string start" For underlay, overlay, and figured bass the default is roman, but for other text it is italic, which is appropriate for dynamic marks such as &'crescendo'&. The default fonts for each type of text can be changed on a per-stave basis (see the &%[underlayfont]%&, &%[overlayfont]%&, &%[fbfont]%&, and &%[textfont]%& stave directives). Within a text string, the following special character sequences are used to change font: .itable none 0 0 2 50 left 300 left .row &`\rm\`& "change to roman" .row &`\it\`& "change to &'italic'&" .row &`\bf\`& "change to &*bold face*&" .row &`\bi\`& "change to &*&'bold italic'&*&" .row &`\sc\`& "change to &!SMALL CAPS!&" .row &`\sy\`& "change to the symbol font" .row &`\mf\`& "change to the music font at full size" .row &`\mu\`& "change to the music font at 0.9 size" .row &`\xx1\`& "change to the first extra font" .row … .row &`\xx12\`& "change to the twelfth extra font" .endtable For example: .code "\rm\this is roman \it\this is italic \bf\this is bold" .endd Note that the letters in the escape sequences are always in lower case. A change of typeface does not persist beyond the end of the text string in which it appears. A quick way of accessing a smaller music font is provided because, when mixed with normal text, music characters at full size are too large. .index "small caps" Changing to &!SMALL CAPS!& does not change the typeface, nor does it force subsequent letters to be capitals; it just changes to a smaller font of the same typeface as the current font. The effect lasts until the next font change. The relative size of small caps can be set by the &%smallcapsize%& header directive, whose argument should be a number between 0 and 1. The default value is 0.7, because this makes small caps whose height is equal to the x-height of the normal font in the &'Times'& series of fonts, and this is the usual typographic convention. If applied to the music font, &`\sc\`& has the same effect as using &`\mu\`&. .subsection "Comments within strings" .index "comments in strings" .index "string comments" There is a facility for in-string comments. Any characters between the string &`\@`& and the next backslash are ignored. This can be useful when an entire piece's underlay is being input as a single, very long string. However, if such a comment in an underlay string is surrounded by spaces, it acts as an empty syllable. .subsection "Sizes of text strings" .index "size" "of text" .index "text" "sizes" .index "fonts" "sizes" .index "size" "of fonts" The header directives that specify page headings and footings allow arbitrary font sizes to be given for those texts. Text within a stave uses 10-point fonts by default, but there are various ways of changing this. The &%textsizes%& header directive defines up to 20 settable text sizes, which can be accessed by any text string within a stave by means of the &`/s`& option. The default for all these sizes is 10 points. Whenever the size of a text font is specified, an associated aspect ratio and/or shearing angle may also be specified (&R; &<>&). In addition there are 10 fixed sizes that are accessed by &`/S`& (&R; &<>&). .index "figured bass" "default size" .index "underlay" "default size" .index "fonts" "default sizes" Underlay, overlay, and figured bass have their own separate default sizes, which are set up by header directives. All other text defaults to a settable size that can specified by the &%[textsize]%& directive, with the ultimate default being settable size 1. Stave text strings that are not underlay or overlay can be rotated so that they appear at an angle. Text at the start of a stave can be rotated so as to run vertically instead of horizontally &-- see the description of &%[stave]%& in section &<>&. More detail about text items in stave data is given below (&R; &<>&). .subsection "Music characters" SUBSECTmusicchars .index "music characters in text" .index "notes" "in text strings" .index "strings" "including notes" An escape mechanism can be used to include single music `characters' in textual output without having to change to the music font and back again. Typical uses of this are for indicating tempo by outputting a note followed by an equals sign and its metronome mark, or for including sharps and flats in the names of instruments. To include a note from the music font, the following special sequences can be used: .index "fonts" "music in text" .itable none 0 0 2 50 left 300 left .row &`\*b\`& "inserts a breve" .row &`\*s\`& "inserts a semibreve" .row &`\*m\`& "inserts a minim" .row &`\*c\`& "inserts a crotchet" .row &`\*Q\`& "inserts a quaver" .row &`\*q\`& "inserts a semiquaver" .endtable .index "\* escape sequence" Any of the above can include a dot after the note letter to request the dotted form of the note, for example, &`\*c.\`&. The accidental characters are available as follows: .index "accidentals" "in text strings" .itable none 0 0 2 50 left 300 left .row &`\*#\`& "inserts a sharp" .row &`\*$\`& "inserts a flat" .row &`\*%\`& "inserts a natural" .endtable A typical example of a tempo mark that uses this facility might be: .code "\bf\Maestoso \*c\ = 60" @ 60 crotchets per minute .endd This is output as: .display &*Maestoso *&&{5}&&* = 60*& .endd Music characters included in character strings with a single asterisk in this way use a music font that is 9/10 the nominal size of the surrounding text characters. This is an appropriate size for items such as tempo marks. Thus, if a 10-point text font is being used, a 9-point music font is used with it. The music font that is used for the music being typeset is a 10-point font, and it is sometimes useful to be able to access music characters at full size. If two asterisks are present in an escape sequence for a music character, .index "\** escape sequence" the character is taken from a music font that is the same size as the text font. Since the default text fonts are the same size as the standard music font, this gives music characters at the same size as those being used for music on the stave. If more than one escape sequence starting with an asterisk is required in succession, they can all appear between a single pair of backslashes, for example, &`\*#*c\`&. However, you cannot mix single and double asterisks between the same pair of backslashes. .index "non-printing music characters" There are a number of `characters' in the music font that do not actually cause any output. Instead they just move the current position, thus affecting the placing of any subsequent characters. The following sequences (which may also be used with two asterisks) access some of these special characters: .itable none 0 0 2 50 left 300 left .row &`\*u\`& "moves up by 0.2 times the font's size" .row &`\*d\`& "moves down by 0.2 times the font's size" .row &`\*l\`& "moves left by 0.33 times the font's size" .row &`\*r\`& "moves right by 0.55 times the font's size" .row &`\*<\`& "moves left by 0.1 times the font's size" .row &`\*>\`& "moves right by 0.1 times the font's size" .endtable .index "strings" "use of music font" In addition to those characters that are available via the escape sequences just described, it is also possible to access any character from the music font by specifying its hexadecimal character number preceded by &`x`& or just its decimal number, preceded by one or two asterisks, between backslashes. A list of the available characters is given in chapter &<>&. For example, the sequence &`\*45\`& outputs a crotchet rest. This could also be specified as the Unicode code point &`\*x1d13d\`&. If you want to include a long sequence of characters from the music font in a string, it is sometimes more convenient to use a font-changing escape sequence, as described in the previous section, rather than individually escape each character. .subsection "Guitar chord grids" SUBSECTguitargrids .index "guitar chord grids" Guitar chord grids can be notated relatively straightforwardly as a string of characters in the music font. The grid character itself (character 131) has zero typographic width. If a guitar dot character (116, or `t') follows, it is placed on the fourth fret mark of the first guitar string. The typographic width of this character is set so that after it is output, the current point is moved to the next guitar string. Two of the special characters for moving up and down (119 and 120, that is, `w' and `x') can be used to move between frets, and the right moving character 125 (`}') can be used to move to the next string if you do not want to output any symbol on a string. The guitar ring (open string) and cross (silent string) characters (117, or `u', and 183) behave exactly as the dot. To output them above the first fret you need to move up one and a half times the normal fret distance. This can be achieved by making use of two other special moving characters, `|' and `~' (124 and 126), which move down and up half a fret distance, respectively. .music "music70" 16 10,0 The sequence &`\mu\`& switches into the music font, and \131\ is character 131, the grid. The sequence &`xxxx~`& moves the current point up by four and a half frets, which takes it to above the grid, where character \183\, the `x', is output. The sequence &`|www`& moves down by three and a half frets so that &`t`& puts a dot on the third fret of the second guitar string. And so on... If you want to add the names of the chords, you can give them as additional text strings that can be separately positioned. Section &<>& discusses text strings in stave data. If you are going to use a lot of guitar chords, it is most convenient to define macros for the text strings. .subsection "Kerning" SUBSECTkerning .index "text" "kerning" .index "kerning" &'Kerning'& is the word used to describe the practice of moving certain pairs of letters closer together or (more rarely) further apart, in order to improve the appearance of text. Compare, for example, `Yorkshire' (kerned) with `Y&B;orkshire' (unkerned). .index "fonts" "metrics" PMW makes use of the kerning information in fontmetrics files automatically. This action can be disabled by including the directive &%nokerning%& in the header of the first movement. If you just want to prevent kerning between a particular pair of characters, you must insert something between them that has no noticeable effect, for example, a position movement and its opposite. .code "\rm\Y\*u*d\orkshire" .endd In this example is the o is not moved nearer to the Y. .section "Stave 0" SECTstave0 .index "stave zero" The normal staves of a piece are numbered from 1 to 63. In addition, data for a special stave, numbered 0, can be supplied. This stave is by default overprinted on the topmost stave of each system; the &%-s%& stave selection option on the command line does not affect it. No stave lines, clefs, key signatures or time signatures are output for stave 0, and any notes that are specified are treated as `invisible'. However, text items are shown. If the only stave in a movement is stave 0, the only output is the text items. The intended use of stave 0 is for setting up text items such as tempo marks that appear above the topmost stave, whatever combination of staves is selected. This saves having to input the text items with each part. Dummy notes can be supplied to ensure that the text items are horizontally aligned where they are required. A typical example might be as follows (&`/ts`& aligns the text with the time signature): .code [stave 0 text above] "\bf\Allegro"/ts Q+ | [15]Q! | Q "rit." Q | [23]Q! | "with feeling" Q+ | [endstave] .endd Overprinting stave zero on the top stave of each system is the default action, but you can use the &%copyzero%& header directive to have copies of stave zero duplicated over any number of staves. This directive is followed by a list of stave numbers, each of which may be optionally followed by a slash and a dimension. The dimension is a vertical adjustment to the level of stave zero for the given stave. .code copyzero 1 7/10 11/-2 .endd All the staves over which stave zero is to appear must be specified, including the top stave. Different versions of &%copyzero%& can be used for different movements; if not given, its settings are copied from the previous movement. If a stave over which stave zero is required is suspended, stave zero is output over the next following non-suspended stave, if there is one. However, if that stave itself is listed in the &%copyzero%& directive, its spacing parameter is used. In general, if, as a result of suspension or overprinting, stave zero is requested more than once at any given level, the spacing parameter for the highest numbered stave is used. Selection of a subset of staves is equivalent to the suspension of all others. The default for &%copyzero%& is: .code copyzero 1 .endd This therefore has the desired effect of outputting stave zero over individual staves that are extracted as parts. If it is necessary to adjust the overall level for a particular part, constructions such as the following can be used: .code *if stave 9 copyzero 9/4 *fi .endd There is also a &%[copyzero]%& stave directive, which takes a dimension as an argument, and adjusts the vertical level of any stave zero material in the current bar when stave zero is being output at the level of the current stave: .code [copyzero 4] .endd This example raises the stave zero material in the current bar by 4 points. It is not necessary for there to be an instance of the &%copyzero%& header directive specifying the current stave for &%[copyzero]%& to take effect. In the default case, &%[copyzero]%& takes effect whenever the stave in which it appears is the top stave of a system. When first and second time bar marks are specified in stave zero, and there is a need to adjust their height for certain staves, it should be noted that the marks are drawn when the bar in which their end point is determined is processed. Consequently, it is that bar in which &%[copyzero]%& should appear. .section "Temporarily suspending staves" SECTsuspend .index "suspending staves" .index "staves" "suspending" When a part is silent for a long period of time, it is conventional in full scores to suppress its stave from the relevant systems. The term `suspended' is used to describe a stave that is not currently being output. PMW does not suspend staves automatically, so you have to use the &%[suspend]%& directive in to tell it when to do so (&R; &<>&). Resumption is automatic when a non-rest bar is reached, but there is also a &%[resume]%& directive for forcing it to happen at a particular bar. Staves can be suspended only if they contain no notes or text items, though other items such as time and key signature changes may be present. It is conventional to show all the staves in the first system of a piece, even if some of them contain only rest bars. However, there is a header directive called &%suspend%& that makes it possible to suspend individual staves right from the start (&R; &<>&). When a single stave is being output, suspension normally has no effect, because multiple rest bars are packed up into a single bar with a count above, and so systems containing only rest bars do not occur. However if &`S!`& is used for rest bars instead of &`R!`&, it prevents the amalgamation of adjacent bars and may lead to potentially suspendable systems, which are undesirable for a single stave. In this case, therefore, &%[suspend]%& directives are ignored. .index "empty bars, omitting" .index "&'ossia'& passages" Normally, a stave that is not suspended will be output right across the system, with rest bars as appropriate. However, a stave can be tagged with the &%omitempty%& option (&R; &<>&), in which case completely empty bars generate no output. This can be useful for &'ossia'& passages. A completely empty bar has no data at all specified for it; a bar containing a rest is not a completely empty bar. . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .chapter "Drawing facilities" CHAPdraw .index-from I03 "drawing facility" .index "&%draw%&" .index "&%[draw]%&" .index "crop marks" PMW contains a facility for drawing simple shapes, defined by the user, positioned relative to notes, bar lines, headings, stave names, or gaps in slurs and slur-like lines. This makes it possible to create music notation that is not provided explicitly by PMW. For example, the facility can be used to draw boxes round notes, vertical brackets between notes, and other unusual marks above or below the stave. It can be used with headings or footings to rule lines across the page or to output crop marks. This chapter is placed here because there are references to the drawing facilities in what follows. However, unless you plan to make use of these features, you can safely skip to the next chapter. A simple programming language is used to describe drawings. Readers unfamiliar with computer programming may find this chapter hard going and may prefer to skip it on a first reading. Before describing the facility in detail, we consider a short example. Suppose there is a requirement to draw a solid black triangle, with its point upwards, 4 points below the stave. The first thing to do is to define this shape. This is done using the &%draw%& header directive as follows: .code draw triangle 3 -4 moveto @ move to apex -3 -6 rlineto @ line to bottom left 6 0 rlineto @ horizontal line to bottom right -3 6 rlineto @ line back to apex fill @ fill it in (solid triangle) enddraw .endd This example of &%draw%& defines a drawing called `triangle'. The lines between &%draw%& and &%enddraw%& are drawing instructions in a form that is described below. Whenever the triangle shape is wanted, the stave directive &%[draw triangle]%& is given before the relevant note. .code c'f [draw triangle] g a | c'-b'- [draw triangle] a'-g'- fg | .endd .music "music19" 40 4,-14 If many triangles are required, it would be a good idea to use &%*define%& to set up a macro for &%[draw triangle]%& to save typing. The `language' used to describe drawings is based on the notion of a &'stack'&. This will be familiar to you if you have any experience of the computer programming languages Forth or PostScript. For those readers who are not familiar with stacks, we now explain how they work. .section "Stack-based operations" .index "drawing facility" "stack description" A stack is a means of storing items of data such that the last item that is put on the stack is the first item to be taken off it. An analogy is often drawn with the storage arrangements for trays in self-service restaurants, where a pile of trays is on a spring-loaded support. Trays are added to the stack on the top, thereby pushing it down; when a new tray is required, it is taken from the top of the stack, and the remainder of the trays `pop up'. PMW's drawing stack contains numbers and references to text strings rather than trays. (Discussion of strings is postponed till section &<>&.) When PMW is obeying a set of drawing instructions, if it encounters a number in its input, the number is `pushed' onto the top of the stack. Consider the following fragment of a drawing program: .code 3 2 add .endd In this example, the first item is the number 3, so the effect of reading it is to put the stack into this state: .figure fig01 The second item is also a number, so after it is read, the stack is as follows: .figure fig02 The third item in this fragment is the word `add'. This is not a number &-- it is an &'operator'&. The operators used in PMW drawings are based on those found in the PostScript language. When an operator is encountered, it causes PMW to perform an operation on the numbers that are already on the stack. In the case of the &%add%& operator, the two topmost numbers are `popped' off the stack, added together, and the result is pushed back onto the stack. So in this case, after `add' has been obeyed, the stack is like this: .figure fig03 .index "stack underflow" .index "underflow of stack" If an operator is encountered that requires more numbers on the stack than there are present, &'stack underflow'& is said to occur. PMW generates an error message and abandons the drawing. The stack mechanism is very simple, and operates quickly. However, it does make it possible to write very obscure code that is hard to understand. Use PMW's comment facility to help you keep track of what is going on. PMW does not clear the drawing stack between one invocation of &%[draw]%& and the next. This provides one way of passing data between two drawing function calls, and there is no problem if the related drawing functions are called in the same bar of the same stave, because they will be always obeyed in the order in which they appear in the input. However, you must not rely on the order in which PMW processes bars and staves, other than that bar &'n'& will be processed before bar &'n'&+1 on any particular stave, but not necessarily immediately before it (a bar on another stave may intervene). Apart from this, the order of processing, and therefore the order of obeying &%[draw]%& directives on several staves, is not defined, and may change between releases of PMW. Therefore, if you need to pass data between drawing functions in different bars, and use this facility on more than one stave, the stack cannot be used safely. &'User variables'& (&R; &<>&) must be used instead. .section "Drawings with arguments" Whenever a drawing function is called, either by the &%[draw]%& directive or as part of some other directive (for example, &%heading%&), its name may be preceded by a list of numbers or text strings (&R; &<>&), separated by spaces. These are pushed onto the drawing stack immediately before the function is obeyed, and therefore act as arguments for the function. Here are some examples: .code heading draw 44 logo [draw 3 -5.6 thing] [linegap/draw 8.2 blip] [slurgap/draw "A"/c annotate] .endd There is no explicit facility for default values, but these can be provided by using a macro with arguments to call the drawing function (&R; &<>&). .section "Arithmetic operators" .index "drawing facility" "arithmetic operators" .index "arithmetic operators for &%draw%&" The following arithmetic operators are provided for use in drawing descriptions: .ilist &%add%&: Add the two top numbers on the stack, leaving the result on the stack. .next &%div%&: Divide the second topmost number on the stack by the number on the top of the stack, leaving the result on the stack. .next &%mul%&: Multiply the two top numbers on the stack, leaving the result on the stack. .next &%neg%&: Negate the topmost number on the stack, leaving the result on the stack. .next &%sub%&: Subtract the topmost number on the stack from the second topmost number, leaving the result on the stack. .endlist Evaluation of the expression ((3+4) × 5 + 6)/7 could be coded as follows: .code 3 4 add 5 mul 6 add 7 div .endd .section "Mathematical function operators" .index "drawing facility" "mathematical functions" .index "mathematical functions for &%draw%&" The following operators make some mathematical functions available in drawing descriptions: .ilist &%cos%&: Replace the top number on the stack, which is interpreted as an angle in degrees, with the value of its cosine. .next &%sin%&: Replace the top number on the stack, which is interpreted as an angle in degrees, with the value of its sine. .next &%sqrt%&: Replace tne top number on the stack with its square root. The number must not be negative. .endlist .section "Truth values" .index "drawing facility" "true values" The operators &%false%& and &%true%& push the values 0 and 1 onto the stack, respectively. These are the same values that are returned by the comparison operators, and can be tested by the conditional operators. .section "Comparison operators" .index "drawing facility" "comparison operators" .index "comparison operators for &%draw%&" The following operators operate on the top two values on the stack and leave their result on the stack. The values must be numbers &-- if they are not, the result is undefined. Otherwise the result is 1 for &'true'& and 0 for &'false'&. .itable none 0 0 2 20 left 300 left .row &%eq%& "test equality" .row &%ne%& "test inequality" .row &%ge%& "test first greater than or equal to second" .row &%gt%& "test first greater than second" .row &%le%& "test first less than or equal to second" .row &%lt%& "test first less than second" .endtable For example: .code 10 10 eq .endd leaves the value 1 (&'true'&) on the stack, and .code 25 4 lt .endd yields 0 (&'false'&). The conditional operators can be used to test these values. .section "Bitwise and logical operators" .index "drawing facility" "logical operators" .index "drawing facility" "bitwise operators" .index "logical operators for &%draw%&" .index "bitwise operators for &%draw%&" The following operators perform bitwise operations on the integer parts of the top two values on the stack. The result always has a zero fractional part. .itable none 0 0 2 30 left 300 left .row &%and%& "bitwise and" .row &%or%& "bitwise or" .row &%xor%& "bitwise exclusive or" .endtable The &%not%& operator performs bitwise negation on the top number on the stack. These bitwise operators act as logical operators when applied to the results of the comparison operators. .code 5 6 ne 13 7 gt and .endd This example leaves 1 (&'true'&) on the stack, because 5 is not equal to 6 and 13 is greater than 7. .section "Stack manipulation operators" .index "drawing facility" "stack manipulation" There are several operators that can be used to manipulate items on the stack. .ilist &%copy%&: Remove the top item, which must be a number, then duplicate the sequence of that number of items. For example, if the stack contained the numbers 13, 23, and 53, after &%2 copy%& it would contain 13, 23, 53, 23, 53. .next &%dup%&: Duplicate the item on the top of the stack. This has the same effect as &%copy%& with an argument of 1. .next &%exch%&: Exchange the two top items on the stack. .next &%pop%&: Remove the topmost item on the stack, and discard it. .next &%roll%&: This operator performs a circular shift of items on the stack. When it is encountered, there must be three or more items on the stack. The topmost item on the stack is a count of the number of positions by which items are to be shifted. The second topmost item is the number of items involved, and there must be at least this many additional items on the stack. PMW first removes the two control numbers from the stack. Then it shifts the given number of items by the given amount. If the amount of shift is positive, each shift consists of removing an item from the top of the stack, and inserting it below the last item involved in this operation. This is an `upwards' roll of the stack. If the amount of shift is negative, each shift consists of removing the lowest item involved in the operation, and pushing it onto the top of the stack. This is a `downwards' roll of the stack. .endlist Here is an example of the use of &%roll%&. .code 33 45 67 91 3 1 roll .endd When &%roll%& is obeyed, the three items 45, 67, 91 are rolled upwards one place and the result is: .figure fig04 .section "Coordinate systems" .index "drawing facility" "coordinate systems" .index "drawing facility" "coordinate origin" The coordinate system used in PMW drawings is a traditional X-Y system, with all distances specified in points. The initial position of the origin of the coordinates depends on the item with which the drawing is associated. PMW drawings can be associated with four kinds of item: .ilist A drawing can be associated with a note (or chord) on a stave, or with the end of a bar if no notes follow the &%[draw]%& directive. The vertical position of the origin is on the bottom line of the stave if the stave has 3 or more lines. For staves with zero, one, or two lines, the vertical position of the drawing origin is where the bottom line of a 5-line stave would be. The horizontal position of the origin is either at the left-hand edge of the associated note, or at the bar line if there is no following note. The left-hand edge of a note or chord with a downwards pointing stem is the edge of the stem. This applies even when a chord has some noteheads moved to the other side of the stem. For breves and semibreves the behaviour is as if there were a stem. Noteheads are 6 points wide, so the horizontal coordinate of the centre of a note is 3. That is where the 3s in the triangle example come from. .next A drawing can be associated with a heading or footing. The origin of the coordinate system is at the left-hand side, at the level of the next heading or footing line. See the &%heading%& directive (&R; &<>&) for more details. .next A drawing can be associated with a gap in a line that is defined by the &%[line]%& directive, or with a slur. The origin of the coordinate system is in the middle of the gap. For details see the &%[linegap]%& (&R; &<>&) and &%[slurgap]%& (&R; &<>&) directives. .next A drawing can be associated with the text the precedes the start of a stave. The origin of the coordinate system is at the left-hand side, at the level of the bottom line of the stave. For details, see the &%[stave]%& directive (&R; &<>&). .endlist .section "Moving the origin" .index "drawing facility" "moving the origin" There is an operator called &%translate%& that moves the origin of the coordinate system to the point specified by the two numbers on the top of the stack, relative to the old origin. .section "Graphic operators" .index "drawing facility" "graphic operators" .index "graphic operators for &%draw%&" PMW follows the PostScript model in the way drawn marks on the page are specified. There are operators that set up a description of a &'path'& on the page, and this outline is then either filled in completely, using the &%fill%& operator, or a line of given thickness is drawn along the path, using the &%stroke%& operator. A path normally consists of several segments, which may be lines or curves. There can be gaps in the path. A single path can consist of a number of disconnected segments. At the start of an external call to a draw function, the current colour is set to black, the current line width is set to 0.5, and the current setting for dashed lines is no dashes. However, these values are not changed when a drawing function is called from within another drawing function (&R; &<>&). A path definition must always start with a &%moveto%& operation, in order to establish an initial current point. Thereafter, a mixture of moving and drawing operators may be specified. Distances are, as always, expressed in points. They are subject to the overall magnification in the same way as other dimensions. They are not, however, subject to the relative magnification of individual staves, but there is a variable that contains the magnification of the current stave (when the drawing is associated with a stave), so that adjustments can be made explicitly when required. Whenever a pair of coordinates is required to be on the stack, it is always the x-coordinate that must be pushed first, and the y-coordinate second. The graphic operators are as follows: .ilist &%currentcolor%&: Push onto the stack the three values of the current colour setting &-- see &%setcolor%& below (&%currentcolour%& is a synonym). .next &%currentdash%&: Push onto the stack the two values of the current dash setting &-- see &%setdash%& below. .next &%currentgray%&: Push onto the stack the current value of the grey setting &-- see &%setgray%& below (&%currentgrey%& is a synonym). If the current colour is not a grey setting (the red, green, and blue values are not all the same), a grey value is computed using the formula from the NTSC video standard for converting colour television to black and white, as used by PostScript: .display &'gray'& = 0.3 x &'red'& + 0.59 x &'green'& + 0.11 x &'blue'& .endd .next &%currentlinewidth%&: Push onto the stack the current value of the line width setting &-- see &%setlinewidth%& below. .next &%currentpoint%&: Push the coordinates of the current point onto the stack. The x-coordinate is pushed first. .next &%curveto%&: This operator draws a Bézier curve. There must be six numbers on the stack when it is called; they are treated as three pairs of coordinates. The final pair are the end point of the curve, which starts from the existing current point. The two other pairs of coordinates give the Bézier curve control points. If you are not familiar with Bézier curves, you will need to discover a bit about them before you can fully understand this operator. They are described in many books on computer graphics. Very roughly, the curve starts out from its starting point towards the first control point, and ends up at the finishing point coming from the direction of the second control point. The greater the distance of the control points from the end points, the more the curve goes towards the control points before turning back to the end point. It does not, however, pass through the control points. .next &%fill%&: This operator causes the interior of the previously defined path to be completely filled in. The default is to fill in black, but this can be changed by the &%setgray%& operator. After filling, the path is deleted, and a new one can then be started. .next &%fillretain%&: This command behaves like &%fill%&, except that the path is retained and can be used again. See &%setgray%& below for an example. .next &%lineto%&: The path is extended by a line segment from the current point to the absolute position given by the two top items on the stack. .next &%moveto%&: If there is no current path, this must be the first graphic operator encountered. It establishes the initial current point. Otherwise, the path is extended by a move (invisible) segment from the current point to the absolute position given by the two top items on the stack. .next &%rcurveto%&: This operator acts like &%curveto%&, except that the three pairs of coordinates are taken as relative to the existing current point. .next &%rlineto%&: This operator acts like &%lineto%&, except that the coordinates are taken as relative to the existing current point. .next &%rmoveto%&: This operator acts like &%moveto%&, except that the coordinates are taken as relative to the existing current point. .next &%setcolor%& or &%setcolour%&: This operator specifies a colour for subsequent items drawn by &%stroke%& or &%fill%& and also for text that is output by &%show%&. Three numbers on the stack specify the red, green, and blue components of the colour. Their values must be between 0 (none) and 1 (maximum). This example sets a shade of purple: .code 0.5 0.2 1 setcolor .endd For shades of grey the three values are identical; see the &%setgray%& operator below. .next &%setdash%&: This operator enables &%stroke%& to draw simple dashed lines. There must be two numbers on the stack: a dash length and a gap length. For example, .code 10 3 setdash .endd causes any subsequently drawn lines to consist of dashes of length 10, interspersed with gaps of length 3. .next &%setgray%& or &%setgrey%&: This operator is used to specify a grey shade for drawn items resulting from the use of &%stroke%& or &%fill%&. It has exactly the same effect as &%setcolor%& with three identical arguments. From release 5.22 a colour or grey setting also applies to text that is output by &%show%&. A single number between 0 (black) and 1 (white) is taken from the stack. For example: .code 0.5 setgray .endd Filling a path is analagous to using opaque paint, so &%setgray%& can be used to fill an area with white and thereby `rub out' any previous marks on the page. For example, to blank out an area with white and draw a black line round its edge one could define the path and then use: .code 1 setgray fillretain 0 setgray stroke .endd If you do something like this on a stave of music, you should invoke the drawing with &%[overdraw]%& rather than &%[draw]%& because that ensures that it is output after everything else on the stave. .next &%setlinewidth%&: A single number is required on the stack to specify the width of lines to be drawn by the &%stroke%& operator. The default line width is 0.5 points. The value persists from one call of &%[draw]%& to the next. .next &%show%&: This operator outputs a text string (&R; &<>&). .next &%stroke%&: This operator causes a line to be drawn along the previously defined path, omitting any segments that were defined with &%moveto%& or &%rmoveto%&. Afterwards, the path is deleted, and a new one can be defined. .endlist .section "System variables" .index "drawing facility" "system variables" .index "variables for &%draw%&" In order to set up drawings that are positioned relative to the following note or chord (for example, to draw a box around it) it is necessary to have access to some data about it. There are a number of &'system variables'& that provide this, as well as other variable data values. When encountered in a drawing description, the name of a variable has the effect of pushing the relevant data value onto the stack. The system variables that relate to notes should be used only when the drawing function is called immediately before a note, and those that relate to staves and systems should not be used in drawings that are called as headings or footings. .ilist &%accleft%&: This variable contains distance from the left-hand edge of the leftmost notehead to the left-hand edge of the accidental that is furthest to the left, as a positive number. If there are no accidentals, the value is zero. .next &%barnumber%&: When used in a bar, this variable contains the bar number. Note that if the bar is uncounted, its number includes a decimal fraction (&R; &<>&). If this variable is used in a drawing that is obeyed at the start of a system, it contains the number of the first bar in the system. If used in headings or footings, it contains zero. .next &%gaptype%&: This variable contains +1 or -1 when a drawing function is being obeyed as part of a &%[linegap]%& or &%[slurgap]%& directive; the value is positive for a line or slur that is above the stave, and negative for one that is below. Otherwise the variable contains zero. .next &%gapx%& and &%gapy%&: When a drawing is being obeyed as part of a &%[linegap]%& or &%[slurgap]%& directive, these variables contain the coordinates of the start of the next part of the line or slur. Otherwise they contain zero. .next &%headbottom%&: This variable contains the y-coordinate of the bottom of the notehead; if the drawing function precedes a chord, this refers to the lowest notehead. .next &%headleft%&: For a chord with a downwards stem in which there is a notehead on the `wrong' side of the stem, this variable contains the width of this notehead as a positive number; otherwise its value is zero. .next &%headright%&: This variable contains the width of the notehead, except that, for a chord with an upwards pointing stem in which there is a notehead on the `wrong' side of the stem, the value is twice the notehead width. .next &%headtop%&: This variable contains the y-coordinate of the top of the notehead; if the drawing function precedes a chord, this refers to the highest notehead. .next &%leftbarx%&: This variable contains the x-coordinate of the previous bar line, except in the first bar of a system, in which case it is the x-coordinate of a point slightly to the left of the first note in the bar. .next &%linebottom%&: This variable contains the value 2 (scaled to the stave size) if the bottom of the lowest notehead is on a stave (or ledger) line (that is, the notehead itself is positioned in a space); otherwise its value is zero. .next &%linegapx%& and &%linegapy%&: These variables are old synonyms for &%gapx%& and &%gapy%&. .next &%linelength%&: This variable contains the current line length, as set by the &%linelength%& header directive, but scaled to the current magnification. For example, with a magnification of 2 and the default pagelength of 480, the value in &%linelength%& is 240. .next &%linetop%&: This variable contains the value 2 (scaled to the stave size) if the top of the highest notehead is on a stave (or ledger) line (that is, the notehead itself is positioned in a space); otherwise its value is zero. .next &%magnification%&: This variable contains the value of the overall magnification. If used on a stave, it does not include the relative magnification (see &%stavesize%& below). .next &%originx%& and &%originy%&: These variables are for use when more than one note position is participating in a drawing. They contain the &'absolute'& x-coordinate and y-coordinate of the local coordinate system's origin, respectively. This makes it possible to leave absolute coordinate values in user variables or on the stack at the end of a call to &%[draw]%&. A subsequent &%[draw]%& program can relate these values to its own local coordinate system by its own use of &%originx%& and/or &%originy%&. An example of this is given below (&R; &<>&). .next &%pagelength%&: This variable contains the current page length, as set by the &%pagelength%& header directive, but scaled to the current magnification. For example, with a magnification of 2 and the default page length of 720, the value in &%pagelength%& is 360. .next &%pagenumber%&: This variable contains the current page number. .next &%stavesize%&: This variable contains the relative magnification for the current stave, as specified by the &%stavesize%& header directive. .next &%stavespace%&: This variable contains the stave spacing for the current stave, that is, the vertical distance between this stave and the next one. .next &%stavestart%&: This variable contains the x-coordinate of the left-hand end of the current system, relative to the current origin. .next &%stembottom%&: This variable contains the y-coordinate of the bottom of the stem of the note or chord. If there is no stem, or if the stem points upwards, this is the same value as &%headbottom%&. .next &%stemtop%&: This variable contains the y-coordinate of the top of the stem of the note or chord. If there is no stem, or if the stem points downwards, this is the same value as &%headtop%&. .next &%systemdepth%&: This variable contains the distance from the bottom of the top stave of the current system to the bottom of the bottom stave. .next &%topleft%&: This variable contains the coordinates of the position at which PMW starts writing on a page, relative to the current origin. When encountered, it pushes &'two'& values onto the stack. The normal starting position is one inch down from the top of the paper, and indented according to the sheet width and line length. This variable can be used with &%translate%& to move the origin to a fixed point .index "crop marks" on the page in order to draw such things as crop marks. .endlist .section "User variables" SECTuservar .index "drawing facility" "user variables" .index "user variables in drawings" .index "variables for &%draw%&" Up to 20 user variables are available for use in drawing functions. These variables are &'global'& in that they are shared between all drawing functions. When you want to pass values from one drawing function call to another, using a variable is often more convenient than leaving data on the stack. The names of the variables are chosen by the user, but they must not be the same as any of the built-in variables or operators. Once a variable has been defined, its value is retrieved by quoting its name; this causes the value to be copied onto the stack. To set a value into a variable, the following construction is used: .display &`/`&<&'name'&> <&'value'&> &`def`& .endd The appearance of &`/`& indicates that the name of the variable is required, rather than its value. For example, to put the value 10 into a variable called &`abc`&: .code /abc 10 def .endd The value that is set in a variable may be changed as often as necessary. A variable's name must appear in a definition (preceded by a slash) earlier in the input than its first use as a reference. If a variable is set in one drawing function and used in another, the definition of the one in which it is set must come first in the PMW input file. This is not always possible. For example, when the defining function calls the other function, the called function must come first. In such cases, a dummy drawing function that is defined but never obeyed can be used for the sole purpose of defining user variable names. .section "Text strings in drawings" SECTtextindrawing .index "drawing facility" "text strings" Text strings can be output from within drawing functions. The appearance of a string in quotes inside a drawing definition or as an argument to a drawing function causes an item representing the string to be pushed onto the stack. Such an item can be copied or moved around the stack in the normal way, but can be processed only by special string operators. The most important of these is the &%show%& operator, which causes the string to be output at the current point: .code draw string 0 -12 moveto "text" show enddraw .endd The default font is roman, but the string may contain font changes and other escape sequences, just like any other string. It may be followed by one or more of the following options: .itable none 0 0 2 60 left 300 left .row &`/box`& "enclose the string in a rectangular box" .row &`/c`& "centre the string at the current point" .row &`/d`&<&'n'&> "move the string down by <&'n'&> points" .row &`/e`& "align the end of the string with the current point" .row &`/l`&<&'n'&> "move the string left by <&'n'&> points" .row &`/r`&<&'n'&> "move the string right by <&'n'&> points" .row &`/ring`& "enclose the string in a ring (circular if a short string)" .row &`/rot`&<&'n'&> "rotate the string by <&'n'&> degrees (&R; &<>&)" .row &`/s`&<&'n'&> "output the string at settable size <&'n'&> (&R; &<>&)" .row &`/S`&<&'n'&> "output the string at fixed size <&'n'&> (&R; &<>&)" .row &`/u`&<&'n'&> "move the string up by <&'n'&> points" .endtable The &`/u`&, &`/d`&, &`/l`&, and &`/r`& options are not particularly useful on strings that are part of drawing definitions, because you can position such strings with &%moveto%& or &%rmoveto%&. However, when a string is an argument to a drawing it is sometimes helpful to be able to modify the position that is defined within the drawing. These moving options are ignored when the string is used by some operator other than &%show%& (for example, &%stringwidth%&). When the string is centred or end-aligned, outputting the string does not change the current point; in the default, left-aligned case, the current point is moved to the end of the string. A path may be begun before outputting a string and continued afterwards. As an example of the use of the text facility, consider music in the sixteenth and seventeenth century style where, instead of using ties that cross bar lines, augmentation dots without notes are placed on the far side of the bar lines. .code draw dot 0 headbottom 2 linebottom sub add moveto "\mf\?" show enddraw *define bd() [notes off draw dot] &&1-; [notes on] time 2/4 [stave 1 treble 1] ra | &bd(a) b-g | .endd .music "music34" 32 8,-18 In this example, the macro &%bd%& (`bar dot') is defined, in order to shorten the input for each dot. Its argument is the note pitch for which a dot is required. The `tied' note is not actually shown because of the use of &%[notes off]%& but its pitch is available to the drawing function, which uses it to put a dot character from the music font at the appropriate level on the stave (a question mark in the music font corresponds to the horizontal dot character). The input could be shortened even further by including the previous note and the bar line inside the macro expansion. .section "String operators" .index "drawing facility" "string operators" As well as &%show%&, there are three other operators that act on strings. .ilist The &%cvs%& operator converts a number to a string, typically so that it can be output. There must be two arguments on the stack: the number to be converted, and a string that provides a place to store the converted number. The string may be empty, in which case the roman font is used; if not, the font is taken from the first character in the string. The string may be followed by any of the usual string options. When &%cvs%& is obeyed, the two arguments are removed from the stack and a string containing a representation of the number is pushed back. For example, to output the current barnumber at text size 2, centred at the current position: .code barnumber ""/c/s2 cvs show .endd .next .index "drawing facility" "string width" The &%stringwidth%& operator replaces a string on the stack with the horizontal and vertical distances by which the current point would move if the string were output. Note that the second value is &'not'& the height of the string, and in most cases is zero. There is an example of the use of &%stringwidth%& in the section on looping operators below (&R; &<>&). .next .index "drawing facility" "font size" The &%fontsize%& operator replaces a string on the stack with the font size associated with it. .endlist .section "Drawing subroutines" SECTdrawsub .index "drawing facility" "subroutines" One drawing can be called as a subroutine from within another by means of the &%draw%& operator. The caller and the called drawing both see the same drawing stack and graphics state (current position, current path, line width, colour, etc). Changes made by the subroutine can therefore affect the caller. The behaviour is as if the &%draw%& operation is replaced by the text of the subroutine. For example, to draw two crosses below the stave on either side of a note's position: .code draw cross -4 0 rmoveto 8 0 rlineto -4 -4 rmoveto 0 8 rlineto stroke enddraw draw crosses -4 -6 moveto draw cross 10 -6 moveto draw cross enddraw [stave 1 treble 1] [draw crosses] gabc' | .endd .music "music35" 32 4,-16 The subroutine must be defined before the definition of any drawings in which it is called. Subroutines cannot be called recursively, that is, a drawing cannot call itself, and a multi-drawing recursive loop is not possible because a drawing must be defined before it is called. .section "Blocks" .index "drawing facility" "blocks" A &'block'& is a portion of a drawing's coding enclosed in curly brackets. It is used by the conditional and looping operators. When a block is encountered during drawing, its contents are not obeyed immediately. Instead, a reference to them is placed on the stack, for use by a subsequent operator. Blocks can be nested inside each other. .section "Conditional operators" .index "drawing facility" "conditional operators" The operator &%if%& is used to obey a portion of the drawing conditionally. It uses the top two items on the stack. The first must be a number, and the second a reference to a block. Both are removed from the stack, and if the value of the number is zero, nothing else happens. Otherwise, the contents of the block are obeyed. For example, to output the bar number if it is greater than 5: .code barnumber 5 gt { barnumber "" cvs show } if .endd The bar number and the number 5 are pushed onto the stack; the comparison operator &%gt%& replaces them with 1 if the barnumber is greater than 5, or 0 otherwise. Then a reference to the block is pushed onto the stack, and the &%if%& operator causes it to be obeyed if the number is non-zero. The &%ifelse%& operator is similar to &%if%&, except that it requires two blocks on the stack. The first is obeyed if the condition is true, the second if it is false. .section "Looping operators" SECTloopop .index "drawing facility" "looping operators" The &%repeat%& operator expects a number and a block on the stack. It removes them, and then obeys the block that number of times. If the number has a fractional part, it is ignored. For example, to output a row of asterisks from the start of the bar to just before the current note or bar line, the following function could be used (adding 0.5 ensures that the count is rounded to the nearest integer): .code draw astline leftbarx -15 moveto leftbarx neg "*" stringwidth pop div 0.5 add { "*" show } repeat enddraw [stave 1 bass 0] gddg | de [draw astline] fg | .endd .music "music36" 36 4,-14 The &%loop%& operator expects only a block on the stack, and it obeys it repeatedly until the &%exit%& operator is encountered. To guard against accidents, a limit of 1,000 times round the loop is imposed. Another way of showing these asterisks is: .code draw astline leftbarx -15 moveto { "*" show currentpoint pop 0 ge {exit} if } loop enddraw .endd The &%exit%& operator can also be used to stop a &%repeat%& loop prematurely. If encountered outside a loop, it causes an exit from the current drawing function. .section "Drawing in headings and footings" Drawing functions can be obeyed in headings and footings. For example, crop marks, horizontal rules, and borders on title pages can be drawn by this method. For details, see the description of the &%heading%& directive (&R; &<>&). .section "Drawing at stave starts" Drawing functions can be obeyed at the start of a stave, as well as, or instead of text. For details see the description of the &%[stave]%& directive (&R; &<>&). .section "Testing drawing code" .index "drawing facility" "testing" .index "testing &%draw%& code" When a drawing does not turn out the way you expect it to, it can sometimes be difficult to track down exactly what is wrong. Being able to examine the contents of the stack at particular points is sometimes helpful. The operator &%pstack%& causes the contents of the stack to be written to the standard error stream. .section "Example of use of system variables" .index "drawing facility" "examples" This example illustrates the use of the variables that contain the dimensions of the note that follows the &%[draw]%& directive: .code flow draw box -2 headleft sub accleft sub stembottom 1.3 sub moveto stemtop stembottom sub 2.6 add dup 0 exch rlineto headleft headright add accleft add 4 add dup 0 rlineto exch 0 exch neg rlineto neg 0 rlineto stroke enddraw draw bracket -2 headleft sub accleft sub headbottom linebottom add moveto -2 0 rlineto -4 headleft sub accleft sub headtop linetop sub lineto 2 0 rlineto stroke enddraw [stave 1 treble 1] [draw box] $a [draw box] f' [draw box] (fg) [space 10] [draw box] (f'g') [space 6] [draw bracket] (#fc') [draw bracket] (g#d') [endstave] .endd .music "music20" 40 4,-12 The definitions look a bit daunting at first sight, but are not difficult to understand when broken down into their constituent parts. If you find the explanation hard to follow, try using pencil and paper to keep track of the values as they are pushed onto and popped off the stack. We consider first the `box' drawing, which encloses the following note or chord in a rectangular box. The first line establishes the start of the drawing path at the bottom left-hand corner of the box: .code -2 headleft sub accleft sub stembottom 1.3 sub moveto .endd It starts by pushing the value -2 onto the stack, then subtracting from it the &%headleft%& and &%accleft%& variables. This gives a value for the x-coordinate that is two points to the left of the leftmost accidental, taking into account any notehead that is positioned to the left of the stem. The y-coordinate is computed as the value of the &%stembottom%& variable less 1.3 points. The &%moveto%& operator then establishes the start of the drawing path, using the two coordinate values that are on the stack, and leaving the stack empty. .code stemtop stembottom sub 2.6 add dup 0 exch rlineto .endd The second line of the drawing instructions computes the length of the vertical sides of the rectangle. It does this by subtracting the value of &%stembottom%& from the value of &%stemtop%& and then adding 2.6 to the result. This is to allow 1.3 points of clear space at the top and the bottom. As this value is going to be needed twice, once for each side, the &%dup%& operator is called to duplicate it. To draw the left-hand vertical, a relative x-coordinate of zero is pushed on the stack, and then &%exch%& is used to get the coordinates in the correct order on the stack before calling &%rlineto%&. The current point is now at the top left-hand corner of the rectangle, and the stack contains the duplicated value of the vertical sides' length. .code headleft headright add accleft add 4 add dup 0 rlineto exch .endd The third line does a computation for the rectangle's width, which is the sum of the contents of the &%headleft%&, &%headright%&, and &%accleft%& variables, plus four (allowing two points clear on either side). Once again, &%dup%& is used to leave a copy of the value on the stack, and this time a zero relative y-coordinate is used, in order to draw a horizontal line. The two remembered lengths that are left on the stack are now exchanged, so that the vertical length becomes the topmost value. .code 0 exch neg rlineto neg 0 rlineto stroke .endd The remaining lines use these stacked values to complete the rectangle. The first line pushes a zero relative x-coordinate, ensures that the order on the stack is correct by means of &%exch%& (bringing the vertical side length to the top), and negates the y-coordinate so that the line is drawn downwards. The second line negates the one remaining value on the stack, which is the width of the rectangle, pushes a zero relative y-coordinate, and draws the final horizontal line to the left. Finally, &%stroke%& causes a line to be drawn along the path which has just been defined. The `bracket' drawing draws a left-hand bracket whose size is adjusted for the notes of a chord, and which also takes into account the position of the noteheads on stave lines or in spaces. .code -2 headleft sub accleft sub headbottom linebottom add moveto -2 0 rlineto -4 headleft sub accleft sub headtop linetop sub lineto 2 0 rlineto stroke .endd The first line computes the position of the start of the path, which is the right-hand end of the bottom `jog'. The x-coordinate is 2 points to the left of the left-most accidental, and the y-coordinate is the bottom of the lowest notehead if this position is not on a stave line (in which case &%linebottom%& is zero) or two points above if it is. The second line draws the lower horizontal `jog' to the left as a relative line. The third line computes the absolute coordinates of the top left-hand corner, taking into account whether the top notehead is on a line or not. An alternative to this would have been to save the initial x-coordinate on the stack instead of recomputing it from scratch. Finally, the top `jog' is drawn to the right, and the path is stroked. .section "Example of inter-note drawing" SECTexinterdraw This example illustrates the use of the &%originx%& variable for connecting up two different notes: .code draw save headbottom originx enddraw draw connect originx sub 3 add dup 3 add 2 div 3 1 roll exch 2 sub moveto -12 lineto 3 headbottom 2 sub lineto stroke enddraw [stave 1 treble 1] b [draw save] e c'-g-a-b- [draw connect] a g | [endstave] .endd .music "music21" 40 4,-12 The `save' drawing does not actually do any drawing at all. It just saves on the stack the y-coordinate of the bottom of the next note, and the absolute x-coordinate of its left-hand edge. Using the stack to pass data between two drawing functions is a simple method that works well when both functions are called in the same bar on the same stave. An alternative method is to use user variables (&R; &<>&); this must be used if the drawing functions appear on several different staves and the related functions are not called in the same bar. The first thing the `connect' drawing program does is to push &'its'& x-origin onto the stack, and subtract it from the saved value. The result of this computation is the x-coordinate of the first note (the one immediately following &%[draw save]%&), relative to the current local coordinate system, which is, of course, based on the note following &%[draw connect]%&. A value of 3 is added to this, giving the horizontal position of the middle of the first note. The &%dup%& operator saves a copy of this value on the stack for later use, and another 3 is added to the top value, giving the coordinate of the right-hand edge of the first note. The next bit of computation finds the mid-point between the two notes. The left-hand edge of the second note has an x-coordinate of zero in the local coordinate system, so dividing the coordinate of the right-hand edge of the first note by 2 gives us the mid-point. There are now three values on the stack: .display rm the x-coordinate of the halfway point the x-coordinate of the mid-point of the first note the y-coordinate of the bottom of the first note .endd The operation &%3 1 roll%& changes this to: .display rm the x-coordinate of the mid-point of the first note the y-coordinate of the bottom of the first note the x-coordinate of the halfway point .endd The subsequent &%exch%& changes it to: .display rm the y-coordinate of the bottom of the first note the x-coordinate of the mid-point of the first note the x-coordinate of the halfway point .endd A value of 2 is subtracted from the y-coordinate of the first note, and the &%moveto%& operator is called to start the drawing path, which therefore begins two points below the first note, and halfway along its notehead. Now only the x-coordinate of the halfway point between the two notes remains on the stack. The operation &%-12 lineto%& draws a line from the initial position to the halfway point, twelve points below the bottom of the stave. The stack is now empty. The final lines of the drawing program continue the path to a position two points below the end note at the mid-point of its notehead, and then cause it to be stroked. .index-to I03 . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .tocsubsectoff .chapter "Header directives" CHAPheaddir .index-from I04 "directives" "header" .index-from I05 "header" "directives" A header section in a PMW file contains &'header directives'&. Each starts with a keyword, and sometimes the keyword is followed by numerical or other data. The case of letters in keywords is not significant. It is usual to start a new line for each header directive, but this is not a requirement. A header section is terminated by an opening square bracket character that is not in a text string or in a comment (following an @). None of the header information is mandatory because there are default values for all the parameters; a header section may be completely empty. Most of the header directives may appear at the start of a new movement as well as at the start of the input, but a few may only appear at the very start of the file, that is, only in the first movement (&R; &<>&). In general, header directives may appear in any order, but there are some fairly obvious cases where the order matters. For example, a multiplicative change to the note spacing must follow a setting of absolute values, the definition of a drawing or macro must precede its use, and a stave selection must precede any tests based on which staves are selected. .section "Alphabetical list of header directives" .index "number lists" The header directives are now described in alphabetical order. Several of them take a list of numbers as data. In all cases, such numbers can be separated by commas and/or spaces, but the whole list must all be on one line. The values set by most directives persist from movement to movement. When this is not the case, it is noted in the description. .subsection "Accadjusts" .index "&%accadjusts%&" .index "accidentals" "spacing" .index "spacing" "accidentals" Accidentals are normally placed about four points to the left of the notes to which they apply (the exact distance depends on the accidental). The &%accadjusts%& directive can be used to vary this positioning, on a note-type basis. It does not affect the spacing of the notes themselves; it just moves the accidentals right or left. The directive is followed by up to eight numbers, which apply to each of the eight note types, starting with breves. The numbers can be positive (move to the right, that is, nearer the note) or negative (move to the left, that is, further from the note). .code accadjusts 1.8 .endd This example has the effect of moving any accidental that precedes a breve 1.8 points to the right. .subsection "Accspacing" .index "&%accspacing%&" .index "accidentals" "spacing" The &%accspacing%& directive must be followed by at least five numbers. They set the widths that are used for accidentals in time signatures and when outputting notes, in the order double sharp, flat, double flat, natural, and sharp. The default values are: .code accspacing 5.25 4.5 8.0 4.25 5.0 .endd The values for sharp and flat also apply to half flats and half sharps in style 1 (&R; &<>&). The value for the narrower style 0 half sharps is by default set to the sharp value minus 0.2, but this can be overridden by supplying a sixth value. The default widths are not the same as the widths that are set in the PMW music font, where the values are better suited for including the characters in text. It should not be necessary to change these widths unless a non-standard music font is being used. .subsection "B2PFfont" SUBSECTb2pffont .index "&%b2pffont%&" .index "B2PF text processing" This directive is permitted only in the first movement. B2PF is a library for transforming strings of basic Unicode characters into their `presentation forms', where the displayed letter shapes may vary, depending on their surroundings. PMW can optionally be compiled to make use of the B2PF library. This makes available the &%b2pffont%& directive, which has the following form: .display &`b2pffont`& <&'fontword'&> <&'options'&> "<&'B2PF rules file'&>" .endd The first argument must be one of the words `roman', `italic', `bold', `bolditalic', `symbol', or `extra' followed by a number in the range 1&--12, specifying which text font is being configured. Most commonly it will be one of the extra fonts. Any number of B2PF options may then follow, followed by one or more B2PF rules file names in quotes. If just one empty string is given, B2PF processing is initialized without any defined rules. This could be used to reverse the code points in a string. The rules files are first sought in directories listed in the &%-F%& command line option, followed by B2PF's default directory. Here are some examples: .code B2PFfont extra 1 "Arabic" "Arabic-LigExtra" B2PFfont extra 2 input_backchars output_backchars "Arabic" .endd The options specify whether the input and output strings are in reading order or reverse reading order. The available options are &`input_backchars`&, &`input_backcodes`&, &`output_backchars`& and &`output_backcodes`&. See the B2PF documentation for more details. .subsection "Bar" .index "&%bar%&" .index "bar numbers" "starting value" .index "movement" "continuing bar numbers" This directive must be followed by a number; it causes the numbering of bars to begin from a number other than one. This facility is useful for fragments of pieces, or continuing a bar number sequence through several movements. .subsection "Barlinesize" .index "&%barlinesize%&" .index "bar lines" "for different sized staves" When a system contains staves of differing sizes (as set by &%stavesizes%&) it is usually the case that bar lines are split where the stave size changes, so the use of barlines of differing thicknesses for the different staves looks reasonable. To cope with the rare case when barlines must cover staves of different sizes, the &%barlinesize%& directive exists, because PMW cannot decide for itself what the size should be &-- the default use of different sizes leads to jagged joins. &%Barlinesize%& must be followed by a single number, which specifies the relative size of bar line to be used throughout. A value of zero requests the default action of using different sizes. .code barlinesize 1 .endd This example requests that full size barlines be used throughout; they will look somewhat fat on any staves whose size is less than 1, and thin on any whose size is greater than 1. .subsection "Barlinespace" .index "&%barlinespace%&" .index "bar lines" "space after" .index "bar lines" "invisible, no space after" .index "invisible items" "bar lines, space after" .index "spacing" "bar lines" This directive gives control over the amount of space left after bar lines. It must be followed by a single dimension, which may be preceded by a plus or a minus sign, indicating a change to the existing value. If neither of these is present, the number specifies an absolute value. The default value can be reset in a subsequent movement by following the directive with an asterisk instead of a number. The default is related to the space following a minim, with a minimum of 3 points. However, if an explicit space is specified, no minimum is enforced. A value of zero may be given &-- this is useful for a piece with no bar lines, where `invisible bar lines' can be used to tell PMW where systems can be ended, but no space must be inserted. .subsection "Barlinestyle" SUBSECTbarlinestyle .index "&%barlinestyle%&" .index "bar lines" "style" .index "bar lines" "dashed" .index "bar lines" "between staves only" This directive specifies the way in which bar lines are to appear on all staves. It takes a numerical argument, with a value in the range 0&--5. There is also a &%[barlinestyle]%& stave directive that sets the style separately for an individual stave. The styles are as follows: .ilist Style 0 is the normal style, using solid bar lines. .next Style 1 specifies dashed bar lines. .next Styles 2 and 3 cause solid or dashed bar lines (respectively) to be drawn &'between'& staves only; if the bar line is broken at a stave where either of these styles applies, nothing at all is output. These styles work only when the stave spacing is 32 points or greater (which is normally the case). .next Style 4 specifies a half-height bar line in the middle of the stave. It implies a bar line break at any stave where it is used. .next Style 5 causes two very short stub lines to be drawn, above and below the stave. It implies a bar line break at any stave where it is used. .endlist Specifying a double bar by inputting &`||`& overrides the stave or movement bar line style, which can also be overridden by inputting a digit immediately after the vertical bar character, to force a particular style. The following example shows the six available styles: .music "music33" 64 0,-20 centre Note that the &%breakbarlines%& directive can be used to specify breaks in all bar lines at particular staves when style 0 or 1 is used, and an individual bar line can be broken by using &%[breakbarline]%&. .subsection "Barnumberlevel" .index "&%barnumberlevel%&" .index "bar numbers" "level adjustment" This directive adjusts the level of bar numbers. It must be followed by a plus or a minus sign and a dimension. .code barnumberlevel +4 .endd This example puts all bar numbers four points higher up the page than they would otherwise have been. The default level is calculated using the size of the top stave of the system (excluding stave 0), but the adjustment value set by this directive is not scaled. .subsection "Barnumbers" SUBSECTheadbarno .index "&%barnumbers%&" .index "bar numbers" "requesting" .index "numbering bars" This directive specifies that bars are to be automatically numbered. &*Note*&: An incomplete bar at the start of a movement is counted for the purpose of bar numbering, unless it contains &%[nocount]%& (see section &<>& for an example). The &%barnumbers%& directive completely ignores any bars that contain &%[nocount]%&. Automatic bar numbering can be overridden for individual bars, and uncounted bars may be numbered, by means of the stave directive &%[barnumber]%& (&R; &<>&). Several different automatic numbering options are available, the general form of &%barnumbers%& being as follows: .display &`barnumbers`& <&'enclosure'&> <&'interval'&> <&'fontsize'&> <&'fontname'&> .endd The first argument, which is optional, must be one of the words `boxed', `roundboxed', or `ringed'. These specify that barnumbers are to appear inside rectangular boxes (with either mitred or round corners), or roughly circular rings. If none of these words are given, the numbers appear without any special identification. The second argument must be present, and is either the word `line' or a number. If `line' is given, a bar number is output over the first bar of every line of music except the first line of each movement. If a number is given, it specifies the interval between bar numbers. .code barnumbers boxed 10 .endd This example requests a bar number, enclosed in a box, every 10 bars. The third argument is optional; it specifies the size of the font. The default size is 10 points. .code barnumbers line 8.5 .endd This example numbers the bars at the start of each system, using a font of size 8.5 points. The final argument, which is optional, specifies the font (typeface). The default is roman. .code barnumbers 5 9/1.1 italic .endd This example requests bar numbers every 5 bars in a 9-point italic font, horizontally stretched by 1.1. .subsection "Beamendrests" .index "&%beamendrests%&" This directive, which has no arguments, causes PMW to include rests that are adjacent to beamed groups within the beams (&R; &<>&). .subsection "Beamflaglength" .index "&%beamflaglength%&" The length of short, straight note flags that are used with beams (for example, for a semiquaver beamed to a dotted quaver) can be set by this directive. The default is 5 points; it scales with the relative stave magnification. .subsection "Beamthickness" .index "&%beamthickness%&" .index "thickness of beams" This directive takes a single dimension as its argument; it sets the thickness of the lines drawn for beaming notes together. The default thickness is 1.8 points. On some printers and at some magnifications a better effect can be obtained by changing the thickness (normally by making it smaller). The thickness should not be set greater than 2.5 points. .subsection "Bottommargin and topmargin" SUBSECTbottommargin .index "&%bottommargin%&" .index "&%topmargin%&" .index "space" "at page top" .index "space" "at page bottom" The &%bottommargin%& and &%topmargin%& directives make it possible to reserve white space at the top or bottom of a page, within the overall page length, provided that there is room to do this after the systems have been fitted onto the page. These directives give some additional control over the vertical justification action described in section &<>&, once the pagination of a piece is determined. In each case, a single dimension is required. .code topmargin 20 bottommargin 5 .endd The values can be changed for an individual page by means of the &%[topmargin]%& and &%[bottommargin]%& directives. The default values for the margins are zero for the bottom margin and 10 points for the top margin. The use made of these values depends on the vertical justification mode for the page. The phrase `the contents of the page' below excludes any text that is defined as a footing or as a page heading, but includes start-of-movement headings. .ilist If the justify mode is `top' only, the contents of the page are moved down by the top margin, provided there is enough room on the page to do this. If not, the contents of the page are moved down as far as possible. The bottom margin value is ignored. .next If the justify mode is `bottom' only, the contents of the page are moved up by the bottom margin, provided there is enough room on the page to do this. If not, the contents of the page are moved up as far as possible. The top margin value is ignored. .next If the justify mode is both `top' and `bottom', the amount of space available for spreading the systems vertically is decreased by the sum of the top margin and the bottom margin, and the contents of the page are moved down by the top margin, provided there is enough spreading space available. If there is insufficient spreading space, it is divided &'pro rata'& between the top margin and the bottom margin, the systems are not spread at all, and the contents of the page are moved down by the adjusted top margin value. .next If the justify mode is neither `top' nor `bottom', both values are ignored. .endlist The effect of using these directives is to allow more of the page to be used when necessary, but to keep the systems nearer the centre of the page when there is a lot of space left over. .subsection "Brace and Bracket" .index "&%bracket%&" .index "&%brace%&" .index "joining signs" .index "staves" "joining signs" These two directives specify which staves are to be joined by brackets and/or braces. A bracket is traditionally used for groups of independent instruments or voices, whereas a brace is reserved for pairs of staves that apply to a single instrument, frequently a keyboard. (See also the &%thinbracket%& directive, which specifies another kind of bracket.) Each of these directives must be followed by a list of pairs of stave numbers, the members of each pair being separated by a minus sign, with the pairs themselves separated by spaces and/or commas. .code bracket 1-4,5-7 brace 8-9 .endd This example specifies that staves 1&--4 and 5&--7 are to be joined by brackets, and staves 8 and 9 are to be joined by a brace. In addition to these marks, the entire system is by default joined by a single vertical line at the left-hand side. (See the &%join%& and &%joindotted%& directives for ways of changing this.) The default action of PMW is to join all the staves with a single bracket. If no brackets of any kind are required, it is necessary to suppress this by including a &%bracket%& directive with no following list. If only a single stave is selected, for example, when a part is being extracted from a full score, these directives are ignored; no marks precede the clef on a single stave in this case. Occasionally a bracket is required for a single stave within a system; this may be specified by giving just one stave number. The effect can also occur if all but one of a bracketed group of staves is suspended. By contrast, a brace is never output for just one stave. .subsection "Bracestyle" .index "&%bracestyle%&" .index "shape of brace" .index "brace, shape of" The default brace shape curves a lot at the ends and almost touches the staves. An alternate form that does not curve so much at the ends can be selected by specifying &%bracestyle 1%&. The default can be reset in a subsequent movement by &%bracestyle 0%&. .subsection "Breakbarlines" .index "&%breakbarlines%&" .index "bar lines" "breaking" By default, PMW draws bar lines through all the staves of a system without a break. The &%breakbarlines%& directive specifies the staves after which there is to be a break in the bar lines. It is followed by a list of stave numbers. .code breakbarlines 3 6 8 .endd This example specifies that there is to be a vertical break in the bar lines after staves 3, 6 and 8. Two numbers separated by a minus sign can be used to specify breaks for a sequence of staves: .code breakbarlines 1-4 .endd &%Breakbarlines%& can also appear with no numbers after it at all; in this case there is a break after every stave. If &%breakbarlines%& is specified at the start of a new movement, it must list all the staves at which a break is required. If it is not given, breaks carry over from the previous movement. The stave directives &%[breakbarline]%& and &%[unbreakbarline]%& can be used to override the setting for individual barlines on a given stave. .subsection "Breakbarlinesx" .index "&%breakbarlinesx%&" .index "bar lines" "breaking" The &%breakbarlinesx%& directive acts exactly as &%breakbarlines%&, except that the final bar line of each system is &'not'& broken, but is drawn solid right through the system. .subsection "Breveledgerextra" .index "&%breveledgerextra%&" .index "breve" "extra ledger length" .index "ledger lines" "extra length for breve" This directive specifies the number of points of extra length that ledger lines for breves have at either end. The default value is 2.3. .subsection "Breverests" .index "&%breverests%&" .index "whole bar rests" .index "rests" "whole bar" .index "breve" "rest" By default, PMW uses a semibreve rest sign for a complete bar's rest, whatever the time signature. This header directive changes its behaviour so that the notation used for a whole bar rest depends on the number of crotchets in the bar. .ilist If there are 8 crotchets (4/2 or 2/1 or 2*C etc.), a breve rest sign is used. .next If there are 12 crotchets (6/2 or 12/4 or 2*3/2 etc.), a dotted breve rest sign is used. .next If there are 6 crotchets (3/2 or 2*3/4 etc.), a dotted semibreve rest sign is used. .next Otherwise a semibreve rest is used. .endlist .subsection "Caesurastyle" .index "&%caesurastyle%&" The default caesura `character' is two slanting lines through the top line of the stave. This directive specifies an alternative, single line, style if it is followed by the number 1. The default can be reset in a subsequent movement by specifying 0. .subsection "Check" .index "&%check%&" This directive, which has no arguments, can be used to override an occurrence of &%nocheck%& in a previous movement. .subsection "Checkdoublebars" .index "&%checkdoublebars%&" This directive, which has no arguments, can be used to override an occurrence of &%nocheckdoublebars%& in a previous movement. .subsection "Clefsize" .index "&%clefsize%&" .index "size" "of clefs" .index "clefs" "size" By default, new clefs that appear in the middle of lines of music are shown at the same size as clefs at the left-hand side. This directive is used to specify a different relative size for such clefs. .code Clefsize 0.7 .endd This example specifies that intermediate clefs are to be 0.7 times the normal size. .subsection "Clefstyle" SUBSECTclefstyle .index "&%clefstyle%&" .index "style of clef" .index "clefs" "style of" .index "clefs" "old-fashioned" Some early editions use &-[&{{zzz®}}&]-& for F-clefs and &{{¯}}& for C-clefs. The &%clefstyle%& directive makes it possible to reproduce this usage. It takes a single numerical argument, with the following values: .itable none 0 0 2 16 left 200 left .row &`0`& "all modern clefs" .row &`1`& "old-fashioned F clefs" .row &`2`& "old-fashioned C clefs" .row &`3`& "old-fashioned F and C clefs" .endtable The &-[&{{zzz®}}&]-& graphic is wider than the modern &-[&{{"}}&]-& shape. The layout of clefs is arranged so that two dots appear in the same place in both cases. This means that the old-fashioned clef extends further to the left than the modern one, and with PMW's default settings, it runs into stave joining lines and brackets. Therefore, when using old-fashioned F clefs, the &%startlinespacing%& directive should be used to insert at least 2 points of space before the clefs. .subsection "Clefwidths" .index "&%clefwidths%&" .index "key signatures" "alignment" When it is laying out a system, PMW inspects the clefs of all the staves, and positions the key signature immediately to the right of the widest clef. When the clefs change between systems, it can happen that all the key signatures on a page do not line up vertically, a feature that is sometimes required. Unfortunately, it is not easy to arrange for PMW to do this automatically, because it does the layout in a single pass through the input, and so does not know what clef arrangements lie ahead. However, the &%clefwidths%& directive is provided to enable this to be done manually. &%Clefwidths%& specifies the widths to be used for each type of clef when computing where to put key signatures. The directive is followed by up to five numbers, which specify the widths of the G-clef, F-clef, C-clef, H-clef, and no clef, respectively. The default settings are: .code clefwidths 13 16 15 15 0 .endd The values given may include fractions. In a piece which has treble and bass clefs in some systems and only treble clefs in others, a setting such as .code clefwidths 16 16 .endd would ensure that all the key signatures line up. .subsection "Codemultirests" SUBSECTcodemultirests .index "&%codemultirests%&" .index "rests" "repeated bars" .index "repeated rest bars" .index "many bars rest" "code signs" By default, when there are consecutive rest bars in all the staves that are selected, they are combined into a single bar and output as a `long rest' sign with the number of bars above. This is the modern convention; in older music, when the number of bars was between two and eight, coded signs were used instead, as shown in this example: .music "music54" 32 4,-20 If &%codemultirests%& is specified, PMW follows this older convention. Otherwise, multiple rests are all shown in the same way as the nine bars rest above. This directive can be cancelled in a subsequent movement by specifying &%nocodemultirests%&. .subsection "Copyzero" .index "&%copyzero%&" This directive makes it possible to have copies of stave zero over any number of staves. It is followed by a list of stave numbers, each of which may be optionally followed by a slash and a dimension. Details of the use of &%copyzero%& are given in section &<>&. .subsection "Cuegracesize" .index "&%cuegracesize%&" This directive, which takes a single number as an argument, specifies the font size to be used for grace notes in bars containing cue notes. See the &%[cue]%& directive for further details. .subsection "Cuesize" .index "&%cuesize%&" This directive, which takes a single number as an argument, specifies the font size to be used for cue notes. See the &%[cue]%& directive for further details. .subsection "Dotspacefactor" .index "&%dotspacefactor%&" .index "spacing" "dotted notes" .index "notes" "spacing for dotted" This directive specifies the factor by which the horizontal space after a dotted note is extended. The default value is 1.2. .code dotspacefactor 1.5 .endd In this example, the amount of space that follows a dotted note is 1.5 times the amount that would follow an undotted note of the same type. (Of course, when several staves are involved, the value is a minimum, because the notes on the other staves may cause additional spacing.) When a note is double-dotted, half as much space again is added. Thus in the default case a double-dotted note occupies 1.3 times the space of an undotted note. .subsection "Doublenotes" SUBSECTdoublenotes .index "&%doublenotes%&" .index "doubling note lengths" .index "notes" "doubling length" .index "time signatures" "modified" This directive, which applies to the current movement only, causes the length of each note to be doubled throughout the movement. It also affects the current time signature and any subsequent time signature settings as follows: .ilist &`C`& and &`A`& are turned into &`2*C`& and &`2*A`&, that is, they are shown as before, but the bar length is doubled. .next Other time signatures are changed by halving the denominator, unless the denominator is 1, in which case the numerator is doubled instead. For example, 4/4 becomes 4/2, but 4/1 becomes 8/1. .endlist An entire movement can be formatted in different ways by adding or removing &%doublenotes%&, without any other changes. If you do not want time signatures to be affected, use the &%[doublenotes]%& stave directive instead (&R; &<>&). Note length adjustment is cumulative; for example, if &%doublenotes%& appears twice, notelengths are quadrupled. See also &%halvenotes%& (&R; &<>&). .subsection "Draw" .index "&%draw%&" The &%draw%& directive is used for defining simple drawn shapes. A full description of this facility is given in chapter &<>&. .subsection "Drawbarlines" .index "&%drawbarlines%&" This directive, which takes no arguments, is permitted only in the first movement. It has exactly the same effect as the &%-drawbarlines%& command line option, which is to cause bar lines to be output as PostScript drawing commands instead of using characters in the music font. .subsection "Drawstavelines" .index "&%drawstavelines%&" This directive is permitted only in the first movement. It has exactly the same effect as the &%-drawstavelines%& command line option, which is to cause staves to be output as PostScript drawing commands instead of using characters in the music font. Like the command line option, &%drawstavelines%& can be followed by an integer argument, which specifies the thickness of the stave lines, in units of one tenth of a point. If this is not given, the default thickness is 0.3 points. .subsection "Endlinesluradjust and endlinetieadjust" .index "&%endlinesluradjust%&" .index "&%endlinetieadjust%&" .index "slurs" "line ending" .index "ties" "line ending" When a slur or a tie is continued onto the next line, the first part is normally drawn right up to the end of the first line. Some editors prefer it to stop a little short of this; &%endlinesluradjust%& and &%endlinetieadjust%& specify a dimension that is added to the right-hand end of such slurs and ties, respectively. Normally the value given is a small negative dimension. The value for ties also applies to glissandos. .subsection "Endlineslurstyle and endlinetiestyle" .index "&%endlineslurstyle%&" .index "&%endlinetiestyle%&" .index "slurs" "shape of continued" .index "ties" "shape of continued" Each part of a continued slur or tie is normally drawn as a complete slur, that is, with both ends tapering to a point, which is the most commonly found style. Some editors, however, prefer each portion to have the appearance of half a normal slur. &%Endlineslurstyle%& and &%endlinetiestyle%& specify this behaviour when style 1 is selected. The default is style 0. .subsection "Eps" .index "&%eps%&" .index "PostScript" "encapsulated" .index "encapsulated PostScript (EPS)" This directive, which takes no arguments, is permitted only in the first movement. It has exactly the same effect as the &%-eps%& command line option, which is to cause the output to be written as encapsulated PostScript, suitable for inclusion as an illustration in another document. .subsection "Extenderlevel" SECTextlevel .index "&%extenderlevel%&" .index "underlay" "extender level" .index "level" "of extender lines" The vertical level of extender lines, which are drawn when the last syllable of an underlaid or overlaid word extends over several notes, can be altered by this directive. It takes a positive or negative number as its argument. This specifies a number of points, positive numbers moving the lines up, and negative ones down. Extender lines are output using underscore characters, and the default level is just below the baseline of the text. .code extenderlevel 1 .endd This example moves extender lines up to near the baseline, and larger values can be used to place them nearer the middle of the text characters. .subsection "Fbsize" .index "&%fbsize%&" .index "figured bass" "size" By default, text that is specified as being part of a figured bass is output at the same default size as other textual items (10 points). This directive enables a different point size to be chosen for the figured bass text. .code fbsize 8.2 .endd This example specifies a somewhat smaller font. Individual figured bass text strings can have an explicit size specified (&R; &<>&). .subsection "Footing" .index "&%footing%&" .index "footing" "for first page" .index "page footing" "for first page" This directive has the same arguments as &%heading%&, and they have the same meaning &-- see &%heading%& below for a full description. Several footing lines may be specified. &%Footing%& sets up text for the foot of the first page only, and setting any footing line for a new movement automatically cancels all the footings that were in force for the previous movement. .code footing "Copyright \c) 1992 J.S. Bach" .endd Note the use of the escape sequence &`\c)`& in this example to obtain a copyright symbol. If a type size argument is not given, 8-point type is used. As is the case with headings, if the left-hand part of a footing (the text before the first &`|`& character) is longer than the line length, it is split up into as many lines as necessary, and all but the last are fully justified. Footing lines are placed below the bottom of the page, as specified by the &%pagelength%& directive, the first one being 20 points below. This is an absolute distance that does not change if the magnification is altered. However, the distance between footings and the sizes of fonts used are subject to magnification. As the first footing line on a page is always at the same fixed vertical position, the drawing facility (as described for &%heading%&) can be used for drawing fixed marks on the page. .index "crop marks" .index "page" "crop marks" .index "page" "borders" .index "borders for pages" For example, crop marks and borders on title pages can be drawn by this method. See the &%pagefooting%& and &%lastfooting%& directives for a means of setting up footings for pages other than the first. If no &%footing%& directive is present, text specified by &%pagefooting%& is output on the first page as well as on subsequent pages. If the movement is only one page long, &%footing%& overrides &%lastfooting%&, but &%lastfooting%& overrides &%pagefooting%&. .subsection "Footnotesep" .index "&%footnotesep%&" This directive specifies the amount of extra vertical white space to leave between multiple footnotes on the same page. The default is 4 points. See the &%[footnote]%& directive (&R; &<>&) for a full description of footnotes, which should not be confused with footings. .subsection "Footnotesize" .index "&%footnotesize%&" This directive sets the default type size used for footnotes. If it is not present, the default size is 9 points. Individual footnotes may specify different sizes. .subsection "Gracesize" .index "&%gracesize%&" .index "grace notes" The default size of the music font used for grace notes is 7 points. This directive allows a different size to be chosen. It must be followed by a number specifying a point size for the font. .subsection "Gracespacing" .index "&%gracespacing%&" .index "grace notes" .index "notes" "grace" By default, a grace note is placed 6 points to the left of the note that follows it. If there are two or more grace notes, the distance between them is also 6 points by default. This directive allows these values to be changed. It must be followed by either one or two arguments. If only one argument is given, its value is used for both dimensions. If two arguments are given, the first affects the distance between the last grace note and the following main note, and the second affects the distance between multiple grace notes. If the value of either argument is preceded by a plus or a minus sign, it indicates a change to the existing value. If no sign is present, the number specifies an absolute value. .code gracespacing +2 .endd This example increases both dimensions by 2 points. .code gracespacing -1 8 .endd This example reduces the space after the last grace note by one point, and sets the distance between multiple grace notes to 8 points. .subsection "Gracestyle" .index "&%gracestyle%&" .index "grace notes" .index "notes" "grace" When two or more staves are selected, and a note on one stave is preceded by one or more grace notes, the notes on the other staves that fall at the same point in the bar are output directly above or below the main note, leaving the grace notes sticking out to the left. This is, of course, the conventional practice in modern music. The &%gracestyle%& directive, which must be followed by 0 or 1, can be used to make PMW behave differently. When the style is set to 1, the notes that are not preceded by grace notes are aligned with the first grace note on other staves. In addition, if underlaid text is present, it is aligned to start at the first grace note instead of being centred on the main note. This facility can be used, in combination with setting the grace note size equal to the main note size, and using notes with no stems (see &%[noteheads]%&), for some forms of plainsong music. .index "plainsong" .subsection "Hairpinlinewidth" .index "&%hairpinlinewidth%&" .index "width" "of hairpin lines" This directive specifies the width of line used to draw crescendo and diminuendo hairpins. Its argument is a width in points. The default width of hairpin lines is 0.2 points. The number may be preceded by a plus or a minus sign, indicating a change to the existing value. If neither of these is present, the number specifies an absolute value. Making hairpin lines thicker may help alleviate jagged effects on long hairpins on high resolution printers. .subsection "Hairpinwidth" .index "&%hairpinwidth%&" .index "width" "of hairpin openings" This directive specifies the default vertical width of the open end of hairpins. Its argument is the number of points. .code hairpinwidth 5.6 .endd The number may be preceded by a plus or a minus sign, indicating a change to the existing value. If neither of these is present, the number specifies an absolute value. The default value for this parameter is 7 points. A different width may be set for any individual hairpin (&R; &<>&). .subsection "Halfflatstyle" .index "&%halfflatstyle%& .index "accidentals" "half sharps and flats" .index "flat, half" .index "half flat" This directive selects which character to use for a half flat. It must be followed by one of the numbers 0 (the default) or 1. There is an illustration of the different styles in section &<>&. .subsection "Halfsharpstyle" .index "&%halfsharpstyle%& .index "accidentals" "half sharps and flats" .index "sharp, half" .index "half sharp" This directive selects which character to use for a half sharp. It must be followed by one of the numbers 0 (the default) or 1. There is an illustration of the different styles in section &<>&. .subsection "Halvenotes" SUBSECThalvenotes .index "&%halvenotes%&" .index "halving note lengths" .index "notes" "halving length" .index "time signatures" "modified" This directive, which applies to the current movement only, causes the length of each note to be halved throughout the movement. It also affects the current time signature and any subsequent time signature settings as follows: .ilist &`C`& and &`A`& cannot be halved. The signatures &`2*C`& and &`2*A`& can be halved, and turn into &`C`& and &`A`& respectively. .next Other time signatures are changed by doubling the denominator. For example, 4/4 becomes 4/8. .endlist An entire movement can be formatted in different ways by adding or removing &%halvenotes%& without any other changes. If you do not want time signatures to be affected, use the &%[halvenotes]%& stave directive instead (&R; &<>&). Note length adjustment is cumulative; for example, if &%halvenotes%& appears twice, notelengths are divided by four. See also &%doublenotes%& (&R; &<>&). .subsection "Heading" SUBSECTheading .index "&%heading%&" .index "heading" "for first page" .index "page heading" "for first page" The &%heading%& directive defines a line of text as a heading for the piece or movement. If no headings are specified, no space is left at the top of the first page. You can specify any number of headings, which may appear in two different forms. In the more common form, the keyword is followed by up to three arguments: .display &`heading`& <&'fontsize'&> &`"`&<&'text'&>&`"`& <&'depth'&> .endd .index "heading" "size of type" The first argument is a number, and is optional. If present, it defines the font size for this heading, in printer's points. As for all font size sizes, an aspect ratio and/or shear angle may be specified as well as the basic size. If this argument is omitted, default sizes are used. For headings at the start of the piece the default sizes are 17 points for the first heading line, 12 points for the second, 10 points for the third, and 8 points for the fourth and subsequent heading lines. .index "movement" "heading sizes" For headings at the start of a new movement the default sizes are 12 points for the first heading line, 10 points for the second, and 8 points for the third and subsequent heading lines. The second argument is a string in double-quotes, and must be present. It defines the contents of the heading. .index "| (vertical bar) in strings" The vertical bar character has a special meaning in this text &-- it splits it up into left-hand, centred and right-hand parts. Characters to the left of the first vertical bar are output at the left of the page; characters between the first and second vertical bars are centred on the page; the rest of the text is output at the right of the page. .index "paragraphs, in headings" .index "heading" "paragraph" If the left-hand part of the text is longer than the line length, it is split up into as many lines as necessary. All but the last line are fully justified, by expanding any spaces they contain. The last line is also justified if it is nearly as long as the line length. Justification does not take place when there are no spaces in the text. This facility makes it possible to output paragraphs of introductory text on title pages or at the start of pieces or movements. Note, however, that PMW does not set out to be a fully-fledged wordprocessor. Any special characters required in the text have to be coded explicitly (&R; &<>&); they are not provided automatically. The paragraph mechanism should not be used with text that contains variable data such as the escape sequence for the current page number, because the splitting and justification happens only once, when the directive is read. &*Note*&: heading strings do not need to be input on a single line; line breaks in the string are treated as spaces. .index "heading" "spacing" .index "spacing" "heading" The third argument of &%heading%& is a number and is optional. If present, it specifies the number of points of vertical space to leave after the heading. It may be zero; this can be useful for headings of different sizes on different parts of the same line. It may also be negative; this can be used with an empty text string to make PMW start higher up the page than it normally does. If the argument is omitted, the amount of space left after the heading line is equal to the point size of the text. For the last heading line, the space specified (or defaulted) is the space between the base line of the heading text and the top of the first stave of music. When a heading string is split up by PMW into several lines, the spacing value given (or defaulted) is used for the space after each line in the paragraph. To leave space between paragraphs, a heading containing an empty string can be used. Here are some examples of this form of the &%heading%& directive; the third one outputs nothing, but leaves 20 points of space. .code Heading "|Partita" Heading 11 "Moderato||J.S. Bach" 14 Heading "" 20 .endd .index "drawing facility" "headings and footings" .index "rule, in headings and footings" The second form of the &%heading%& directive causes a drawing subroutine to be obeyed at the next heading position (see chapter &<>& for more details of drawings). The syntax is: .display &`heading draw`& <&'argument(s)'&> <&'name'&> <&'optional space'&> .endd Arguments are optional. The definition of the drawing must precede such a heading line in the input file. If no space is given, no vertical movement is made following the drawing. The origin of the coordinate system is set at the left-hand side, at the level of the next heading line. For example, to draw a line right across the page (a horizontal rule) after a heading: .code draw rule 0 0 moveto 0 linelength rlineto 1 setlinewidth stroke enddraw heading "|Some Text" 0 heading draw rule 20 .endd The first heading or footing line on a page is always at the same fixed vertical position, so it can be used for drawing fixed marks on the page. .index "crop marks" .index "page" "crop marks" .index "page" "borders" .index "borders for pages" For example, crop marks and borders on title pages can be drawn by this method. The file &_cropmarks_& in the &_contrib_& directory in the PMW distribution contains an example of this. See the &%pageheading%& directive for a means of setting up headings for pages other than the first. .subsection "Hyphenstring" .index "&%hyphenstring%&" .index "hyphen" "in underlay" When PMW is outputting rows of hyphens between underlaid syllables, it normally uses single hyphen characters. This directive can be used to change this. The argument is specified as a string for generality, but normally only a single character would be used. For example, longer lines than the default can be obtained by the use of en-dash characters instead of hyphens. These are specified in strings by a backslash escape and two successive minus signs: .code hyphenstring "\--" .endd See section &<>& for other facilities that can be used to control exactly what appears between underlaid syllables. .subsection "Hyphenthreshold" .index "&%hyphenthreshold%&" .index "hyphen" "multiple in underlay" PMW automatically inserts hyphens between syllables of underlaid text. When the distance between the syllables is less than the `hyphen threshold', a single hyphen is output, centred in the space (unless the syllables are so very close together that there is no room for even one hyphen). If the space is greater than the threshold, a number of hyphens are output, the distance between them being the threshold value divided by three. The default value for the hyphen threshold is 50 points. The number following this directive may be preceded by a plus or a minus sign, indicating a change to the existing value. If neither of these is present, the number specifies an absolute value. .subsection "IncPMWfont aka IncludePMWfont" .index "&%incpmwfont%&" This directive, which takes no arguments, is permitted only in the first movement. It has exactly the same effect as the &%-incPMWfont%& command line option, which is to include the PostScript Type 1 version of the PMW-Music font and/or the PMW-Alpha font in every output file that needs them. .subsection "Join and joindotted" .index "&%join%&" .index "&%joindotted%&" .index "joining signs" .index "staves" "joining signs" The syntax of these directives is the same as for &%bracket%& and &%brace%&. They control the joining line at the left-hand edge of systems. By default a solid line is drawn through all staves; these directives can be used to cause breaks in the line and/or to output a dotted line. .code join 1-2, 3-4 .endd This example causes solid lines to be drawn joining staves 1 and 2, and 3 and 4, leaving a gap between staves 2 and 3. .code join 1,2,3,4 .endd This example causes solid lines to be drawn at the ends of each stave, but gaps to be left between the staves. &%Join%& and &%joindotted%& can be used together. .code joindotted 1-2 join 1,2 .endd This example causes a dotted line to be used to join staves 1 and 2, and solid lines to overprint this at the ends of each stave, leaving the dotted line between them. .subsection "Justify" SUBSECTjustify .index "&%justify%&" .index "horizontal justification" .index "vertical justification" &%Justify%& sets the horizontal and vertical justification parameters. It can be followed by one or more of the words `left', `right', `top', `bottom', or `all'. Each occurrence of the &%justify%& header directive completely re-specifies the justification parameters, in contrast to the stave directive &%[justify]%&. An appearance of &%justify%& that is not followed by one of the above words requests no justification in any direction. The default value for justification is `all', that is, complete vertical and horizontal justification. The effect of the horizontal parameters is as follows: .ilist When `left' is specified without `right', each music system starts at the left-hand side of the page, but is not stretched out to the right-hand side. This is not normal for performing music, but is useful when creating examples for inclusion in other documents. .next When `right' is specified without `left', each music system ends at the right-hand side, but is not stretched to start at the left. .next When both `left' and `right' are specified (the default), each music system begins at the left-hand side of the page, and is stretched so that it ends at the right-hand side, unless it covers less than half the linelength, in which case the behaviour is as if `right' were not specified. .next When neither `left' nor `right' is specified, each music system is centred horizontally on the page. The width of page used for this purpose can be adjusted by the &%sheetwidth%& directive. This is another style that is useful for examples and illustrations. .endlist The effect of the vertical justification parameters exactly parallels that of the horizontal ones. .ilist When `top' is specified without `bottom', systems are output starting at the top of the page, using the system gaps specified in the input. .next When `bottom' is specified without `top' the systems are again output with the gaps specified, but this time they are so arranged that the final stave on the page is exactly at the page depth. This form is useful when generating PostScript files for inclusion in other PostScript documents. .next When both `top' and `bottom' are specified, the first system is output at the top of the page. If there is more than one system on the page, and if more than half the page depth has been used, additional space is inserted between the systems so that the final stave is exactly at the page depth, except that there is a maximum amount of space that PMW is prepared to insert between any two systems. .next When neither `top' nor `bottom' is specified, the systems are output with the gaps specified, but the set of systems is centred vertically on the page. .endlist The maximum amount of vertical space that PMW is prepared to insert between any two systems is controlled by a header directive called &%maxvertjustify%&. The default value is 60 points, which means that if the default system gap of 44 points is in force, the furthest apart any two systems can be is 104 points. .index "page" "forcing stave to bottom" To ensure that the bottom stave is always at the bottom of the page under all circumstances, specify a large value for &%maxvertjustify%&. In its information output (&R; &<>&), after it has listed the layout of bars on a page, PMW outputs the amount of space left. When vertical justification is happening, it is this amount of space that is inserted between systems or at the top of the page. When space is being inserted between systems, the same amount is inserted between each pair of systems. Page headings, footings, and page footings are not affected by vertical justification. However, if `top' is not specified, start of movement headings are moved down the page. If a new movement starts in the middle of a page that is stretched vertically, additional space is inserted before the start of the movement, that is, before its headings (if any), but not between its headings and its first stave. The justification parameters persist from one movement to the next, but may be reset by the appearance of &%justify%& at the start of a new movement. They can also be changed by the appearance of the stave directive &%[justify]%&. Unlike the header directive, it specifies &'changes'& in the justification parameters only, and its effect lasts only until the end of the current movement. See also the &%topmargin%& and &%bottommargin%& directives for further parameters that control the layout of pages. .subsection "Key" .index "&%key%&" .index "key signatures" "specifying" This directive sets a key signature for a movement. It does not carry over to any subsequent movements. Naturally, it is also possible to set keys on individual staves and to change them in the middle of the music. Setting the key in the header is a convenient shorthand. The single argument to the directive is a key signature in the format described in section &<>&. .code key A$ key BM .endd If no key signature is given for a movement, the default is C major. .subsection "Keysinglebar and keydoublebar" .index "&%keysinglebar%&" .index "&%keydoublebar%&" .index "bar lines" "double" .index "bar lines" "key change" .index "double bar lines" "at key change" .index "key signatures" "bar line at change" PMW puts a double bar line before a change of key by default. The &%keysinglebar%& directive can be used to request a single bar line instead; &%keydoublebar%& can be used to reset the default for a new movement. .subsection "Keytranspose" SUBSECTkeytranspose .index "&%keytranspose%& .index "custom keys" "transposition" When transposing a piece, for each transposition amount, PMW needs to know two things: the new key and the number of letter changes for each note. For the standard keys this information is built in. For example, if you transpose the key of B up by a semitone, the result is C, and every note has its letter name increased by one, whereas if the transposition is down a semitone, the new key is B♭ with no change of letter. For custom keys defined by the &%makekey%& directive (&R; &<>&) the transposition information must be explicitly supplied in one or more &%keytranspose%& directives. This directive is followed by the name of a key and then any number of triples that specify a transposition amount, a new key, and the number of letter changes. An equals sign and a slash are used as separators. For example: .code keytranspose X1 2=X2/1 -1=X3/0 .endd This example specifies that if the custom key X1 is transposed up by 2 semitones, the new key is X2 and each note's letter name is to be increased by 1 (with G wrapping round to A, of course); if the transposition is down by one semitone, the new key is X3, with no change of letter. Any number of triples may be present, or the information can be given in separate directives. If a transposition is specified more than once, the last value is used. A transposition of zero may be given. Transpositions whose absolute value is greater than 11 are adjusted to be in the range -11 to +11. The &%keytranspose%& directive is not confined to custom keys. It can be used with standard keys in order to achieve special effects such as re-setting a part with a key signature using explicit accidentals and no key signature, as in this example: .code key E keytranspose E 0=N/0 transpose 0 .endd A hard error occurs if a note cannot be transposed in the manner specified. .subsection "Keywarn" .index "&%keywarn%&" This directive can be used at the start of a new movement to cancel the effect of &%nokeywarn%& in the previous movement. .subsection "Landscape" .index "&%landscape%&" This directive is permitted only in the first movement. It causes all the output to be in `landscape' format, that is, with the long side of the page horizontal. The value of &%linelength%& is interchanged with the value of &%pagelength%&, and likewise the value of &%sheetwidth%& is interchanged with &%sheetdepth%&. Subsequent directives affect the new values. The &%landscape%& directive should appear after any uses of the &%sheetdepth%&, &%sheetdepth%&, or &%sheetsize%& directives. .subsection "Lastfooting" .index "&%lastfooting%&" .index "footing" "for last page" .index "page footing" "for last page" This directive specifies footing material for the last page of music, replacing any text specified with &%footing%& or &%pagefooting%& for that page. The arguments are exactly as for &%heading%& or &%footing%&, but long strings are not automatically split up into multiple lines. &%Lastfooting%& can also be used to specify a special footing for the last page of an individual movement in a piece that has several movements. For details, seen the &%[newmovement]%& directive. .subsection "Layout" SUBSECTlayout .index "&%layout%&" .index "page layout, forcing" The &%[newline]%& and &%[newpage]%& directives, together with &%notespacing%&, are useful for occasional overriding of PMW's default layout choices. However, if a particular layout for an entire piece is required, achieving it with &%[newline]%&, &%[newpage]%& and &%notespacing%& can be tedious. The &%layout%& directive makes it possible to specify exactly how many bars are to be placed in each system, and how many systems are to fit on each page. This directive applies only to the movement in which it appears. If you use &%layout%&, changes made by &%notespacing%& will not affect the layout. It its simplest form, &%layout%& is followed by a list of numbers, separated by commas or white space. If the list is long, it can be split into several lines of input (unlike lists of staves in directives such as &%breakbarlines%&). Each number in the list specifies the number of bars in a system. If there are more systems than numbers, the list is restarted from the beginning. .code layout 4 .endd This example specifies that every system (except possibly the last one) is to contain exactly four bars. .index "semicolon" "in layout list" .index "; (semicolon)" "in layout list" If page breaks are required at particular points, they are specified by a semicolon in the layout list. .code layout 4, 3; 5, 4, 4; .endd This example specifies two pages, the first containing two systems and the second three systems. If too many systems are specified for a page, PMW inserts a page break of its own. If the width of the bars specified for a system is greater than the linelength, they are compressed until they fit; if too many are specified the result may be very cramped. If the same item or sequence of items is repeated in a layout list, it can be enclosed in parentheses and preceded by a repeat count. Parentheses can be nested. .code layout 3(4, 5(6);) .endd This example defines three pages, each consisting of one system of four bars followed by five systems of six bars. Note the difference between the following two examples: .code layout 2(4,3;) layout 2(4,3); .endd The first specifies two pages, each containing two systems; the second specifies one page containing four systems. .subsection "Ledgerstyle" .index "ledger lines" "thicker style" The &%ledgerstyle%& directive, which must be followed by 0 or 1, can be used to choose between thinner or a thicker ledger lines. The default is 0, which selects the thinner line; on some printers this may look too insignificant, which is why the thicker style is provided. .subsection "Leftmargin" .index "&%leftmargin%&" Normally, PMW centres page images horizontally on the paper. The width of paper used for this purpose can be specified by &%sheetwidth%&. The &%leftmargin%& directive can be used to specify a particular left-hand margin instead of centring. .subsection "Linelength and pagelength" SUBSECTlinepagelen .index "&%linelength%&" .index "&%pagelength%&" .index "line length" .index "length" "of line" .index "page length" .index "length" "of page" The &%linelength%& and &%pagelength%& directives specify the size of the page images that PMW produces; each takes a single argument which is a dimension in points. The number may be preceded by a plus or a minus sign, indicating a change to the existing value. If neither of these is present, the number specifies an absolute value. The default line length is 480 points and the default page length is 720 points. These values leave generous margins all round on A4 paper. These two dimensions, together with &%sheetwidth%& and &%sheetdepth%&, are the only ones that are not affected by magnification. They define that part of the page on which output is to occur, in absolute terms. .subsection "Longrestfont" .index "&%longrestfont%&" .index "fonts" "long rest numbers" The font used for the number that appears above a multi-bar rest sign can be set by means of the this directive. Its arguments are an optional size followed by a font name. .code longrestfont 13 bolditalic .endd The default is a 10-point roman font. .subsection "Magnification" .index "&%magnification%&" .index "magnification" This directive is permitted only in the first movement. It causes all the output to be magnified or reduced by a specified factor, which can be greater or less than 1.0. All dimensions in the PMW system are subject to the magnification factor, &'except'& the line length, page length, sheet width, and sheet depth, which are absolute values, and which are therefore not affected by magnification. .code magnification 1.5 .endd This example causes the output to be one and a half times as large as the default size. A magnification of around 1.2 is good for individual instrumental parts. .code magnification 0.5 .endd This example reduces the output to half size. Reduction is helpful for full scores. Magnification or reduction can sometimes be helpful in fitting a piece onto the paper, though it is more usual to use other directives such as &%notespacing%& or &%layout%& for this purpose. .subsection "Makekey" SUBSECTmakekey SUBSECTmakekey .index "&%makekey%&" .index "custom keys" "defining" .index "key signatures" "custom" .index "key signatures" "non-standard forms" .index "accidentals" "in key signatures" This directive is used to define a custom key signature. Its first argument is the name of one of the custom keys &`X1`& to &`X10`&. This is followed by a definition of where accidentals exist for this key. Each accidental is specified by an accidental code followed immediately by a number in the range 0 to 9. The number specifies the position of the accidental for the treble clef. Zero is the bottom line of the stave, one is the first space, two is the next line, and so on. Optional spaces may appear between each definition. For example: .code makekey X3 #2 $6 .endd This example defines a (strange) key in which Gs are sharpened and Ds are flattened. The accidentals are output from left to right in the order of definition. Although the definition relates to the treble clef, custom keys can be used with any clef. For other clefs, the accidental positions are first raised or lowered as appropriate, then if any accidental ends up too high or too low, it is lowered or raised by an octave. If the result is not what is wanted, the &%printkey%& directive can be used to vary what is output for specific clefs. .index "half sharp" "in key signatures" .index "half flat" "in key signatures" .index "accidentals" "half sharps and flats" .index "sharp, half" .index "half sharp" .index "flat, half" .index "half flat" Any accidental can be specified, including half sharps and flats (&`#-`& and &`$-`&) and even double accidentals or naturals. However, half accidentals are not supported in MIDI output. Custom keys can be redefined in multiple-movement pieces. They can be transposed, but only if you supply additional information in the form of one or more &%keytranspose%& directives (&R; &<>&). If you use a custom key without defining it, it behaves as C major. The &%makekey%& directive was added to PMW long after &%printkey%& (&R; &<>&), which addresses some of the same issues. The differences are as follows: .ilist &%printkey%& affects only what is output for a specific key signature and clef. The key itself is unaffected and can be transposed. .next To use &%printkey%& you need to understand a bit about PMW's music font and how to `program' character positioning. .next &%makekey%& constructs an actual key which can be used with any clef, and which affects MIDI output (though half accidentals are not supported by MIDI). .next Using &%makekey%& is simpler than &%printkey%& but you have to supply additional information if you want to transpose a custom key. .endlist .subsection "Maxbeamslope" .index "&%maxbeamslope%&" .index "beaming" "slope" .index "slope of beams" This directive can be used to limit the maximum slope of beams. It takes two numbers as arguments. These are the maximum slopes of beams containing two notes and beams containing more than two notes, respectively. The default setting is: .code maxbeamslope 0.31 0.33 .endd The &%[beamslope]%& directive, which sets an explicit slope for a given beam, is not limited by these maxima. They apply only when PMW is choosing its own slope. .subsection "Maxvertjustify" .index "&%maxvertjustify%&" This directive is permitted only in the first movement. It controls the maximum amount of vertical space that PMW is prepared to insert between any two systems when vertically justifying a page. The default value is 60 points, which means that if the default system gap is in force, the furthest apart any two systems can be is 104 points. .index "page" "forcing stave to bottom" To ensure that the bottom stave is always at the bottom of the page under all circumstances, specify a large value for &%maxvertjustify%&. .subsection "Midichannel" SUBSECTmidichannel .index "&%midichannel%&" .index "MIDI" "channel allocation" This directive allocates a MIDI voice and/or one or more PMW staves to a MIDI channel, and sets a relative volume for the channel (see also &%midivolume%&). This information is used only when PMW writes a MIDI output file. The values set by &%midichannel%& are carried over from one movement to the next, but it can appear in any movement to alter the settings. There can be up to four arguments, of which only the first, the channel number, is mandatory. There are also &%[midichannel]%& and &%[midivoice]%& stave directives that can be used to change the settings part-way through a movement. To allocate a particular MIDI voice (also known as a `program' or a `patch' in MIDI-speak) to a MIDI channel, the voice number preceded by a sharp character, or the voice name, is given in quotes after the channel number. If a channel's voice is specified more than once, the last specification overrides the earlier ones. .code midichannel 1 "#57" midichannel 2 "church organ" .endd There are sixteen MIDI channels, numbered 1&--16 (but see the next section for the special properties of channel 10). There are 128 possible MIDI voices; the first form of the directive, where the string starts with #, specifies the voice by a number in the range 1&--128 (but note that it must still be supplied as a string in quotes). This numbering is in accordance with the &'General MIDI'& specification, which a number of manufacturers follow. Some MIDI instruments use the numbers 0&--127 when setting voices manually; for these, the manually set number of any given instrument is one less than the corresponding &'General MIDI'& number. The second form of voice identification uses an index file to translate a name to a voice number. The file is installed in the PMW &_share_& directory and is called &_MIDIvoices_&. You can edit it to change or add names. The version supplied contains voice names taken from the &'General MIDI'& specification. Because there is some variation in some of the names, you can have more than one name for any given voice number, and there are some duplicates in the supplied file. All staves are initially allocated to MIDI channel 1. This channel allocation can be changed by giving a list of staves to the &%midichannel%& directive, with or without a voice name. .code midichannel 2 1,3,4-7 midichannel 4 "piano" 8-11 .endd If no voice name is given, but a voice was set in a previous movement, that voice is allocated when the current movement is played. If no voice is given in the first movement, no voice allocation setting is transmitted on the channel, which allows the voicing to be set manually on the instrument (if it has that ability). Having set a voice in one movement, you can request `no voice setting' in a subsequent movement by specifying an empty quoted string. .index "MIDI" "relative channel volume" In some MIDI multi-timbral instruments, the different voices are not balanced with regard to volume, so if the same values are used in the &%midivolume%& or &%[midivolume]%& directives for different voices, the resulting volumes do not correspond. To help balance voices, a volume value in the range 0&--15 may be given after the voice name, preceded by a slash. .code midichannel 1 "trumpet"/12 9 .endd This example has the effect of reducing the volume of notes played via channel 1 by 12/15. This applies to all staves playing via the channel (in this example, just stave 9). The actual volume used for any MIDI note is 127 multiplied by the channel volume and the stave volume and divided by 225. .subsection "Midichannel settings for untuned percussion" .index "untuned percussion" .index "MIDI" "untuned percussion" Before describing the final argument of the &%midichannel%& directive, it is necessary to discuss MIDI's handling of untuned percussion. A single `voice' can handle a large number of different untuned percussion instruments, by using the `pitch' of each note to determine which instrument should sound. For example, C might sound a bass drum and D a snare drum. Electronic keyboards often have a `keyboard percussion' mode in which the keys correspond to percussion sounds in this way. For some reason, this multiple instrument has not been defined as one of the 128 &'General MIDI'& instruments. Instead, the &'General MIDI'& specification states that MIDI channel 10 is to be used for this kind of percussion. On MIDI instruments that implement this, it is not possible to allocate any other voice to channel 10. The final argument of the &%midichannel%& directive is used to select an untuned percussion instrument. It must follow a list of staves (typically just one stave) and consists of a string in quotes that specifies either the MIDI pitch number, or the instrument name. Note that the other string argument (the instrument name for a `normal' channel) is placed immediately after the channel number, whereas this string argument comes last. .code midichannel 10 5 "#60" midichannel 10 6 "triangle" .endd These examples specify the use of pitch 60 for stave 5 and the pitch corresponding to a triangle for stave 6, both on channel 10. As for MIDI voices, if the string starts with #, it specifies the pitch by number; otherwise the file &_MIDIperc_& inside the PMW &_share_& directory is searched to translate the name to a number. The supplied file contains the name allocation that appears in the &'General MIDI'& specification. The effect of supplying this argument is to force all notes on the stave to be played at the same pitch, independent of the pitch that is given for display. A percussion stave could therefore be set up thus: .code midichannel 10 4 "cowbell" [stave 4/1 "Cowbell" hclef 1] b r b r | ... .endd After the stave number, &`/1`& defines a stave containing only one line. The notes are specified as Bs so that they appear on the stave line, but they are played at the pitch that activates the cowbell sound, provided channel 10 is a &'General Midi'& percussion channel. For an alternative way of handling untuned percussion, see the &%[printpitch]%& directive (&R; &<>&). .subsection "Midifornotesoff" .index "&%midifornotesoff%&" .index "MIDI" "for invisible notes" Notes that are suppressed in by the use of &%[notes off]%& are by default also omitted from MIDI output. The header directive &%midifornotesoff%& alters PMW's behaviour so that &%[notes off]%& no longer affects MIDI output. .subsection "Midistart" .index "&%midistart%&" .index "MIDI" "initializing" The &%midistart%& directive is followed by a list of numbers in the range 0&--255. When a MIDI file is being created, the MIDI data defined by these numbers is written to the file after PMW's normal initialization. Each number defines a byte of MIDI data, and the whole sequence should consist of a sequence of MIDI events that are to be obeyed at time zero when the file is played. You must not attempt to supply any time information. PMW automatically arranges for all these MIDI events to be specified at time zero by inserting a zero byte before any value that is greater than 127. This feature can be used by those familiar with the MIDI coding to do things like changing the stereo position of the channels. .code midistart 176 10 0 177 10 40 178 10 80 179 10 120 .endd This example pans channels 1&--4 evenly from full left (0) to nearly full right (120). The &%midistart%& setting is carried forward from the movement in which it is specified to all subsequent movements that do not have their own setting. .subsection "Miditempo" .index "&%miditempo%&" .index "MIDI" "tempo setting" .index "tempo for playing" This directive is used to specify the tempo that is used when PMW creates a MIDI output file. It must have at least one argument, which is the tempo to be used at the start of the movement. The tempo is always specified in crotchets per minute, whatever the time signature. The initial setting can optionally be followed by pairs of numbers separated by slashes, to specify changes of tempo at particular bars. .code miditempo 100 24/120 60/90 .endd This example specifies that the initial tempo is to be 100, but at the start of bar 24 it changes to 120, and at the start of bar 60 it changes to 90. Bar numbers are given in the standard PMW style; if there are uncounted bars then decimal fractions can be used to refer to them (&R; &<>&). If no &%miditempo%& directive is present, a default tempo of 120 is used. If there is more than one movement, the initial tempo specified in a &%miditempo%& directive carries over to the next movement (unless it contains its own &%miditempo%& directive, of course), but tempo changes within a movement do not. However, PMW cannot write more than one movement at a time to a MIDI output file (see the &%-midimovement%& command line argument in chapter &<>&). .subsection "Miditranspose" .index "&%miditranspose%&" .index "MIDI" "transposing parts" .index "transposing parts" .index "transposing instruments" .index "transposition" "for playing" By default, PMW plays music exactly as written, except for recognizing transposing clefs. If the piece contains a part for a transposing instrument it will not play correctly. The &%miditranspose%& directive is provided to help with this. It is used to specify that particular staves are to be played at a pitch different to that at which they are shown on the stave. &%Miditranspose%& is followed by pairs of numbers separated by slashes; the first number of each pair is a stave number and the second is a transposition in semitones. .code miditranspose 1/-3 .endd This example specifies that stave 1 is to be played a minor third lower than written. There is also a &%[miditranspose]%& stave directive that can be used to change the transposition part-way through a stave. .subsection "Midivolume" SUBSECTmidivolume .index "&%midivolume%&" .index "MIDI" "volume" .index "volume for playing" The &%midivolume%& directive is used to set different relative volumes for different staves. The value for a relative volume lies between 0 (silent) and 15 (maximum volume). By default, all staves are set at the maximum volume. A single number sets the volume for all staves; this can be followed by pairs of numbers separated by slashes, to specify relative volumes for individual staves. .code midivolume 6 2/15 .endd This example specifies that stave 2 is to be played at maximum volume, whereas all other staves are to be played at volume 6. See also the &%[midivolume]%& stave directive, and &%midichannel%&, which can set a per-channel volume. The final volume used for any MIDI note is 127 multiplied by the channel volume and the stave volume and divided by 225. .subsection "Midkeyspacing" .index "&%midkeyspacing%&" .index "space" "for mid-line signatures" When a mid-line bar starts with a key signature, the &%startlinespacing%& data is used for any time signature that follows, but not for the key signature itself. Instead, &%midkeyspacing%& controls the position of such key signatures. It takes a single dimension as its argument; a positive value moves the signature further away from the preceding bar line. .subsection "Midtimespacing" .index "&%midtimespacing%&" When a mid-line bar starts with a time signature, its position can be controlled by the &%midtimespacing%& directive, which takes a single dimension as its argument. A positive value moves the signature further away from the preceding bar line. .subsection "Musicfont" .index "&%musicfont%&" .index "fonts" "alternative music" This directive is permitted only in the first movement. It specifies, as a string in quotes, the name of the music font to be used by PMW; its argument is a text string. The facility is intended for accessing new or alternative versions of the font. The default music font is PMW-Music. .subsection "Nobeamendrests" .index "&%nobeamendrests%&" This directive, which has no arguments, can be used to cancel the effect of &%beamendrests%& in a previous movement. .subsection "Nocheck" .index "&%nocheck%&" .index "checking bar lengths" This directive, which has no arguments, instructs PMW not to check that the notes in each bar agree with the time signature. It is also possible to suppress this check for individual bars (&R; &<>&). .subsection "Nocheckdoublebars" .index "&%nocheckdoublebars%&" .index "checking bar lengths" .index "bar lines" "double" .index "double bar lines" "suppressing bar length check" This directive, which has no arguments, instructs PMW not to check that the notes in bars that begin or end with a double bar line agree with the time signature. .subsection "Nocodemultirests" .index "&%nocodemultirests%&" This directive cancels the effect of &%codemultirests%& in a previous movement. .subsection "Nokerning" .index "&%nokerning%&" This directive is permitted only in the first movement. It disables the use of kerning for text strings (&R; &<>&). .subsection "Nokeywarn" .index "&%nokeywarn%&" .index "key signatures" "suppressing warning" .index "warning signatures" By default, when there is a key signature change at the start of a new system, PMW also puts the new key signature at the end of the previous system, as is conventional in most music. The header directive &%nokeywarn%& suppresses these warning key signatures. Individual occurrences can be suppressed by an option on the &%[key]%& stave directive that changes the key signature. .subsection "Nosluroverwarnings" .index "&%nosluroverwarnings%&" .index "warning signatures" This directive, which has no arguments, can be used to cancel the effect of &%sluroverwarnings%& in a previous movement. .subsection "Nospreadunderlay" .index "&%nospreadunderlay%&" .index "underlay" "suppressing note spreading" By default, PMW inserts additional space between notes if underlaid or overlaid syllables would otherwise overprint each other. This directive disables this facility for both underlaid and overlaid text. .subsection "Notespacing" .index "&%notespacing%&" .index "notes" "spacing" .index "spacing" "notes" PMW contains a table of the minimum amount of horizontal space that follows each kind of note; so much for a breve, so much for a semibreve, so much for a minim, and so on. Systems are made up using these spacings, until a bar is encountered which would make the system longer than the specified line length. The previous bars are then stretched to fill the line if horizontal justification is enabled. The &%notespacing%& directive allows the table to be altered. It must be followed by eight numbers that define the space (in points) that must follow breves, semibreves, minims, crotchets, quavers, semiquavers, demi-semiquavers and hemi-demi-semiquavers respectively. The values in the default table are those of the following example: .code notespacing 30 30 22 16 12 10 10 10 .endd Internally, note spacings are held to an accuracy of 0.001 points. An alternative form of this directive specifies a multiplicative factor for each value in the table. This is requested by following the directive by an asterisk and a single number, or by two numbers separated by a slash. .code notespacing *1.5 notespacing *3/2 .endd Each of these examples specifies that the values in the note spacing table are to be multiplied by 1.5. If more than one multiplicative &%notespacing%& is present, their effect is cumulative, but a multiplicative &%notespacing%& is overridden if it is followed by an absolute setting. At the start of a new movement, the absolute values that were current at the start of the previous movement, before any multiplications, are re-instated. Changing the note spacing is one way of controlling the assignment of bars to systems and systems to pages. For example, if in the default state the last page contains only two bars, a small reduction in the note spacing may enable the whole piece to fit onto the previous page(s). On the other hand, if the final page is not being fully used, increasing the notespacing by a small amount can cause it to be filled out. You can also make temporary changes to the note spacing table for certain bars of the music only (&R; &<>&). Another way of controlling the assignment of bars to systems is to use the &%layout%& header directive (&R; &<>&). If you are using &%layout%&, changes made by &%notespacing%& will not affect the layout. .subsection "Notime" .index "&%notime%&" .index "time signatures" "suppressing" This directive, which has no arguments, specifies that time signatures are not to be shown for the current movement. It does not stop PMW from checking the notes in a bar and complaining if there are too many or too few (see &%nocheck%& if you want to suppress this). &%Notime%& does not affect subsequent movements. See also &%startnotime%&. .subsection "Notimebase" .index "&%notimebase%&" .index "time signatures" "one number only" This directive requests that only the `numerator' (that is, the upper number) in time signatures be shown, in the middle of the stave. For example, in 3/4 time, only the 3 would appear. Both numbers are required to be given when specifying time signatures, however. This directive has no effect on time signatures specified as C or A. See also the &%printtime%& directive for another way of customizing time signatures. .subsection "Notimewarn" .index "&%notimewarn%&" .index "time signatures" "suppressing warning" .index "warning signatures" By default, when there is a time signature change at the start of a new system, PMW also puts the new time signature at the end of the previous line, as is conventional in most music. The header directive &%notimewarn%& suppresses these warning time signatures. Individual occurrences can be suppressed by an option on the &%[time]%& stave directive that changes the time signature. .subsection "Nounderlayextenders" .index "&%nounderlayextenders%&" This directive suppresses extender lines at the ends of underlay words whose last syllable extends over more than one note. In a subsequent movement &%underlayextenders%& can be used to restore them. .subsection "&%Nowidechars%&" .index "&%nowidechars%&" This directive, which takes no arguments, is permitted only in the first movement. It has exactly the same effect as the &%-nowidechars%& command line option, which is to disable the use of very wide characters as part of stave lines. This option is ignored if &%drawstavelines%& is set. .subsection "Overlaydepth" .index "&%overlaydepth%&" .index "overlay" "line depth" If two or more character strings, all designated as overlay, are attached to the same note, they are automatically placed one above the other. The distance between the baselines of the strings can be set by this directive. The default depth is 11 points. The overlay depth and the underlay depth are separate parameters. .subsection "Overlaysize" .index "&%overlaysize%&" .index "overlay" "size" By default, text that is specified as being vocal overlay is output using a 10-point font. This directive enables a different point size to be chosen for overlaid text. .code overlaysize 9.7 .endd Individual items of overlay text can be specified at different sizes by using the &`/s`& or &`/S`& text qualifier. The overlay size and the underlay size are separate parameters. .subsection "Page" .index "&%page%&" .index "page numbers" .index "numbering pages" This directive is permitted only in the first movement. By default, page numbers start from one. The &%page%& directive can be used to specify that they should start at a different number. It takes the number of the first page as its first argument. There is also a second, optional argument that gives the increment by which page numbers are advanced. .code page 3 2 .endd This example might be used in a file containing the &'primo'& part of a piano duet. It causes the pages to be numbered 3, 5, 7, etc. Occasionally there is a requirement to skip a page number in the middle of a piece &-- to insert a commentary page in a critical edition, for example. See the &%[page]%& stave directive for a means of doing this. .subsection "Pagefooting" .index "&%pagefooting%&" .index "footing" "for middle pages" .index "page footing" "for middle pages" The &%pagefooting%& directive defines text for the foot of pages. If a &%footing%& directive is present, it overrides &%pagefooting%& for the first page only. The &%lastfooting%& directive can be used to override it for the final page of a piece. The arguments for &%pagefooting%& are the same as those for &%footing%&, but long strings are not automatically split up into multiple lines. Note the use of the escape sequences &`\p\`&, &`\po\`&, and &`\pe\`& to include page numbers in footing lines. .subsection "Pageheading" .index "&%pageheading%&" .index "heading" "for middle pages" .index "page heading" "for middle pages" The &%pageheading%& directive defines text for the head of pages other than the first. Its arguments are the same as those for &%heading%&, but long strings are not automatically split up into multiple lines. Note the use of the escape sequences &`\p\`&, &`\po\`&, and &`\pe\`& to include page numbers in heading lines. See section &<>& and also the &%[newmovement]%& directive for discussions of headings when there is more than one movement in a file. .subsection "Pagelength" This directive is permitted only in the first movement. See section &<>& (&'Linelength and pagelength'&) above. .subsection "PMWversion" .index "&%pmwversion%&" .index "version of PMW, checking" .index "PMW version, checking" This directive checks the version of PMW is in use. It must be followed by a version number or a version number preceded by &`>`& (greater than), &`>=`& (greater than or equal), &`<`& (less than), &`<=`& (less than or equal), &`=`& or &`==`& (equal, same as no sign): .code pmwversion 4.50 pmwversion >= 5.00 pmwversion < 5.00 .endd If the wrong version is used, a message is output and PMW stops. .subsection "Printkey" SUBSECTprintkey .index "&%printkey%&" .index "key signatures" "specifying output format" .index "key signatures" "non-standard forms" .index "accidentals" "in key signatures" .index "half sharp" "in key signatures" .index "half flat" "in key signatures" Some old music uses key signatures in which the accidentals are placed differently to the modern convention. For example, for a treble clef G major signature, the sharp is on the bottom space of the stave instead of on the top line. The &%printkey%& directive can be used to reproduce such usage. It can also be used to specify the appearance of half sharps and half flats in key signatures. Another way of doing this (a more recent addition to PMW) is to use the &%makekey%& directive (&R; &<>&) to define a custom key. The syntax of &%printkey%& is as follows: .display &`printkey `&<&'key'&>&` `&<&'clef'&>&` "`&<&'string'&>&`" ["`&<&'string'&>&`"]`& .endd There may be many occurrences of &%printkey%& in a single input file. The directive applies to the movement in which it occurs, and any subsequent movements, unless overridden by a subsequent &%printkey%& directive with the same key and clef. The most recent occurrence is always the one that is used. The use of &%printkey%& affects only what is output for the given key/clef combination. It has no other effect on PMW's behaviour. The first string specifies what is to appear instead of the normal key signature. The second, optional string specifies what is to appear for a `cancellation' key signature, that is, when there is a change to a key with an empty signature. If not supplied, this string is set empty. The string is normally a sequence of characters in the music font, which is set as the default font at the start of the string. The size is fixed at 10 points, scaled to the stave's magnification. You can change to other fonts by means of the usual escape sequences, but the size cannot be varied. The starting vertical position is the bottom line of the stave; you can use the up and down moving characters in the music font to position accidentals (or other characters) where you want them. .code key G printkey G treble "\37\" "\40\" printkey E$ treble "x~\39\x~\191\ww\191\" printkey E$ bass "~\39\x~\191\ww\191\" [stave 1 treble 1] GG | [key C] GG | [key E$] GG [bass 0] | [key E$] GG || [endstave] .endd .music "music47" 32 4,-16 In the above example, the G major key signature is displayed as a single sharp (character 37 in the music font), in the initial vertical position, with a natural (character 40) in the same position for cancellation. For the E-flat treble clef signature, characters 120 (&`x`&) and 126 (&`~`&) are used to move up four and two points, respectively, so that the flat (character 39) is on the middle line of the stave. Further appearances of &`x`& and &`~`&, and also character 119 (&`w`&), which moves down four points, are used to position the half flats (character 191) that follow. A similar string is used for the bass clef. Details of the music font characters are given in chapter &<>&. .subsection "Printtime" .index "&%printtime%&" .index "time signatures" "specifying output format" Time signatures are occasionally shown in unusual formats. This directive specifies how a given time signature is to appear. It has the following syntax: .display &`printtime `&<&'time signature'&>&` "`&<&'top'&>&`" "`&<&'bottom'&>&`"`& .endd There may be many occurrences of &%printtime%& in a single input file. The directive applies to the movement in which it occurs, and any subsequent movements, unless overridden by a subsequent &%printtime%& directive for the same time signature. The most recent occurrence is always the one that is used. Whenever the given time signature is to be output, the &%printtime%& setting is used instead. If the second string is empty, the first is output vertically centred on the stave; otherwise the two strings are output on the third and first stave lines, respectively, with their horizontal centres aligning. Some examples of possible uses are: .code printtime 8/8 "3+3+2" "8" printtime 12/8 "3 2" "2 2" printtime 3/4 "3"/s2 "" printtime 3/2 "\**147\" "" .endd .music "music63" 32 0,-16 Setting both strings empty suppresses all output for the time signature. The default font at the start of each string is the font specified by the &%timefont%& directive for the current movement (as long as it precedes &%printtime%&) or for an earlier movement. If &%timefont%& is not used, the default font is the bold font. However, changes of font are permitted within the strings. The default size of the text for &%printtime%& is that specified by &%timefont%&, with 11.8 points as the ultimate default. However, as shown in the third example above, you can follow each text string with &`/s`& or &`/S`& and a number, to specify a particular size for a given string (&R; &<>&). For &`s`&, the number refers to the list of text sizes specified by the &%textsizes%& directive, which in this example has set size 2 to 20 points. For &`/S`&, the number refers to one of the fixed sizes. .index "time signatures" "circle" The fourth example uses character 147 from the music font (requested by the asterisks) to output an old-fashioned signature in the form of a circle. .subsection "Rehearsalmarks" .index "rehearsal marks" .index "&%rehearsalmarks%&" This directive controls the way rehearsal marks (&R; &<>&) are shown. It has this syntax: .display &`rehearsalmarks`& <&'align'&> <&'style'&> <&'size'&> <&'fontname'&> .endd All the arguments are optional, except that if <&'fontname'&> is present, one of either <&'style'&> or <&'size'&> (or both) must precede it. Parameters that are unspecified are left unchanged. The settings are copied to any following movement, but can be changed therein. The <&'align'&> argument affects the positioning of rehearsal marks that occur at the start of the first bar of a system (that is, at the start of a line). By default, such marks are aligned with the first note in the bar. If `linestartleft' is present, these marks are instead placed at the start of the line; `nolinestartleft' can be used to restore the default in a following movement. If <&'style'&> is present, it must be one of the words `boxed' or `roundboxed' (enclose in a rectangular box, in the second case with rounded corners), `ringed' (enclose in a ring), or `plain' (do not enclose). The size is the font size, and the final argument specifies the font to be used (&R; &<>&). .code rehearsalmarks boxed 13 rehearsalmarks ringed italic rehearsalmarks 11 bolditalic rehearsalmarks linestartleft plain 14 bold .endd By default, rehearsal marks are enclosed in a box with mitred corners, using a 12-point roman font. .subsection "Repeatbarfont" .index "&%repeatbarfont%&" .index "fonts" "for repeat bars" The font used for the numbers on first and second time bars can be set by this directive. Its arguments are an optional size followed by a non-optional font name. .code repeatbarfont 8 extra 4 .endd This example specifies the use of the fourth extra font, at an 8-point size. The default size is 10 points, and the default font is roman. If the &%[1st]%& or &%[2nd]%& directive specifies a text string to replace the number (&R; &<>&), this font is the default, but can be changed within the string. .subsection "Repeatstyle" SUBSECTrepeatstyle .index "&%repeatstyle%&" .index "repeat marks" This directive specifies how repeat marks appear. The default is the conventional combination of two dots with a thin and a thick vertical line. In its basic form directive must be followed by one of the following numbers: .itable none 0 0 2 12 left 200 left .row &`0`& "normal style" .row &`1`& "no thick vertical line" .row &`2`& "no thick vertical line, and thin line dotted" .row &`3`& "four dots only (unless at a bar line)" .row &`4`& "as 0, but alternate amalgamated form" .endtable If style 2 is used at the start or end of a bar, you must use an invisible bar line if you want to prevent the dotted line being overprinted by a normal bar line. Style 4 is the same as style 0 (the default) except when the end of a repeated section is immediately followed by the start of another repeated section, typically coded as &`:)|(:`& in the input file. In style 0, a thin line, thick line, and second thin line appear between the dots. This style is recommended in Gardner Read's &'Music Notation'& and also shown in Kurt Stone's &'Music Notation in the Twentieth Century'&. However, some editors prefer to have just two thick lines between the dots, and this is what style 4 gives. .music "music37" 32 0,-16 centre .index "repeat marks" "with wings" When outputting single parts it is common to see repeat marks with small `wings' above them, to make them more prominent. You can request these by adding 10 to the argument of &%repeatstyle%&. Thus, a value of 10 generates repeats like this: .music "music67" 32 0,-16 You can use conditional pre-processing directives (&R; &<>&) to arrange for wings to appear only in parts, and not in a score. If there is more than one stave in a system, wings are added to the top and bottom staves only. .subsection "Righttoleft" SUBSECTrighttoleft .index "&%righttoleft%& .index "layout right to left" The &%righttoleft%& directive causes PMW to typeset music from right to left instead of in the conventional left-to-right manner. This directive must appear in the first movement of a file, and it applies to all the movements that follow. The facility was ``bolted on'' to the existing PMW code, and as a result has some awkwardnesses, in particular in the way in which character strings are handled. It is also somewhat experimental and is likely to give strange results if some of the more complicated features of PMW are used. Nevertheless, &%righttoleft%& makes it possible to typeset music in a manner that is sometimes used in countries whose language is written from right to left. Although the music runs from right to left, the shapes of the notes, accidentals, and clefs are not altered. Right-to-left output is implemented by transforming the PostScript coordinate system so that the x-axis runs to the left and the origin is at the righthand side of the page image. Within the transformed coordinate system, fonts are themselves re-transformed so that their characters appear as normal. This means that characters in text strings are still output from left to right; however, the positioning of text strings is adjusted so that they end rather than start at their normal position. There is a further complication if there are font changes within a text string. The substrings, taken in order in the input file, are output from right to left, but within each substring, the characters run from left to right. Note the way that the strings in this example are rendered: .code [stave 1 treble 1] "\*c\\bf\104 = "/a/ts/u2 "m\bi\f" A #g. a- | "abc" c'-b-a-g-; G | .endd .music "music50" 48 12,-14 The first string, &`"\*c\\bf\104 = "`& is split into two substrings, the first being a crotchet character from the music font, and the second being the text &`"104 = "`& from the bold font. The &`/ts`& option specifies that the string is positioned at the time signature, so this is where the first substring is put; the second string is then placed to its left. The second string, &`"m\bi\f"`&, also uses two fonts, and so the italic &'m'& appears to the right of the bold italic &'&*f*&'&. The third string has no font changes, so the characters appear in order. If PMW has been compiled with B2PF support, you can use the &%b2pffont%& directive to cause strings in certain fonts to be processed by the B2PF library, which can convert base characters to presentation forms, and can also reverse the order of characters in a string. When right-to-left output is enabled, right and left are interchanged in all the facilities for moving items horizontally, and for the left-centre-right feature of heading lines. For example, using &`/r`& on a string moves it left instead of right. In shapes defined by the &%draw%& directive, x-coordinates are inverted, with positive values moving left instead of right. If any of the two-up printing styles is selected when &%righttoleft%& is enabled, the order of the pages on the sheets is reversed. This makes it possible to generate correct right-to-left pamphlet-style pages for folding and binding. .subsection "Selectstave(s)" .index "&%selectstave%&" .index "staves" "selection of" This directive is used to specify a selection of staves to be output. It overrides any selection given by the &%-s%& option on the command line. The directive is followed by a list of staves and/or ranges of staves, and is intended for use in conjunction with the &%-f%& command line option, as in this example: .code *if chorus selectstaves 5-8 *fi *if cello selectstave 4 *fi .endd Any tests that rely on a particular stave selection must follow this directive. .subsection "Sheetdepth, Sheetwidth, and Sheetsize" .index "&%sheetdepth%&" .index "&%sheetsize%&" .index "&%sheetwidth%&" .index "A3, A4, A5 paper size" .index "B5 paper size" .index "size" "of paper" .index "width" "of paper" .index "depth of paper" These three directives are permitted only in the first movement. They are concerned with specifying the size of page image that PMW creates. &%Sheetdepth%& and &%sheetwidth%& can be used to specify vertical and horizontal paper dimensions individually, but for standard sizes it is usually simpler to use &%sheetsize%&, which must be followed by one of the words `A3', `A4', `A5', `B5', or `letter'. Its effect is to set the sheet depth and width parameters to suitable values for the given paper size, and also to set the &%linelength%& and &%pagelength%& values, as follows: .itable none 0 0 5 40 centre 64 centre 64 centre 64 centre 64 centre .row &'Size'& &'Sheetwidth'& &'Sheetdepth'& &'Linelength'& &'Pagelength'& .row A3 842 1190 730 1060 .row A4 595 842 480 720 .row A5 421 595 366 480 .row B5 499 709 420 590 .row letter 612 792 500 670 .endtable Adjustments to the line length or page length must be made after any appearance of &%sheetsize%&, which should also precede any occurrence of the &%landscape%& directive. If A5 or B5 is specified and the page is printed on A4 paper, it appears by default at the bottom left-hand corner. This position can be adjusted by using the &%-printadjust%& command line option, or A5 pages can be printed two-up by specifying &%-a5ona4%&. .subsection "Shortenstems" .index "&%shortenstems%&" .index "stems" "automatic shortening" Some editors like to shorten note stems that are pointing the `wrong' way (upward stems for notes above the middle of the stave or downward stems for notes below the middle of the stave). PMW can be made to do this shortening automatically. &%Shortenstems%& must be followed by one number, which is the maximum amount by which a stem may be shortened. .code shortenstems 4 .endd This example allows PMW to shorten stems automatically by up to 4 points. The default value of zero causes no automatic shortening. Additional shortening (or lengthening) can be specified explicitly for any given note, and this is added to any automatic shortening that may be set. PMW maintains an overall minimum stem length beyond which stems cannot be shortened, so specifying a large limit such as 99 permits shortening down to this minimum length. Automatic shortening reduces a stem's length by 0.5 points for each note position on the stave, so, for example, a note on the top line has its upward-pointing stem shortened by 2 points (provided the &%shortenstems%& limit allows this). .subsection "Sluroverwarnings" .index "&%sluroverwarnings%&" .index "slurs" "over warning signatures" .index "ties" "over warning signatures" .index "warning signatures" "slurs and ties over" When a line ends with a warning time or key signature, and there is a slur or tie that is continued from this line to the next, PMW does not by default draw the slur or tie over the warning. This directive requests it to do so. .subsection "Smallcapsize" .index "&%smallcapsize%&" When the escape sequence &`\sc\`& is used in a string to change to small caps, it selects a new font of the same typeface as before, but at a relative size that can be set by this directive. The default value is 0.7. &*Note:*& This applies only to non-music fonts. If &`\sc\`& is used with a music font, it has the same effect as using &`\mu\`&, that is, it switches to a music font at 0.9 nominal size. .subsection "Startbracketbar" .index "&%startbracketbar%&" This directive applies only to the movement in which it appears; it affects the first system of the movement. It specifies a number of bars by which the joining brackets and/or braces that normally appear at the left-hand end are to be `indented'. The second and subsequent systems are not affected. If the word `join' appears before the number, the joining lines as specified by the &%join%& and &%joindotted%& directives are also applied at the actual start of the system; by default nothing appears there. See section &<>& for an example of the use of &%startbracketbar%&. .subsection "Startlinespacing" .index "&%startlinespacing%&" .index "spacing" "start of line" .index "clefs" "space before" This directive controls the spacing of clefs, key signatures, and time signatures at the start of lines of music. It can be followed by up to four dimensions. Omitted numbers are taken as zero. The syntax is: .display &`startlinespacing`& <&'c'&> <&'k'&> <&'t'&> <&'n'&> .endd Each number specifies additional space &'before'& a particular item at the start of each stave: .itable none 0 0 2 12 left 200 left .row &'c'& "is the extra space before the clef" .row &'k'& "is the extra space before the key signature" .row &'t'& "is the extra space before the time signature" .row &'n'& "is the extra space before the first note" .endtable The arguments can be given negative values to move the items closer together. If an item is absent on a stave, the associated extra space is also omitted. When a mid-line bar starts with a clef (rare in the ordinary course of events, but can occur, for example, after an incipit), the &%startlinespacing%& values are used for the clef and any signatures that follow it, exactly as at the start of a line. See &%midkeyspacing%& and &%midtimespacing%& for ways of handling key and time signatures that occur at the start of mid-line bars. .subsection "Startnotime" .index "&%startnotime%&" .index "time signatures" "suppressing" This directive, which has no arguments, applies only to the movement in which it appears. It causes no time signature to appear at the start of the movement, but does not suppress subsequent time signature changes. This is useful for typesetting parts of pieces. The &%notime%& directive suppresses all time signatures in a piece. .subsection "Stavesize(s)" SUBSECTstavesize .index "&%stavesizes%&" .index "size" "of staves" This directive specifies different sizes for certain staves. It is followed by pairs of numbers, separated by slashes. The first of each pair is a stave number, and the second is the size of the stave relative to the standard stave size. .code stavesize 1/0.8 stavesizes 4/1.2 5/1.2 6/1.2 .endd The first example specifies that stave 1 is 0.8 times the normal size, and the second specifies that staves 4&--6 are 1.2 times the normal size. A change in the relative size of a stave affects everything on that stave, both notes and text items. However, the text that appears to the left of the stave (the instrument or voice name) is not affected, and neither are bar numbers .index "bar numbers" "size on scaled stave" .index "rehearsal marks" "size on scaled stave" or rehearsal marks. A size may be specified for stave zero if required. As no notes are ever output on this stave, only text items are affected. .index "bar lines" "breaking" .index "bar lines" "thick and thin" Bar lines are thicker or thinner, as necessary, unless a fixed size has been specified with &%barlinesize%&. With varying barline thicknesses, it is conventional to break bar lines between staves of different sizes to avoid ugly joins. .subsection "Stavespacing" SUBSECTstavespacing .index "&%stavespacing%&" .index "staves" "spacing" .index "spacing" "staves" This directive controls the amount of vertical white space between staves. Whatever is set for one movement carries over as the default for the next movement. The distance between staves is measured from the bottom of one stave to the bottom of the next. The initial default is 44 points. If the &%stavespacing%& directive is followed by a single number, this sets the spacing for all staves to that value. After such a single number, further items can be given to set different spacings for individual staves. .code stavespacing 50 1/54 3/60 .endd This example sets the spacing for all staves to 50 points, except for staves 1 and 3, which have their own settings. The initial overall number is optional. The remaining arguments for this directive consist of pairs or triples of numbers, separated by a slash. The first number is always a stave number. In the case of number pairs, the second number specifies the spacing between the stave and its successor on the page. .code stavespacing 1/36 4/50 .endd This example ensures that staves 1 and 2 are nearer together than the default, at 36 points, and staves 4 and 5 are further apart at 50 points (assuming that all these staves are selected). Sometimes there is a requirement to specify the amount of space &'above'& a stave. For example, in a piece with an accompaniment and four vocal lines, not all of which are present throughout the piece, it is a common requirement that there be more space between the last vocal stave (whichever it is) and the first accompaniment stave. Changing the stave spacing every time the last vocal line is suspended or resumed can be avoided by using a triple in the &%stavespacing%& directive. Whenever three numbers appear as an argument to &%stavespacing%&, the second number specifies a &'minimum'& space &'above'& the given stave, and the third specifies the space below it. .code stavespacing 1/46 2/50 3/50/48 .endd This example specifies that stave 3 always has at least 50 points above it, even when stave 2 is suspended. Space specified above the top stave is ignored, and, if it is desired to specify space above the last stave, some dummy third number must be given to fulfil the syntax requirement of three numbers. The spacing between staves can be varied in the middle of a piece. See the stave directives &%[ssabove]%&, &%[sshere]%&, and &%[ssnext]%& (&R; &<>&). .index "overprinting" "staves" A value of zero may be given for the spacing. This causes two successive staves to appear on top of each other, and can be useful for setting two lines of music on the same stave. It can also be useful for a figured bass line, using invisible notes to set the horizontal positioning for the figures. However, if only a few bars of a piece require overprinting, the &%[reset]%& or &%[backup]%& stave directives may be more convenient than the use of a complete overprinted stave. .subsection "Stemlengths" .index "&%stemlengths%&" .index "stems" "length adjustment" This directive is followed by up to six numbers, which specify adjustments to stemlengths for unbeamed minims, crotchets, quavers, semiquavers, demisemiquavers, and hemidemisemiquavers, respectively. The values may have fractions, and negative values (indicating stem shortening) can be used, up to a maximum shortening of 8 points. Unbeamed notes that are shorter than a semiquaver need to have their stems lengthened in order to fit in the extra tails. The default setting for this directive is: .code stemlengths 0 0 0 0 2 4 .endd This specifies stem lengthening for demisemiquavers and hemidemisemiquavers of 2 and 4 points, respectively. Note that these values do not apply to beamed notes; however, the stem lengths of individual notes in a beam can be adjusted (&R; &<>&, &<>&). .subsection "Stemswap" SUBSECTstemswap .index "&%stemswap%&" .index "stems" "direction" .index "notes" "stem direction" .index "direction of stems" .index "changing stem rules" This directive is used to alter the way in which PMW chooses stem directions for notes lying on the stem swap level for the stave. Specifying this directive has the effect of altering rules N5 and N6 as described in section &<>& (&'Stem directions'&). Note that rule N3 is &'not'& affected. .code stemswap up .endd All notes at the stem swap level that are not otherwise constrained have stems that go upwards. This can be useful when there is vocal underlay. .code stemswap down .endd This gives the opposite effect, and may be useful for American publishers. .code stemswap left .endd The direction of the stem of a note on the stem swap level depends on the stem direction of the note to its left, viewing the part as one long stave (in other words, it depends on the previous note). If the previous note is a breve or semibreve, a notional stem direction is computed as if it were a shorter note. .code stemswap right .endd This makes the stem direction depend on the next note to the right that is not also on the stem swap level. However, the search for the next note does not extend beyond the end of the bar. If the final note(s) of a bar are on the stem swap level, their stem direction is taken from the preceding note. .subsection "Stemswaplevel" SUBSECTstemswaplevel .index "&%stemswaplevel%&" .index "stems" "direction" .index "notes" "stem direction" This directive specifies, for each stave, the level at which stems normally swap from pointing down to pointing up. The default value is zero, which specifies the middle line of the stave. On the swap level itself, the stem may go either up or down, depending on the surrounding notes and the option set by &%stemswap%& or defaulted. Like &%stavespacing%&, if &%stemswaplevel%& is followed by a single number, this sets the level for all staves to that value. After such a single number (which is optional), further pairs of numbers separated by slashes can be given to set different levels for individual staves. The swap level value may be positive or negative, and its units are note positions. .code stemswaplevel 1/1 2/-1 .endd This example requests that on stave 1, the swap level is moved to the third space instead of the third line, and on the second stave it is moved down to the second space. For all other staves the value is unchanged. .subsection "Suspend" SUBSECTheadsuspend .index "&%suspend%&" .index "suspending staves" This directive affects only the movement in which it appears. It specifies the suspension of certain staves from the beginning of the movement. It must be followed by a list of staves, in the same format as the &%bracket%& and &%brace%& directives. .code suspend 1,3,5-9 .endd A detailed description of the suspension mechanism is given in the section on the stave directive of the same name (&R; &<>&). .subsection "Systemgap" .index "&%systemgap%&" .index "system gap" .index "spacing" "systems" .index "gaps" "between systems" The vertical distance between systems is measured from the bottom of the last stave of one system to the bottom of the first stave of the next system, and this distance can be specified by &%systemgap%&, which takes a single dimension as its argument. Whatever is set for one movement carries over as the default for the next movement. The initial default is 44 points, the same as the default spacing between staves in a system. Thus, by default, the entire output on a page is on evenly spaced staves when there is no vertical justification. When vertical justification is happening (&R; &<>&), the system gap is a minimum distance between systems; once the page layout is determined, the gaps are expanded so that the last stave of the last system on a page is exactly at the bottom of the page. The spacing between systems can be varied in the middle of a piece. See the stave directives &%[sghere]%&, &%[sgnext]%&, and &%[sgabove]%& in section &<>&. .subsection "Systemseparator" SUBSECTsystemseparator .index "&%Systemseparator%&" .index "system separator" .index "system divider" This directive configures separating marks between systems, also known as system dividers, as shown in the following example: .music "music66" 100 12,-14 The directive has up to five arguments. Only the first is mandatory, and it specifies the length of the separator lines. Setting it to zero (the default) turns off separators. A value of 16 is used in the example above. The complete set of arguments is: .display &`systemseparator`& <&'length'&> <&'width'&> <&'angle'&> <&'x-adjust'&> <&'y-adjust'&> .endd The default width is 2 and the default angle is 20 (degrees). The lines are by default positioned with their lefthand end aligned with the start of the system, at a fixed position above it. The last two arguments, which may be positive or negative, adjust this position. .code systemseparator 20 2.1 25 -16 -2 .endd This example specifes slightly longer, thicker, and more angled lines, moved leftwards and downwards. Separator lines are not output before the first system on a page, the first system of a new movement if it has any heading lines, or any system that contains only one stave. .subsection "Textfont" SUBSECTtextfont .index "&%textfont%&" .index "fonts" "additional" .index "additional fonts" This directive is permitted only in the first movement. By default, all text strings use the &'Times'& series of fonts. This directive can be used to specify alternative fonts and also to define up to twelve additional fonts. It takes the following form: .display &`textfont`& <&'fontword'&> "<&'full font name'&>" .endd The first argument must be one of the words `roman', `italic', `bold', `bolditalic', `symbol', or `extra' followed by a number in the range 1&--12, specifying which text font is being defined. The final argument is the full name of the font, in double quotes. .code textfont bold "Palatino-Bold" .endd This example changes the bold face font from the default (which is &'Times-Bold'&) to &'Palatino-Bold'&. An example that defines the first of the twelve available extra fonts is: .code textfont extra 1 "Helvetica" .endd This font is accessed in text strings by the escape sequence &`\xx1\`&. See section &<>& for details of font-changing escape sequences. The capitalization of font names is important. .index "fonts" "including in output" The &%textfont%& directive has a third, optional argument that can be given immediately before the font name. It is the word `include', for example: .code textfont extra 1 include "FancyFont" .endd If `include' is present, PMW searches for a font file to include in the PostScript output. The file name must be the font name with the extension &`.pfa`&, and the file must be in one of the directories that is searched for AFM files (see the &%-F%& command line option). Note that the &%-incPMWfont%& command line option applies only to PMW's music fonts. .subsection "Textsizes" SUBSECTtextsizes .index "&%textsizes%&" .index "text" "sizes" .index "figured bass" "size" .index "underlay" "size" .index "size" "of text" Text that is specified with music on a stave can be output in twenty different settable sizes in addition to the default sizes for underlay, overlay, and figured bass text. The &%textsizes%& directive specifies the sizes that are required. It is followed by up to twenty font sizes, which may include stretching factors and shear angles. Any unspecified sizes are set to 10 points. .code textsizes 10.5 11 7.6 9/1.1 .endd By default, ordinary text is output using the first size specified, but underlay, overlay, and figured bass text uses the size specified by the &%underlaysize%&, &%overlaysize%&, or &%fbsize%& header directives, respectively. To output text at any of the other settable sizes, the &`/s`& qualifier must be used. There are also 10 fixed sizes that can be selected by the &`/S`& qualifier (&R; &<>&). .subsection "Thinbracket" .index "&%thinbracket%&" .index "bracket, thin" .index "joining signs" .index "staves" "joining signs" This directive, which has the same syntax as &%bracket%& and &%brace%&, causes a thin square bracket to be drawn to join two or more staves. Like &%brace%&, nothing is drawn if it covers only one stave, and it is drawn outside the thicker bracket, if that is present. This sign is sometimes used in scores to join staves containing multiple parts for the same instrument. .subsection "Time" .index "&%time%&" .index "time signatures" "specifying" This directive applies only to the movement in which it appears. It sets a time signature for all the staves of the movement. Changes can be made during the music or for individual staves, which are permitted to have different time signatures. See the &%[time]%& directive for details. The default time signature is 4/4. .subsection "Timebase" .index "&%timebase%&" This directive can be used at the start of a new movement to cancel the effect of &%notimebase%& in the previous movement. .subsection "Timefont" SUBSECTtimefont .index "&%timefont%&" .index "fonts" "for time signatures" .index "time signatures" "selecting font" The &%timefont%& directive is used to specify the default font and size for time signatures. Its syntax is: .display &`timefont`& <&'size'&> <&'name'&> .endd The size is a number, giving the size of font required. If it is omitted, a font size of 10 points is used. The name must be one of the words `roman', `italic', `bold', or `bolditalic', or the word `extra' followed by a number in the range 1&--12. It cannot be omitted. When this directive is not used, an 11.8-point bold font is used for time signatures. The parameters set by &%timefont%& do not affect the time signatures C and A &-- they affect only numeric time signatures, or those output via the &%printtime%& directive. Changing the size of the time signature font does not affect the positioning of the characters. The facility is intended for selecting a suitable size when a font other than &'Times-Bold'& is used. .subsection "Timewarn" .index "&%timewarn%&" This directive can be used at the start of a new movement to cancel the effect of &%notimewarn%& in the previous movement. .subsection "Topmargin" See section &<>& (&'Bottommargin and topmargin'&) above. .subsection "Transpose" .index "&%transpose%&" .index "transposition" This directive applies only to the movement in which it appears. It sets a transposition for the whole movement, and must be followed by a positive or negative number specifying the number of semitones of transposition up or down, respectively. If a transposition is also specified from the command line, the two values are added together. Section &<>& gives more details about transposition. .subsection "Transposedacc" .index "&%transposedacc%&" .index "accidentals" "in transposed staves" .index "transposition" "control of accidentals" By default, unless the stave has the pseudo-key N set, PMW always outputs an accidental on a transposed note if an accidental is present on the original, thereby preserving cautionary accidentals. If &%transposedacc%& is followed by the word `noforce', it changes this behaviour such that accidentals are shown only when strictly necessary. The standard behaviour can be reinstated for subsequent movements by specifying `force'. There is also a &%[transposedacc]%& stave directive that can alter the behaviour within a single stave. It is possible to force either behaviour for individual notes (&R; &<>&). For the special treatment of the pseudo-key N, see section &<>&. .subsection "Transposedkey" .index "&%transposedkey%&" .index "transposition" "control of keys" .index "key signatures" "after transposition" When there is a choice of standard key signature after transposition, PMW uses a fixed default. For example, it uses the key of G♭ rather than F♯. There is a complete list of the relevant key signatures in section &<>&. This list also applies when key or chord names in strings are being transposed. The default can be overridden by specifying: .display &`transposedkey`& <&'key1'&> &`use`& <&'key2'&> .endd This means `if transposing a key signature yields <&'key1'&>, use <&'key2'&> instead'. .code transposedkey G$ use F# .endd This example ensures transposition into F♯ instead of G♭. A transposition of zero is different to no transposition at all, and if it is specified, any settings of &%transposedkey%& are consulted. This makes it easy to process the same piece of music with or without a key signature. The &%transposedkey%& directive has other uses when transposing music that is notated using the 18th century convention of fewer accidentals in the key signature than in the tonality. It makes it possible to format the transposed music either with a modern key signature, or using the same convention. .subsection "Trillstring" .index "&%trillstring%&" .index "trill" "choice of string" When a trill is indicated for a note, the glyph &{ˆ}& from the music font is used by default. The &%trillstring%& directive lets you change this for another character or characters. .code trillstring "\it\tr" .endd This example replaces &{ˆ}& by the letters &'tr'& in italic. The string may be preceded by a number, specifying the size of font to be used. The default size is 10 points. .subsection "Tripletfont" SUBSECTtripletfont .index "&%tripletfont%&" .index "fonts" "for triplets" .index "irregular note groups" "font for number" This directive specifies the size and style of the text font used for the `3' over triplets, and also similar numbers over other irregular note groups. The syntax is: .display &`tripletfont`& <&'fontsize'&> <&'name'&> .endd The size is a number giving the font size (with an optional stretching factor and shearing angle). If it is omitted, a size of 10 points is used. The name must be one of the standard font name words such as `bolditalic' (&R; &<>&). It cannot be omitted. When this directive is not used, a 10-point roman font is used for triplet numbers. .subsection "Tripletlinewidth" SUBSECTtripletlinewidth .index "&%tripletlinewidth%&" .index "line width for triplets" This directive sets the width of lines used for the horizontal brackets of irregular note groups. The default width is 0.3 points. .subsection "Underlaydepth" .index "&%underlaydepth%&" .index "underlay" "line depth" If two or more character strings, all designated as underlay, are attached to the same note, they are automatically placed one below the other. The distance between the baselines of the strings can be set by this directive. The default depth is 11 points. A negative argument can be given to this directive for special effects, such as alternative words above a stave. However, this is probably easier to achieve using the overlay facilities. The depth parameters for underlaid and overlaid text are separate and independent. .subsection "Underlayextenders" .index "&%underlayextenders%&" This directive restores extender lines at the ends of underlay words whose last syllable extends over more than one note if they were suppressed by &%nounderlayextenders%& in an earlier movement. .subsection "Underlaysize" .index "&%underlaysize%&" .index "underlay" "size" By default, text that is specified as being vocal underlay is output using a 10-point font. This directive enables a different size to be chosen for underlaid text. .code underlaysize 9.5 .endd Individual items of underlay text can be output at different sizes by using the &`/s`& or &`/S`& text qualifier. The size parameters for underlaid and overlaid text are separate and independent. .subsection "Underlaystyle" SUBSECTunderlaystyle .index "&%underlaystyle%&" .index "underlay" "multiple notes per syllable" .index "underlay" "alignment" .index "alignment of underlay" By default, PMW centres underlay and overlay syllables under or over each note, respectively. There is a tradition, `now frequently ignored' (Kurt Stone, &'Music Notation in the Twentieth Century'&), that calls for multinote syllables to be aligned flush left with the initial note. The &%underlaystyle%& directive is used to request PMW to align underlay and overlay in this traditional manner. Its argument is a number: style 0 is the default, and style 1 sets multinote syllables flush left. When operating in style 1, individual multinote syllables can be centred by making use of the ^ character (&R; &<>&), which is still recognized in this style. In effect, style 1 causes the automatic insertion of a ^ character at the start of any multinote syllable that does not already contain one. .subsection "Unfinished" SUBSECTunfinished .index "&%unfinished%&" .index "solid bar line" .index "bar lines" "at end of piece" This directive, which has no arguments, applies only to the movement in which it appears. It indicates that the music data supplied is not a complete movement. This has the effect of suppressing the solid bar line at the end. It is not necessary to specify &%unfinished%& if the movement ends with a double bar line. .subsection "Vertaccsize" .index "&%vertaccsize%&" .index "accidentals" "size when above" .index "size" "of accidentals above notes" The size of accidentals that are placed above or below notes (&R; &<>&) is controlled by this header directive; the default size is 10 points, which causes them to be the same size as normal accidentals. .code vertaccsize 9 .endd This example causes them to be slightly smaller than the default. .index-to I04 .index-to I05 . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .tocsubsecton .chapter "Stave data" CHAPstavedata .index-from I06 "stave data" This is the first of two chapters that describe the format of the data for a single stave, which consists of a sequence of notes and rests, interspersed with other items such as bar lines, key and time signatures, clefs, text strings, etc. The items that are not notes or rests are as follows: .ilist A few common items that can conveniently be represented in the computer's character set are represented by one or more special characters. An example is the use of the vertical bar to indicate a bar line. These items are described in the next few sections. .next Textual items, such as &*&'f'&*&, &'a tempo'&, etc., are coded as strings enclosed in double-quote characters, and are described in section &<>&. .next .index "stave directives" Other non-note items take the form of &'stave directives'&, enclosed in square brackets. There are several different formats for stave directives. They are described in alphabetical order in section &<>&. .endlist Notes, rests and other items may be interspersed freely, as required. .index "space character" Space characters and line breaks can be used to separate items, in order to make the input easier to read, though they are not necessary except to avoid ambiguity . PMW makes no attempt to check on the musical sense of what it is asked to typeset, other than to check bar lengths. .index "bar lengths" When there is more than one stave, the length of the notes in each bar must be the same for all staves, though it is possible to handle some special cases such as a 2/4 stave and a 6/8 stave in the same system (&R; &<>&). The length of the notes in a bar must agree with the time signature, unless &%nocheck%& or &%[nocheck]%& has been used (&R; &<>&). .section "Bar lines" .index "bar lines" "single and double" .index "double bar lines" "specifying" Bar lines in the music are indicated by means of the vertical bar character. A single vertical bar gives a single bar line; two successive vertical bars without any intervening space characters gives a double bar line. .index "bar lines" "end-style in mid-piece" Unless the final bar ends with a double bar line or the &%unfinished%& directive (&R; &<>&) is used, the end of a piece or movement is marked in the traditional manner with a thin bar line followed by a thick bar line. Occasionally such a bar line may be needed in the middle of a piece. This is notated by three vertical bars in succession. .index "bar lines" "empty bar" .index "empty bar" To encode a totally empty bar it is necessary to include at least one space between two vertical bar characters. The amount of horizontal space that is inserted after a bar line is controlled by the &%barlinespace%& directive. .index "bar lines" "styles" There are six different styles for single barlines (&R; &<>&). The default style can be set by &%barlinestyle%& (for the whole piece) or &%[barlinestyle]%& (for an individual stave). In addition, the style of any individual bar line may be specified by following the vertical bar character with a digit in the range 0&--5. Note that the &%breakbarlines%& directive can be used to specify breaks in bar lines at particular staves. This overall setting can be overridden for individual bars by using the &%[breakbarline]%& or &%[unbreakbarline]%& stave directives. Normally, the end of a bar marks the end of a set of beamed notes. If a bar line encoding is followed by an equals sign, any existing beam is carried over the bar line and into the next bar if it starts with a suitable note (&R; &<>&). This applies all forms of bar line, including invisible bar lines. .subsection "Invisible bar lines" SUBSECTinvisbar .index "bar lines" "dummy" .index "bar lines" "invisible" .index "invisible items" "bar lines" Occasionally it may be necessary to put in a dummy bar line in order to allow PMW to start a new system in the middle of a bar &-- something it does not normally do. If a vertical bar character in the input is immediately followed by a question mark, it behaves exactly as a normal bar line, except that nothing is output. The &%barlinespace%& directive, which controls the amount of space that is inserted after a bar line, also applies to invisible bar lines. Usually, the bars on either side of an invisible bar line are of abnormal length, so you need to turn off the bar length check for each of them (using &%[nocheck]%&), and if bar numbers are being shown, the &%[nocount]%& stave directive should be used to stop one of them from being counted. .subsection "Mid-bar dotted bar lines" .index "bar lines" "dotted" .index "dotted bar lines" The character &`:`& (colon) may appear on its own in the middle of a bar. It causes a dotted bar line to appear at that point. The bar line is subject to the normal controls for whether it extends down to the next stave or not. A colon does not end the bar. .section "Repeated bars or part bars" SECTrepeatbars .index "repeated bars" .index "repeat bar sign" .index "bars" "repeated" .index "repetition" "single bars" A bar containing the conventional `repeat previous bar' sign &{}&&~ can be coded using a special form of whole bar rest (&R;&<>&). If you want to duplicate a sequence of bars, or a fragment of a bar, you can arrange this via the string repetition feature (&R; &<>&), which replicates an arbitrary sequence of input characters at preprocessing time. For repeating a single, complete bar there is a simpler shortcut mechanism. The appearance of a number enclosed in square brackets causes those items to the right of it in the current bar, including the bar line, to be repeated that number of times. This facility is most commonly used for .index "rests" "repeated bars" .index "repeated rest bars" .index "many bars rest" sequences of rest bars, but it can be used with any bar. .code [45] R! | [key C] [10] R! | .endd In the second repetition, the key signature is included in the first bar only. If it had followed &`[10]`& it would have been included in all ten bars. Within any string that is part of a bar that is repeated in this way, the escape sequence &`\r\`& is replaced by the repetition number. Thus, to number a sequence of rest bars, centring the number over the rest sign, coding like this can be used: .code [10] "\r\"/a/c R! | .endd You can also use &`\r2\`&, which does the same thing, but starting at the second bar; nothing is inserted in the first repeated bar. This makes it possible to put something different on the first bar. Note the use of &`/cb`& in the next example to centre each text string in its bar. See section &<>& for details of string options. .code "1-6"/a/cb [6] "\r2\"/a/cb f-x3 | .endd .music "music64" 34 0,-20 There is danger of confusion between repeated bars and rehearsal marks. Accidental omission of the quotes from a numerical rehearsal mark such as &`["42"]`& can lead to some very strange effects. There is more discussion of repeated rest bars in the section entitled &'Repeated rest bars'& (&R; &<>&). &*Warning:*& This bar-repeating mechanism should not be used with multi-syllable underlay texts, because the syllables are apportioned to notes as they are read from the input, and bars that are repeated in this way are not re-read. The string repetition facility, however, can be used in this situation. .section "Repeated sections" .index "repeat marks" The beginnings and ends of repeated sections of music are marked by the following character sequences: .itable none 0 0 2 16 left 200 left .row &`(:`& "for the start of a repeated section" .row &`:)`& "for the end of a repeated section" .endtable These need not be at the beginning or end of a bar, though if they are, the repetition sign is amalgamated with the bar line in the conventional manner. Several different styles of repeat mark are provided (&R; &<>&). First and second time bars are catered for (&R; &<>&). PMW does not normally end lines of music other than at the ends of bars. If a repeat occurs in the middle of a bar and you want to allow that bar to be split over a line break, you have to use an `invisible bar line' (&R; &<>&). PMW makes no check that the repetition signs make musical sense. When a bar starts with a new time signature and a repeat mark, the order in which these are shown depends on the order in which they appear in the input. .code [time 4/4] (: .endd This example causes the time signature to be first, followed by the repeat mark. .code (: [time 4/4] .endd This example causes the repeat mark to be amalgamated with the previous bar line, with the time signature following. If, at the same point in the music, these items appear in different orders on different staves, the repeat sign is first on all staves. .section "Caesuras" .index "caesuras" .index "pause" "caesura" A caesura (pause) in the music is encoded in the input in very much the way it appears on the stave. .code c'B // r-c'- | .endd A caesura is normally shown as two sloping strokes through the top of the stave, but the &%caesurastyle%& directive can be used to obtain a single-stroke version, though the input must still be two slashes. .section "Hairpins" SECThairpins .index "hairpins" .index "crescendo mark" .index "diminuendo mark" The characters &`>`& and &`<`& are used within a stave to encode hairpins (crescendo and diminuendo marks, sometimes called `wedges'). They are always used in pairs, and they enclose the set of notes above or below which the hairpin is to be drawn. .code a b > c d e > .endd This example specifies a diminuendo hairpin that extends under the three notes C, D, and E. Unterminated hairpins are automatically terminated at the start of a hairpin of the opposite kind. If the end of a hairpin is given at the start of a bar, before the first note, the hairpin is terminated just past the bar line, unless it is the first bar of a line, when it is extended far enough to be of reasonable size. (See also the &`/bar`& option below.) A minimum length of 10 points is imposed on hairpins. If a hairpin would be shorter than 10 points, it is extended on the right until it is 10 points long. As well as the case of a hairpin terminating at the start of a system, this can also happen if a hairpin is specified with only a single note between the angle brackets. Hairpins can extend over bar boundaries; if a hairpin extends over the end of a system, it is terminated, and a fresh one started on the next system. The end of the first part of a diminuendo or the start of the continuation of a crescendo is drawn with a small gap to indicate the continuation. .subsection "Horizontal hairpin positioning" By default, a hairpin starts at the left-hand edge of the first enclosed note, and ends at the right-hand edge of the last enclosed note, but there are options to change this. The start or the end of a hairpin can be set to be halfway between the relevant note and the one that follows it, or the end of the bar, by means of the &`/h`& option. .code >/h GAB >/h B .endd This example starts the hairpin halfway between G and A, and ends it halfway between the two Bs. Without &`/h`&, it would have started just before the G and ended just after the first B. The &`/h`& option always moves the start or end to the right, never to the left. The halfway distance is just a default; the option can be used more generally by following it with a number indicating the fraction of the distance that is required. .code < GGG >&) can be used to place them above instead. When a hairpin's vertical position is not explicitly specified, it is determined by the notes under or above which it lies. However, the &%[hairpins]%& directive can also specify a fixed distance above or below the stave, or a general vertical adjustment for all hairpins. Individual hairpins can be forced to be above the stave, below the stave, or in the middle between the current stave and the one below, by means of the options &`/a`&, &`/b`&, and &`/m`&. Do not confuse &`/m`& with &`/h`&. One way of remembering the difference is to associate &`/h`& with `horizontal' rather than `halfway'. A fixed level above or below the stave can be specified by following &`/a`& or &`/b`& by a dimension. .code >/a10 bc'eb > | `& character with &`/w`& and a dimension. .code >&). The default octave for notes can be changed by means of the &%[octave]%& stave directive (&R; &<>&) or when a clef is specified (&R; &<>&). Each octave setting replaces the previous one; they are not cumulative. The setting can a positive or a negative number: .display &`[octave -1] `& C is the note two octaves below middle C &`[octave 0] `& C is the note one octave below middle C &`[octave 1] `& C is middle C .endd PMW supports 8 octaves, from -3 to +4. A note's pitch is raised one octave above the default by following the letter by a single quote character (apostrophe); two octaves require two quotes, and so on. Similarly, a note's pitch is lowered one octave by following the letter by a grave accent character. .index "accidentals" "specifying" Accidentals are indicated by special characters before the note letter. The sharp character is the obvious one to use for indicating a sharp sign, but there are no obvious candidates for flats or naturals. Therefore two keys that are adjacent on most keyboards, and next to the sharp sign on some, are used: the dollar sign for flat and the percent sign for natural. Double sharps and double flats are indicated by two sharp signs or two dollars. Here are some examples of notes of different pitches, when the octave is set at 0 (the default): .itable none 0 0 2 40 left 300 left .row &`c'`& "middle C" .row &`C''`& "the C above middle C" .row &`#g`& "G sharp below middle C" .row &`$b'`& "B flat above middle C" .row &`%c`& "C natural below middle C" .row &`##g``& "G double sharp, below the C below middle C" .endtable .subsection "Half accidentals" SUBSECThalfaccs .index "accidentals" "half sharps and flats" .index "sharp, half" .index "half sharp" .index "flat, half" .index "half flat" .index "MIDI" "half intervals" Two different symbols for half sharps and half flats are provided in the PMW-Music font; the &%halfsharpstyle%& and &%halfflatstyle%& directives specify which ones to use. A half sharp is notated as &`#-`& and a half flat as &`$-`&. .music "music46" 32 0,-16 MIDI does not support half intervals; if a MIDI file is generated, these accidentals are treated as full sharps or flats. A piece containing half accidentals can be transposed. Custom key signatures containing half accidentals are supported via the &%makekey%& directive (&R; &<>&). .subsection "Bracketted and parenthesized accidentals" SUBSECTbrackacc .index "accidentals" "bracketed" .index "accidentals" "parenthesized" .index "parenthesized accidentals" .index "bracketed accidentals" Cautionary accidentals are sometimes put in round brackets (parentheses) or square brackets. This is requested by following the accidental with a closing bracket of the appropriate type, as in these examples: .code #)a $]b ##)c .endd .subsection "Invisible accidentals" .index "invisible items" "accidentals" .index "accidentals" "invisible" When two or more parts are being overprinted on the same stave, certain accidentals on one part are often omitted, because an accidental in another part serves, in the visible music, for both. However, if a MIDI file is being generated, the music does not sound correct when played. Invisible accidentals are provided to change the note that is played, without causing anything to be displayed. Following an accidental character with a question mark (for example, &`#?g`&) causes it to become invisible. As for normal accidentals, the effect of invisible accidentals lasts until the end of the bar. Invisible accidentals may not be specified as parenthesized. .subsection "Moved accidentals" SUBSECTmovedacc .index "accidentals" "moved" .index "moved accidentals" Occasionally it is necessary to move an accidental sign to the left of where it would normally be. If the character &`<`& follows the accidental, it is placed 5 points to the left of its normal position, scaled to the stave size. Two successive &`<`& characters move 10 points left, and so on. Alternatively, a number may follow the &`<`& character to specify exactly how far left to move the accidental. .itable none 0 0 2 60 left 200 left .row &`#>&) are required above or below notes, the bracket must follow &`o`& or &`u`& and any up/down movement specification. .subsection "Transposed accidentals" SUBSECTtransposedaccidentals .index "transposition" "accidentals" .index "accidentals" "transposed" .index "^ character" "with accidental" .index "circumflex" "with accidental" Normally, unless the stave is using the pseudo-key N, PMW outputs an accidental sign for a transposed note if there is an accidental in the input, thus preserving cautionary accidentals. The special handling for the pseudo-key N is described in section &<>&. For other keys, suppression of an unnecessary accidental can be requested by following the accidental with &`^-`&. If an accidental is actually necessary in the transposed music, it is not suppressed. Suppression of unnecessary transposed accidentals can be enabled for all notes by means of the &%transposedacc%& directive. When this is done, individual accidentals can be put back by following the accidental with &`^+`&. If a bracketed accidental is required, the bracket must follow the transposition option, which in turn must follow any request to position the accidental above or below the note. PMW can be forced to choose an accidental for a transposed note in a particular way (for example, with a double sharp instead of a natural). This facility is provided for cases when the normal transposition rules are inappropriate, and it is done by following the input accidental with one of the following character sequences: .itable none 0 0 2 30 left 300 left .row &`^#`& "use a sharp (`black' notes and C and F natural)" .row &`^$`& "use a flat (`black' notes and B and E natural)" .row &`^##`& "use a double sharp (`white' notes except C and F)" .row &`^$$`& "use a double flat (`white' notes except B and E)" .row &`^%`& "use a natural (all `white' notes)" .endtable For example, if a note that is specified as &`#^##G`& is transposed up by one semitone, and would normally be shown as A-natural, it will now appear as G-double-sharp. .subsection "Rests" SUBSECTrests .index "rests" .index "rests" "invisible" .index "rests" "whole bar" .index "rhythm slash marks" .index "slash rhythm mark" .index "beat indicator sign" .index "repeated bars" .index "whole bar rests" .index "invisible items" "rests" .index "note letters" .index "rests" "letters" There are four `note letters' that are used instead of pitch letters to specify rests of various kinds. For ease of remembering, they are adjacent in the alphabet. The letter R is used to indicate a normal rest. It may not be preceded by accidentals or followed by quote characters or grave accents. The letter Q specifies a rest in the same way as R, but it causes nothing at all to be output. It is an `invisible rest' that is useful for special effects when overprinting staves or using coupled staves. The letter S behaves like R except when it is used to specify a complete bar's rest. Such bars are normally candidates for amalgamation with surrounding rest bars, leading to the appearance of `long rest' bars where possible (&R; &<>&). When a rest bar is specified using S instead of R, it is always output as an individual bar and never amalgamated. You can think of S as standing for `single' or `separate'. The letter T behaves like R except when it is used for a crotchet rest or a whole bar's rest. In these cases it is a pseudo rest that is used as a way of coding two special features. When T specifies a crotchet, instead of a rest sign, a thick slash &{}&&~ is output. This mark is used to indicate a beat without specifying a pitch (often because the part specifies chords by means of chord symbols). When T is followed by an exclamation mark to indicate a whole bar rest, the bar is never amalgamated with adjacent bars, and instead of a rest sign, the conventional `repeat previous bar' sign &{}&&~ is output. However, no sound is generated for MIDI output. .subsection "Length of notes and rests" SUBSECTlengthnotesrests .index "length" "of notes" .index "length" "of rests" .index "notes" "length" .index "rests" "length" The primary length of a note or rest (visible or invisible) is indicated by the case of its letter. An upper case (capital) letter is used for a minim, and a lower case (small) letter for a crotchet. The primary length is changed by the addition of &`+`&, &`-`&, and &`=`& characters, which follow any quotes or grave accents that adjust the note's octave, for example: &`C'+`&. These characters can be freely mixed on any note, but &`+`& normally follows an upper case letter whereas &`-`& and &`=`& normally follow a lower case letter. The only restriction is the maximum and minimum supported note length (breve and hemi-demi-semiquaver). .index "breve" "specifying" .index "flags" .index "notes" "flags" A plus character doubles the note's length. If used after an upper case letter it gives a semibreve (one plus) or a breve (two plusses). A hyphen halves the note length and an equals sign divides it by four. If used after a lower case letter, the number of horizontal lines in these characters is equal to the number of `flags' that are attached to the stem of the note. A minus sign is a single flag for a quaver, an equals sign is two flags for a semiquaver, an equals followed by a minus sign is three flags for a demi-semiquaver, and two equals signs are four flags for a hemi-demi-semiquaver. .index "&%[doublenotes]%&" .index "&%doublenotes%&" .index "doubling note lengths" .index "notes" "doubling length" .index "&%[halvenotes]%&" .index "&%halvenotes%&" .index "halving note lengths" .index "notes" "halving length" Some music contains long runs of quavers or semiquavers, which requires typing minus or equals signs after every note letter by default. This can be avoided by making use of the &%[halvenotes]%& stave directive (&R; &<>&). Notes that follow this directive have their length halved, so upper case letters are now crotchets and lower case letters are quavers. The effect is cumulative, so using &%[halvenotes]%& twice turns lower case letters into semiquavers. The effect can be reversed with &%[doublenotes]%& (&R; &<>&). For example, these three bars contain exactly the same notes: .code a-b-c-d-; a-b-c-d- | [halvenotes] abcd; abcd | [doublenotes] a-b-c-d-; a-b-c-d- | .endd There are also &%halvenotes%& and &%doublenotes%& header directives (&R; &<>&, &<>&), which cause every stave to begin with halved or doubled notes, but these directives also affect time signatures and are more useful for adjusting the overall format of a piece than for minimizing typing. .index "dotted notes" .index "notes" "dotted" One or two dots may follow a note or rest as in conventional music, to extend its length by half and three-quarters, respectively. There is also support for .index "Ghent, Emmanuel" Emmanuel Ghent's notation for extending the length of a note by one .index "plus after notes" .index "notes" "followed by plus" quarter (as reported in Gardner Read's book &'Music Notation'&). The PMW encoding for this is to follow the note with a dot and then a plus sign. The length of the note is extended by one quarter, and it is shown as the normal note followed by a plus sign. This facility is particularly useful when there are five beats in a bar. .code [time 5/4] A+.+ .endd This example outputs a semibreve followed by a plus, indicating a note whose length is equal to five crotchets. Here are some examples of notes and rests of different lengths without any automatic halving or doubling: .itable none 0 0 2 60 left 200 left .row &`A++`& "breve" .row &`#B`+`& "semibreve" .row &`G+.+`& "semibreve followed by plus" .row &`F.`& "dotted minim" .row &`R`& "minim rest" .row &`e..`& "double dotted crotchet" .row &`$$g`& "crotchet" .row &`r-.`& "dotted quaver" .row &`c'-`& "quaver" .row &`d=`& "semiquaver" .row &`e''=-`& "demi-semiquaver" .row &`%b`==`& "hemi-demi-semiquaver" .endtable .subsection "Chords" .index "chords" "specifying" PMW can deal with certain kinds of chord, notated by enclosing a number of notes in parentheses. The notes must either all be of the same musical length, or all but the first must consist of just a lower case letter, in which case the length is taken from the first note. .code (gb) (c'-#g'-) (A++A'++) (g=-bd'g') .endd The notes do not have to be in any particular pitch order. If there are to be accents or ornaments on the chord (staccato, etc.), these must be specified on the first note. Other note options that apply just to one note (for example, notehead size or shape) can be on any note. A stem length adjustment is ignored unless it is on the note nearest to the stem. .index "beaming" "chords" .index "chords" "beaming" .index "semicolon" "beam breaking (chords)" .index "; (semicolon)" "beam breaking (chords)" .index "comma" "beam breaking (chords)" .index ", (comma)" "beam breaking (chords)" Chords consisting of quavers or shorter notes are beamed in the usual way (&R; &<>&); a semicolon after the closing parenthesis breaks all the beaming, whereas a comma breaks secondary beams only. .index "chords" "ties" .index "ties" "chords" If the chord is tied (&R; &<>&), the underline character that indicates a tie must appear after the closing parenthesis and before any beam break character. Note that an underline character cannot be used for a short slur when chords are involved (as it can for single notes), because if two chords are joined by an underscore, all the notes in each that are of the same pitch are joined by a tie mark. The &%[slur]%& directive must be used to obtain just a single slur mark. .index "accidentals" "moved" .index "moved accidentals" .index "accidentals" "on chords" .index "chords" "accidentals" PMW automatically positions accidentals on chords unless one or more notes in the chord contains an explicit accidental positioning request (&R; &<>&). In this case, no automatic positioning is done; it is assumed that the user has positioned all the accidentals in the chord by hand. .subsection "Horizontal movement of augmentation dots" .index "augmentation dots" "moving horizontally" .index "moved augmentation dots" .index "dotted notes" "moving dots horizontally" It is occasionally necessary to move augmentation dots to the right, usually for multiple parts on the same stave with notes close together. If an augmentation dot is preceded by the character &`>`& it is moved right by 5 points (scaled to the stave size). A different distance can be specified by preceding the &`>`& with a dimension. .code a>. g6.2>.. .endd In this example, the dot after the A is moved 5 points to the right and the double-dot after the g is moved 6.2 points. In a chord, the &`>`& character must be used on the first note, and not on any others. It affects all the dots in the chord, because they are always vertically aligned. .subsection "Vertical position of augmentation dots" SUBSECTdotvert .index "augmentation dots" "vertical position" .index "dotted notes" "vertical position of dots" .index "notes" "movement of dots" The vertical position of dots for notes on lines can be controlled by the &%[dots]%& directive and the &`\:\`& note option (&R; &<>&). This option affects only notes that lie on stave lines. Normally dots for such notes are placed in the stave space above, but if the colon option is present, they are placed instead in the space below. The default position can be changed by means of the &%[dots]%& stave directive; when the default is below, the colon item causes the dot for a particular note to be placed above. .code [treble] e.\:\ @ dot below [dots below] g..\:\ @ dot above .endd The colon option can be used for individual notes within a chord. However, PMW overrides the dot position setting when an interval of a second occurs in a chord. In this case, the lower note, if it is on a line, always has its dot below, and the upper note, if it is on a line, always has its dot above. The &`\:\`& option does not affect notes in spaces, but it is sometimes useful to be able to move their augmentation dots into the space above. The option &`\::\`& achieves this; it has no effect if used on a note that lies on a line. For example, the chord &`(e.g.a.)`& in the treble clef is shown by default with only two dots. If three dots are required, there are two ways in which this can be achieved: .code (e.\:\g.a.) (e.g.a.\::\) .endd The first moves the dot on the lowest note down, and the second moves the dot on the highest note up. When there is an interval of a second in a chord and the higher note has its dot moved up by this means, the lower note's dot is no longer automatically moved down. .subsection "Notehead shapes and sizes" SUBSECTnoteheads .index "noteheads" "size of" The shape of noteheads is controlled by the &%[noteheads]%& directive (&R; &<>&). Smaller than normal noteheads are used for grace notes, and for notes that appear between &%[cue]%& and &%[endcue]%&. In these cases, the entire note (head and stem) is output at a smaller size. You can also request a small (cue-sized) notehead, without affecting any other part of the note, by means of the &`\sm\`& note option (&R; &<>&). .index "optional notes" This can be useful for indicating optional notes by means of a small notehead within a chord. This option affects only the notehead; the size of the stem, the position of any dots, and all other aspects of the note are not changed. Another way of indicating optional notes is to enclose the notehead in round brackets (parentheses). This can be requested for individual notes by means of the &`\)\`& note option (&R; &<>&). However, this does not work for noteheads in a chord that are on the `wrong' side of the stem. .subsection "Whole bar rests" .index "rests" "whole bar" .index "whole bar rests" There is one other special character that may follow the rest letters R, Q, S, or T. This is the exclamation mark, and it is used to indicate that the rest fills an entire bar. Without this, it is not possible to specify a complete bar's rest as one item in all time signatures. The difference between &`R!`& and &`Q!`& is that the former outputs a conventional whole bar rest sign, whereas the latter causes nothing at all to be output in the bar. This is useful when staves are being overprinted. &`S!`& behaves like &`R!`& except that the bar in which it appears is never eligible for amalgamation into a single multiple rest bar with the bars on either side of it. A bar containing &`S!`& is always shown on its own. &`T!`& is a special notation for the conventional `repeat last bar' sign (&R; &<>&. Whole bar rests specified using an exclamation mark are normally output as semibreve rests, centred horizontally in the bar. The form of the whole bar rest sign can be altered for certain time signatures by means of the &%breverests%& header directive or by using the masquerade facility (&R; &<>&). Rests that happen to fill the bar, but which are not specified with exclamation marks, are output as rests of the appropriate length. For example, in 3/4 time the rest &`R.`& is output as a dotted minim rest. If bar lengths are being checked, such a rest is positioned centred in the bar, but if they are not, it is put at the left-hand end. If a bar contains only whole bars rest on some staves and single notes on others, it sometimes looks better if the notes are also centred in the bar. This can be done by using the &`\C\`& option for the notes (&R; &<>&). .subsection "Combining a sequence of rest bars" SUBSECTreprest .index "rests" "repeated bars" .index "repeated rest bars" .index "many bars rest" .pi sdop "superscript_up=""20""" When each bar in a sequence of bars contains only a single whole-bar rest specified using R or Q (but not S or T) they are amalgamated into a single bar. If the first bar's rest used Q, nothing is output in the bar. Otherwise, a conventional `long rest' sign is output, with the number of bars above. Of course, this happens only if all the staves in the system have rest bars, typically when one or more parts are being extracted from a score. By default, any number of repeated rest bars are shown in the same way, using the &+[&{{{zzz0}}}&]+& sign, which is the modern convention. Older music sometimes used special code signs when the number of bars was between two and eight; see the &%codemultirests%& header directive if you want to use this style (&R; &<>&). .pi sdop "superscript_up=""33""" .index "fermata" "with whole bar rest" A rest bar is considered eligible for amalgamation with its neighbours if it contains nothing but an unadorned rest item. A rest bar with a fermata on the rest (for example) is always treated as a separate bar. However, the initial bar of an amalgamated sequence is permitted to contain items such as key and time signatures and a beginning repeat mark, and the last bar in a sequence may end with a terminating repeat sign or a clef. A text item is also permitted in the first bar of an amalgamated sequence, for example, to specify a tempo. If you do not want such a bar to be amalgamated, you must specify its rest using S instead of R. .code [10]R! | "G.P." S! | [8]R! | .endd If &`R`& is used instead of &`S`& in this example, the last nine bars are output as a single multi-bar rest when this stave is the only one selected. As it stands, the G.P. bar is output on its own, followed by an 8-bar multiple rest. .index "tacet movements" .index "repeated rest bars" "width of" .index "repeated rest bars" "stretching" When a multi-rest bar is stretched sufficiently, the long rest sign is also stretched. This provides a way of generating a single multi-rest bar across the whole page for a &'tacet'& movement in an instrumental part. For example: .code [stave 1 treble 1] [space 200][40]R! [endstave] .endd If left and right justification is in effect (&R; &<>&), all the &%[space]%& directive has to do is to widen the bar sufficiently for the justification to kick in. It must be given before the repeat count, to ensure that the remaining bars contain nothing other than the rest. If a widened repeated rest is not at the start of a line, and there is something at the start of the first bar, the situation is a bit more complicated. Consider: .code [stave 1 treble 1] EF | GG | [key E$ space 200][30]R! [endstave] .endd Whether the &%[space]%& directive appears before or after the &%[key]%& directive makes no difference, because what &%[space]%& affects is the position of the following note or rest. A mid-line key signature is always positioned relative to the following note/rest position. In this example, the effect of &%[space]%& is to move both the key signature and long rest sign well to the right. The (messy) solution is to use &%[move]%& directives to adjust their positions: .code [stave 1 treble 1] EF | GG | [space 200 move -200 key E$ move -100][30]R! [endstave] .endd Notice that the second &%[move]%& specifies half the distance of the first. .index "repeated rest bars" "squashing" The &%[space]%& directive can be used with a small negative argument to make a repeated rest bar a bit narrower than the default. Reducing it by up to 20 points is usually reasonable. .subsection "Notes that fill a bar" .index "notes" "whole bar" .index "whole bar notes" Sometimes there is an unorthodox requirement to specify that a note fills a bar, independent of its conventional length. Here is an example: .music "music55" 70 4,-16 This effect can be achieved by following a note letter with an exclamation mark, exactly as for a whole bar rest. The second stave in the example above is notated like this: .code [stave 2 bass 0] G!_ | G! | [endstave] .endd By default, a semibreve notehead is output, but this can be changed by using the masquerade facility (&R; &<>&). .subsection "Note expression and options" SUBSECTnoteexpr .index "notes" "expression" .index "notes" "options" .index "notes" "grace" .index "notes" "accents" .index "options" "for notes" The expression/options portion of a note includes all additional marks such as staccato, emphasis, trills, mordents and fermatas. It can also indicate that the note is a grace note, force the stem of the note to point up or down, indicate the lengthening or shortening of the note's stem, change the position of accents and augmentation dots, and so on. For many notes there are no such special marks and this part will not be present. When it is present, it consists of two backslash characters, between which there are one or more letters or other characters indicating the expression or option required. For example, a dot and a minus sign signify a staccato dot or a solid line emphasis, respectively. The possible character sequences that can occur are as follows: .index "expression marks" .index "staccato" .index "staccatissimo" .index "grace notes" .index "stems" "direction" .index "accents" "on notes" .index "tremolo" .index "harmonics" .index "trill" .index "arpeggios" .index "chords" "spread" .index "spread chords" .index "fermata" "specifying" .index "mordent" .index "turns" .index "bowing marks" .index "stems" "length" .index "length" "of stems" .index "centred notes" .index "noteheads" "bracketed" .index "noteheads" "shape" .itable none 0 0 2 66 left 300 left .row &`\/\`& "single tremolo mark" .row &`\//\`& "double tremolo mark" .row &`\///\`& "three tremolo marks" .row &`\~\`& "`upper' mordent sign" .row &`\~|\`& "`lower' mordent sign" .row &`\~~\`& "double `upper' mordent sign" .row &`\~~|\`& "double `lower' mordent sign" .row &`\!\`& "put accent on stem side, trill or fermata below (&R; &<>&)" .row &`\.\`& "staccato dot" .row &`\..\`& "staccatissimo mark" .row &`\:\`& "invert augmentation dot position (notes on lines, &R; &<>&)" .row &`\::\`& "move augmentation dot up (notes in spaces, &R; &<>&)" .row &`\-\`& "solid line emphasis mark" .row &`\>\`& "horizontal wedge emphasis mark" .row &`\'\`& "`start of bar' accent" .row &`\)\`& "notehead in round brackets" .row &`\a`&<&'n'&>&`\`& "accent number <&'n'&> (&R; &<>&)" .row &`\ar\`& "arpeggio mark" .row &`\ard\`& "arpeggio mark with downward arrow" .row &`\aru\`& "arpeggio mark with upward arrow" .row &`\c\`& "put on coupled stave (&R; &<>&)" .row &`\C\`& "flip centring if only note in bar" .row &`\d\`& "string down bow (organ heel) mark" .row &`\f\`& "fermata (pause) above note" .row &`\f!\`& "fermata (pause) below note" .row &`\g\`& "grace note" .row &`\g/\`& "grace note with slanted line" .row &`\h\`& "do not put on coupled stave (&R; &<>&)" .row &`\m\`& "masquerade note (&R; &<>&)" .row &`\nc\`& "circular notehead" .row &`\nd\`& "`direct' notehead" .row &`\nh\`& "harmonic (diamond) notehead" .row &`\nn\`& "normal notehead" .row &`\no\`& "notehead only, no stem" .row &`\nx\`& "cross notehead" .row &`\nz\`& "no notehead" .row &`\o\`& "small circle over note (harmonic)" .row &`\sd\`& "force note stem down" .row &`\su\`& "force note stem up" .row &`\sw\`& "swap note stem direction in beam (&R; &<>&)" .row &`\sl`&<&'n'&>&`\`& "lengthen stem by <&'n'&> points (&R; &<>&)" .row &`\sl-`&<&'n'&>&`\`& "shorten stem by <&'n'&> points (&R; &<>&)" .row &`\sm\`& "use small (cue sized) notehead (&R; &<>&)" .row &`\sp\`& "spread chord" .row &`\t\`& "turn" .row &`\t|\`& "inverted turn" .row &`\tr\`& "trill" .row &`\tr#\`& "trill, with a sharp sign above" .row &`\tr$\`& "trill, with a flat sign above" .row &`\tr%\`& "trill, with a natural above" .row &`\u\`& "string up bow (organ toe) mark" .row &`\v\`& "small, closed vertical wedge accent" .row &`\V\`& "large, open vertical wedge accent" .row &`\x\`& "cancel default expression (&R; &<>&)" .endtable Here are some examples (there is further discussion below): .music "music39" 164 4,-12 More than one of these character sequences can be present between the backslashes, and spaces can be used to separate them, for example: .itable none 0 0 2 66 left 200 left .row "&`#g\.-\`&" "staccato and tenuto" .row "&`\tr sd\`&" "trill and stem down" .endtable However, staccato and staccatissimo cannot be used together. Notes that are marked as grace notes can be of any length &-- they do not have to be quavers or semiquavers. PMW beams grace notes where possible. The stems of grace notes always point upwards, whatever the pitch, unless an explicit downward stem is requested by specifying &`\sd\`&. .index "grace notes, stem direction" If there is more than one grace note in sequence, specifying a downward stem for the first one causes all of them to have downward stems. The sequences &`\c\`& and &`\h\`& are used to override the default note placing when coupled staves are in use (see &%[couple]%&). The single and double colon options are concerned with the vertical placement of augmentation dots (&R; &<>&). When there is a whole bar rest in some staves, and just a single note in the others, it sometimes looks odd that the rest is centred horizontally in the bar and the note is not, especially if the note is a semibreve. The option &`\C\`&, if used on the first note in a bar, causes it to be centred like a whole bar rest, provided that the note has a length equal to the current bar length. On any other note or rest &`\C\`& is ignored. In fact, &`\C\`& flips the centring state of the note or rest, so &`R!\C\`& can be used for a whole bar rest that is &'not'& centred. The options that start with the letter &`n`& adjust the notehead setting for an individual note. The default is set by the &%[noteheads]%& stave directive, whose description contains the full details (&R; &<>&). In a chord, these options apply only to the note on which they appear, so it is possible to have a mixture of noteheads in a chord. .subsection "General accent notation" SUBSECTgenaccnot The item &`\a`&<&'n'&>\ is a general notation for specifying accents. The values that <&'n'&> may take are: .itable none 0 0 2 12 left 200 left .row &`1`& "staccato dot&~ &-[&{>}&]-&" .row &`2`& "horizontal bar&~ &-[&{T}&]-&" .row &`3`& "horizontal wedge&~ &-[&{U}&]-&" .row &`4`& "small, closed vertical wedge&~ &{Y}&" .row &`5`& "large, open vertical wedge&~ &{W}&" .row &`6`& "string down bow&~ &{e}&" .row &`7`& "string up bow&~ &{g}&" .row &`8`& "ring (harmonic)&~ &{†}&" .row &`9`& "`start of bar' accent&~ &{œ}&" .row &`10`& "staccatissimo mark&~ &{Â}&" .endtable .subsection "Position of accents and ornaments" SUBSECTposaccorn By default, accents and the harmonic ring are positioned opposite a note's stem. .index "accents" "position of" That is, they are below the note if the stem is up, and above the note if the stem is down. (A notional stem direction is computed for breves and semibreves.) Fermatas, trill signs, and other ornaments are by default placed above the note, independent of the stem direction. If an accent or harmonic ring mark is followed by an exclamation mark, PMW positions it on the same side of the notehead as the stem, which is occasionally necessary when more than one part is being output on the same stave. If &`!`& is used with a fermata or trill or other ornament, .index "fermata" "below note" .index "trill" "position of" .index "ornaments" "position of" the sign is placed below instead of above the note. String bowing marks are not affected by the use of the &`!`& option. They are put above the stave unless the &%[bowing]%& directive has specified othewise. .index "accents" "within the stave" Three accents (staccato, staccatissimo, emphasis bar) and the harmonic circle are positioned within the stave for notes of an appropriate pitch. Also, they are placed inside ties and short slurs (&R; &<>&) when they are both opposite the stem. The other accents and ornaments are always placed outside the stave and beyond ties and short slurs by default. However, the position of all accents and ornaments can be adjusted, as described in the next section. .subsection "Moving accents and ornaments" SUBSECTmoveaccents .index "accents" "position of" .index "accents" "moving" .index "ornaments" "position of" .index "ornaments" "moving" .index "moved accents" .index "moved ornaments" It is possible to move all accents and ornaments up and down, or, except for tremolos, left and right. This is done by placing &`/u`&, &`/d`&, &`/l`&, or &`/r`&, as appropriate, followed by a number of points, after the accent or ornament specification. .code a\./u4\ g\f/u10\ .endd This example raises the staccato dot by 4 points and the fermata by 10 points. For both accents and ornaments, the vertical movement specified is scaled by the relative size of the stave. Moving an accent does not affect the placement of anything else. For example, if there is text below a note with an accent that is also below it, moving the accent does not affect the vertical position of the text. There is a possibility of ambiguity if a tremolo and a moved accent or ornament are specified on the same note, as the tremolo notation is a slash. To avoid this, the tremolo must be specified before (for example) a fermata: &`g\/f\`& is correct, but &`g\f/\`& causes an error, because it is taken as a fermata with an incomplete movement request. .index "tremolo" "moving" .index "moved tremolos" Tremolo markings themselves can be moved up and down, but not left or right. The notation looks confusing, but is consistent: for example, &`G\//u4\`& specifies a single tremolo that is moved up by 4 points. .subsection "Bracketing accents and ornaments" .index "accents" "bracketing" .index "ornaments" "bracketing" .index "bracketing accents" .index "bracketing ornaments" Brackets are sometimes used to indicate editorial accents and ornaments. If there is a sequence of editorially marked notes, the sequence may be bracketed rather than each individual note. The following may be used after the specification of any accent or the specification for a fermata, mordant, trill, or turn, to indicate bracketing: .itable none 0 0 2 30 left 300 left .row &`/(`& "precede with an opening parenthesis" .row &`/[`& "precede with an opening square bracket" .row &`/)`& "follow with a closing parenthesis" .row &`/]`& "follow with a closing square bracket" .row &`/b`& "enclose in parentheses" .row &`/B`& "enclose in square brackets" .endtable Here is a short example: .code d'\../b\ e'\../(\ e'\../)\ g\-/B\ | .endd .music "music53" 40 4,-14 .subsection "Repeated expression marks" SECTrepexpr .index "notes" "repeated expression" .index "repeated expression marks" If a sequence of notes are all to be marked with the same accent, this can be specified by giving the expression syntax for one note inside square brackets. .code [\.\] a b c d .endd This example causes all the notes to be marked staccato. This feature is limited to accents and a few other expression marks. The only characters that may appear within backslashes in this context are: .itable none 0 0 2 60 left 300 left .row &`.`& "staccato" .row &`..`& "staccatissimo" .row &`-`& "horizontal bar" .row &`>`& "horizontal wedge accent" .row &`v`& "small, closed vertical wedge" .row &`V`& "large, open vertical wedge" .row &`'`& "`start of bar' accent" .row &`o`& "ring (harmonic)" .row &`d`& "string down bow mark" .row &`u`& "string up bow mark" .row &`a`&<&'n'&> "accent number <&'n'&>" .row &`/`& "single tremolo mark" .row &`//`& "double tremolo mark" .row &`///`& "triple tremolo mark" .row &`!`& "put accents on other side of notes" .endtable Note that the movement and bracketing options that are available for expression marks on individual notes cannot be used here. To cancel a setting, two backslashes with nothing between them should be given between square brackets. Cancellation can also be carried out for an individual note by means of the note option letter &`x`&. In the following example, the note D is output without a staccato dot. .code [\.\] a b c d\x\ e f g [\\] .endd Expression/option items are processed from left to right. If there are two or more options being defaulted, &`x`& cancels them all, but any of them can be put back again afterwards. .subsection "Stem lengths" SUBSECTstemlengths .index "length" "of stems" .index "stems" "length" The note option consisting of the letters &`sl`& followed by a number is meaningful for notes shorter than a semibreve. It specifies a lengthening or shortening of the note's stem. The number specifies the amount by which the stem is to be changed; positive numbers cause lengthening, negative numbers cause shortening. .code a\sl3.4\ b\sl-1.2\ .endd This example lengthens the stem of the first note by 3.4 points and shortens the stem of the second by 1.2 points. PMW maintains a minimum stem length of 8 points, beyond which shortening is ignored. The &%shortenstems%& header directive can be used to request PMW automatically to shorten note stems that point in the `wrong' direction &-- if this is happening, any explicit adjustment is added to the automatically computed value. .index "beaming" "stem length" .index "stems" "length in beam" The &`sl`& notation for shortening or lengthening the stem of a note works for beamed as well as unbeamed notes, and is an alternative to the &%[beammove]%& directive for adjusting the vertical position of beams. (Note that the &%stemlengths%& setting does not apply to beamed notes.) Lengthening the stem of any note in a beamed group pushes the beam further away from the noteheads. However, to move a beam nearer to the noteheads you have to shorten the stems of all the notes in the beam, which is messier than using &%[beammove]%&. Consider this example: .code [stems up] g`-c-e-g- | g`-c-e-\sl5\g- | g`-\sl-4\c-e-g- | g`-\sl-4\c-\sl-4\e-\sl-4\g-\sl-4\ | [beammove -4] g`-c-e-g- | .endd .music "music58" 40 10,-16 In the first bar there are no stem length adjustments. In the second bar, the third note has its stem lengthened by 5 points, causing the other notes' stems also to be lengthened to make them join the beam. In the third bar, one note's stem is shortened, but this has no effect because the other notes still have full-length stems. In the fourth bar, all the notes' stems are shortened. In the fifth bar, the same effect is achieved using &%[beammove]%&. .subsection "Masquerading notes and rests" SUBSECTmasquerade .index "masquerading notes" .index "notes" "masquerading" .index "rests" "masquerading" For special effects (for example, tremolos between notes &-- see &%[tremolo]%&) it is sometimes desirable to use a note or rest of one kind in place of another, for example a crotchet instead of a quaver, or a breve instead of a semibreve. This kind of &'masquerading'& is requested by the letter &`m`& in the options part of the note, and the type of note required is indicated by the form of the &`m`& in the same way as for normal notes. For a chord, the masquerade indication must appear on the first note. The only effect of masquerading is to substitute a different note for display; the position of the note is not affected. Masquerading does not disable beaming. When a masquerade is requested, an augmentation dot can be requested with it, and if it is not, no dot is output, even if the original note is augmented. .index "dotted notes" "dot before bar line" The ability to add augmentation dots makes it easier to set renaissance music in the style with a dot before a bar line instead of a tie to a quaver in the next bar. .itable none 0 0 2 60 left 300 left .row &`G+\M++\`& "outputs a breve instead of a semibreve" .row &`g-\m\`& "outputs a crotchet instead of a quaver" .row &`g.\M\`& "outputs an undotted minim instead of a dotted crotchet" .row &`g\m.\`& "adds a dot to a crotchet without lengthening it" .endtable If the note is beamed, this option is restricted in its use: the only available facility is to print a minim notehead instead of a crotchet notehead. .code g-\M\ b- d'- .endd .index "beaming" "across rests" In this example, the first notehead is shown as a minim. Masquerade requests for noteheads other than minims are ignored within beams. However, masqueraded &'rests'& are not restricted within beamed groups. This makes it possible to print (unconventionally) a crotchet rest under a beam, by using a construction such as &`r-\m\q-`& within a beamed group. Note the use of an invisible quaver rest to make the item's length up to a crotchet. .subsection "Expression items on rests" .index "rests" "expression items" .index "expression items and rests" Accent marks are not supported on rests, but pause marks (fermatas) are permitted. Other ornaments such as turns are allowed on invisible rests only. This gives a way of outputting these marks on their own at positions in a bar that are not associated with visible notes. .subsection "Changing rest levels" SUBSECTchrele .index "rests" "level" .index "height of rests" A note option consisting of the letter &`l`& followed by a number is permitted for rests only. A negative number may be specified. This has the effect of moving the rest vertically up (for positive numbers) or down (for negative numbers) by the given number of points. .code R\l4\ .endd This example outputs a minim rest on the fourth instead of the third line. If rests are generally to be appear at a non-standard level, the &%[rlevel]%& directive can be used to avoid having to give this option on every rest. If this option is used in conjunction with &%[rlevel]%& or &%[move]%&, the effect is cumulative. .subsection "Ties and short slurs" SUBSECTshortslur .index "ties" "specifying" .index "slurs" "over two notes, specifying" .index "short slurs (over two notes)" Two adjacent notes may be tied, or a slur generated between them, by ending the first note with an underline character. PMW does not distinguish between a tie and a slur between two adjacent single notes, except that when the underline represents a tie (the two notes have the same pitch), the stem direction of the second note defaults to being the same as that of the first note, and if a MIDI file is being generated, the tie is honoured. The stem direction defaulting does not happen in the case of a short slur, when the two notes have different pitches. In both cases, explicit stem directions can be specified if the defaults are not what you want. .index "chords" "tied" In contrast to single notes, when an underscore follows a chord it causes tie lines to be drawn only between notes of the same pitch in the chord and the following chord. Thus an underscore always represents one or more ties when it follows a chord. The &%[slur]%& directive must be used when slurs are required between adjacent chords (and when slurs cover more than two single notes). If two notes (or chords) that form part of a beam are tied, it does not cause the beam to be broken. An explicit beam break must be specified if required. .index "ties" "direction" Ties are normally put on the opposite side of the noteheads to the stems. A tie on a single note can be forced to be above or below the notehead by adding the qualifier &`/a`& or &`/b`& after the underline character. .code a_/a | a e'_/b | e' .endd In this example, the tie between the A notes is forced above, and the tie between the E notes is forced below. Such an indication takes precedence over the &%[ties]%& stave directive, which sets a default position for all subsequent ties. The same qualifiers are also available for chords, where they force &'all'& the tie marks to be drawn in the specified direction. It is also possible, for a chord, to specify that only some of the tie marks are to be drawn above or below the noteheads, the remainder appearing on the opposite side. This is done by inserting a digit between the &`/`& character and the letter that follows. .code (ace)_/1a (ace) (dfa)_/2b (dfa) .endd These examples show two different ways of specifying that one of the three tie marks is to be drawn above the noteheads, with the other two below. .subsection "Editorial and intermittent ties" .index "editorial ties" .index "ties" "editorial" .index "dashed ties" .index "ties" "dashed" .index "dotted ties" .index "ties" "dotted" Ties can be marked editorial, or drawn dashed or dotted, by means of the following qualifiers, which are the same options as for slurs: .itable none 0 0 2 30 left 300 left .row &`/e`& "editorial &-- a short line is drawn through the tie" .row &`/i`& "intermittent &-- that is, dashed" .row &`/ip`& "intermittent periods, that is, dotted" .endtable .subsection "Hanging ties" SUBSECThangingties .index "hanging ties" .index "ties" "hanging" .index "invisible items" "notes" .index "notes" "invisible" Occasionally there is a requirement to print tie marks that do not end on another note or chord, but simply extend some distance to the right to indicate that the note or chord should be held on for some time. These can be notated by making the second note or chord invisible using the stave directive &%[notes off]%&. In the case of a chord, the ends of all the tie marks are vertically aligned when this is done. To help with the positioning of the ends of this kind of tie, tie marks are allowed to continue over rests (usually invisible ones). .code (cde)_ | qq [notes off] (cde) [notes on] | .endd This example extends the ties to the position of the third crotchet in an otherwise empty bar. .subsection "Glissando marks" .index "glissandos" Glissando marks are available for single notes but not for chords. The glissando notation is an extension of the short slur notation. If a short slur mark (underscore) is followed by &`/g`&, a glissando line is drawn between the relevant notes. If both a slur and a glissando mark are required, &`/s`& must be added. If the slur is being forced above or below with &`/a`& or &`/b`&, it is not necessary to use &`/s`&. .itable none 0 0 2 90 left 200 left .row &`f_`& "slur only" .row &`f_/g`& "glissando only" .row &`f_/s/g`& "glissando and slur" .row &`f_/g/a`& "glissando and slur, slur above" .endtable It may occasionally be necessary to insert extra space between notes that are joined by glissando marks. There are examples of the use of glissandos in sections &<>& and &<>&. .subsection "Triplets and other irregular note groups" SUBSECTplets .index "irregular note groups" In his book &'Music Notation'&, Gardner Read writes: &'Notating unequal groups &-- triplets against duplets or quadruplets, quintuplets against triplets, and so on &-- is one of the musician's most perplexing problems.'& PMW handles simple cases straightforwardly, but also has facilities for dealing with more general groups. One complication is in the choice of note-value to use for the irregular group. Gardner Read says: &'The note-values of the extraordinary group are always determined by the note-values of the ordinary group against which they are set.'& […] &'When, however, the number of notes in the irregular group exceeds twice the number of note-values in the regular group, the uncommon group must employ the next smaller note-value'&. This is not as simple as it sounds. Consider the case of five equal notes in a bar in 3/4 time. If the regular group is three crotchets, the irregular group should use crotchets because five is less than twice three; however, if the regular group is six quavers, the irregular group must use quavers, because an irregular group never uses longer notes than the regular group. .music "music49" 72 4,-14 In PMW input, brace characters (curly brackets) are used to enclose a group of notes that is not a standard division of a longer note or group. In simple cases, the opening brace is followed by a single number to indicate the number of notes in the irregular group. If this number is omitted, the group is assumed to be a triplet. .itable none 0 0 2 120 left 200 left .row "&`{a b c}`&" "three crotchets in the time of two" .row "&`{2 g-a-}`&" "two quavers in the time of three" .row "&`{5 c-d-e-f-g-}`&" "five quavers in the time of four" .endtable By default, PMW makes assumptions about the size of the regular group that is being subdivided, based on the number of subdivisions. However, in order to cope with more complicated cases, another parameter may also be set. The general form of an irregular note group is: .display &`{`&&'s'&&`/`&&'n'&&` `&<&'notes...'&>&`}`& .endd The number of notes in the irregular group is &'n'&, and &'s'& controls the size of the group that is being divided. If &'s'& (and its slash) are omitted, as in the simple examples above, a default value is chosen that works well in most common cases: .ilist If &'n'& is a power of two (2, 4, 8, 16), &'s'& defaults to three. Thus, the example &`{2`& &` g-a-}`& above is equivalent to &`{3/2`& &`g-a-}`&. .next Otherwise, the default is two, so the example &`{5`& &`c-d-e-f-g-}`& above is equivalent to &`{2/5`& &`c-d-e-f-g-}`&. .endlist A note in an irregular group can be longer or shorter than a normal note of the same type. For example, in a duplet, notes are longer, whereas in a triplet they are shorter. PMW modifies the lengths of irregular notes as follows: .olist When &'n'& is less than 2*&'s'&, the lengths of the notes in the irregular group are multiplied by &'s'&&`/`&&'n'&. In a triplet such as &`{g-g-g-}`&, where &'s'& and &'n'& have their default values of two and three, respectively, each quaver is shortened to 2/3 of its normal length, so three of them take up the time of two normal quavers. .next When &'n'& is 2*&'s'& or more, but less than 4*&'s'&, the lengths of the notes in the irregular group are multiplied by (2*&'s'&)/&'n'&. Thus every note in the group &`{2/5`& &`c-d-e-f-g-}`& is multiplied by 4/5, giving a total of four regular quavers, that is, two crotchets. .next When &'n'& is 4*&'s'& or more, the lengths of the notes in the irregular group are multiplied by (4*&'s'&)/&'n'&. .endlist These rules are sufficient to handle most cases. For example, the group &`{7`& &`f-g-a-b-f-a-g-}`& is a division of two crotchets into seven quavers. However, a division of three crotchets into seven quavers is notated on the music stave in exactly the same manner &-- music notation is ambiguous in this respect. It is not possible to determine what a group of quavers with a `7' above it actually means, without looking at the time signature or the rest of the bar, and PMW is not capable of analysing bars in this detail. This is an example of a case where it is necessary to specify &'s'& explicitly; the code for dividing three crotchets into seven quavers is &`{3/7`& &`f-g-a-b-f-a-g-}`&. Because of rule (2) above, this means that each note's length is multipled by 6/7 instead of 4/7. Published music is not always consistent in how some larger groups are notated. PMW can handle some of the alternative requirements. A division of three crotchets into 11 should use quavers, because 11 is less than 12, the number of semiquavers in three crotchets. The normal coding would be: .code {3/11 g-g-g-g-g-g-g-g-g-g-g-} .endd However, if you want to notate three crotchets divided into eleven, but using semiquavers instead of quavers, you can use this: .code {12/11 g=g=g=g=g=g=g=g=g=g=g=} .endd The length of each semiquaver is multiplied by 12/11, so the length of the group is 12 semiquavers, that is, three crotchets. The illustration below shows some of the examples discussed in this section, with regular groups on a second stave to show how the irregular groups are interpreted. .music "music48" 132 4,-20 .subsection "Options for irregular note groups" By default, PMW puts the number of an irregular note group (for example, the `3' for a triplet) on the same side of the noteheads as the stems. The &%tripletfont%& directive is used to specify the size and type of font used. If the notes are beamed, just the number is output; if not, a horizontal `bracket' is drawn as well. .index "irregular note groups" "suppressing the number" .index "irregular note groups" "moving the number" The whole mark can be moved, forced to be above or below the stave, and the horizontal bracket can be omitted. The mark may also be totally suppressed. The &%[triplets]%& directive can be used to set defaults for some of these options. For individual groups, the following qualifiers may appear after the opening curly bracket, following any numbers that may be present: .itable none 0 0 2 60 left 200 left .row &`/a`& "put mark above" .row &`/a`&<&'n'&> "put mark <&'n'&> points above" .row &`/b`& "put mark below" .row &`/b`&<&'n'&> "put mark <&'n'&> points below" .row &`/n`& "omit bracket" .row &`/x`& "suppress/unsuppress mark" .row " " .row &`/lx`& "invert left-hand jog" .row &`/rx`& "invert right-hand jog" .row " " .row &`/d`&<&'n'&> "move mark down <&'n'&> points" .row &`/l`&<&'n'&> "move mark left <&'n'&> points" .row &`/r`&<&'n'&> "move mark right <&'n'&> points" .row &`/u`&<&'n'&> "move mark up <&'n'&> points" .row " " .row &`/ld`&<&'n'&> "move left end of bracket down <&'n'&> points" .row &`/lu`&<&'n'&> "move left end of bracket up <&'n'&> points" .row &`/rd`&<&'n'&> "move right end of bracket down <&'n'&> points" .row &`/ru`&<&'n'&> "move right end of bracket up <&'n'&> points" .endtable The &`/x`& option suppresses the mark unless &%[triplets]%& has been used to suppress all irregular note group marks, in which case &`/x`& causes the mark to appear. When a dimension is given after &`/a`& or &`/b`&, the value given is the position above or below the stave of the baseline of the numerical text for a horizontal bracket. Subsequent adjustment of either end of the bracket is then possible, as described above. If no dimension is given after &`/a`& or &`/b`&, the vertical position is computed from the positions of the notes that form the group. The left and right movements are available only if no horizontal bracket is being output; they are ignored otherwise. Here are some examples of the use of these options: .code {3/5/d1 a-a-a-b-b-} {/b a-b-c-} {/a/u3 dfg} {2/d2/n a-a-} .endd If either of the &`/a`& or &`/b`& options is specified, it is assumed that the mark is being moved to the other side of the noteheads, and therefore the bracket is automatically added. The &`/n`& qualifier must be used if a bracket is not required in this circumstance. By default, PMW draws the brackets for triplets and other irregular note groups horizontal. Occasionally a sloping bracket is required; these can be obtained by means of the &`/lu`&, &`/ld`&, &`/ru`&, and &`/rd`& options on the opening curly bracket. They have the effect of moving the left or right hand ends of the bracket up or down, respectively, by an amount specified after the option. .code {/ld10 dfa} .endd This example moves the left hand end down by 10 points. Very occasionally, when using coupled staves, it is useful to be able to alter the direction of the `jog' at one end of a triplet bracket so that it points in the opposite direction to the jog at the other end. The qualifiers &`/lx`& and &`/rx`& request this, for the left-hand and right-hand jogs, respectively. .subsection "Beam breaking in irregular note groups" .index "irregular note groups" "beaming" .index "beaming" "irregular note groups" The appearance of an irregular note group does not of itself cause a break in the beaming, and an explicit beam break must be specified if required. Strictly, tie and beam breaking indicators are supposed to come immediately after the final note, before the terminating } character, but in fact PMW allows the } character to precede or follow the tie and beam indicators. Thus the following are all permitted: .code {g=g=g=,}g= {g=g=g=},g= {g=g=g=_}g {g=g=g=}_g {g=g=g=}_,g= {g=g=g=_;}g= .endd The only restriction is that (as elsewhere) a tie indicator must precede a beam break. .subsection "Treating certain regular groups as triplets" SUBSECTtripletize .index "triplets" "assumed for alignment and MIDI" .index "&%[tripletize]%&" In some music, note pairs consisting of a dotted quaver followed by a semiquaver are intended to be performed as triplets, that is, with the semiquaver taken as a third of a crotchet, instead of a quarter. This notation can be seen in some Telemann manuscripts, for example. In light popular music, such groups may also be `swung' into triplets. This performance convention does not cause any problems when considering a single part, but for a score that has actual triplets in another part, semiquavers after dotted quavers are not by default vertically aligned with the final triplet notes in other parts. PMW has a facility for adjusting the output so that the noteheads do line up. In the following example, the first bar shows what happens by default; in the second bar the bass part has been `tripletized'. .music "music56" 80 4,-21 The form of the notes remains the same, but their performance length has been adjusted, which affects the horizontal position of the semiquavers. The adjusted note lengths are also used when MIDI output is generated. The &%[tripletize]%& directive controls this behaviour. It can be followed by one of the words `on' or `off'. If neither is present, `on' is assumed. At the start of a stave, tripletizing is turned off. When turned on, in addition to dotted quaver pairs, groups consisting of a dotted crotchet followed by a quaver or two semiquavers (notes or rests) are also adjusted. For such groups, a quaver is treated as having the length of two thirds of a crotchet, or the semiquavers are each treated as having the length of one third of a crotchet, and the dotted crotchet's length is appropriately shortened. .subsection "Short cuts for inputting notes" SUBSECTshortcuts .index "input short cuts" .index "repeated notes" .index "repetition" "notes" .index "notes" "repeated" .index "notes" "short cut entry" .index "short cut note entry" Some short cuts are available to reduce the amount of typing needed when inputting notes. They do not affect the appearance of the output in any way. .ilist The previous note or chord can be repeated exactly, including its expression marks or ornaments, by using the letter &`x`& instead of a note letter. An optional number may follow &`x`& to indicate the number of repetitions. A beam break (&R; &<>&) or a tie may follow, and a subsequent &`x`& can be used for further repetitions. For example, a bar of eight identical quaver chords, broken in the middle, can be notated like this: .code (e-gb) x3; x4 | .endd A rest may intervene between the original note and its copy, but there must be no clef, octave, or transposition change between them. .next The previous note or chord's pitches can be copied, with a different note length and with its own options, by using the letter &`p`& instead of a note letter. The length of the note is determined by the case of the letter &`p`& and any hyphens, equals, or plus signs that follow, and normal note options such as staccato, etc., may follow as well. As in the case of &`x`&, there must be no clef, octave, or transposition change between the original and the copy. For example, a dotted crotchet chord followed by a quaver chord of the same pitches can be notated like this: .code (d.fa) p- .endd .endlist A note defined with the letter &`p`& can be followed by another &`p`&, possibly with a different note length, and &`x`& may follow &`p`& and &'vice versa'&. For both &`x`& and &`p`&, accidentals are not repeated within a bar, though they affect the pitch if a MIDI file is being generated. However, when &`x`& or &`p`& is used at the start of a bar, and the note or chord is not tied to the previous one (in the previous bar), the accidentals are repeated. If such a note or chord is tied to the previous one, no accidentals are shown, but if &`p`& or &`x`& follows, the accidentals &'are'& repeated, according to the usual notation convention. .code a b #c_ | P p x .endd In this example, the minim at the start of the second bar does not have an accidental, but there is one before the following crotchet. .section "Note beaming" SECTbeaming .index "notes" "beaming" .index "beaming" "breaking a beam" .index "breaking a beam" PMW makes no beaming breaking decisions based on position in the bar or any other criteria, but leaves it entirely up to the creator of the input file to specify what is required. The &%beamthickness%& header directive can be used to set the thickness of line used for drawing beams. .subsection "Beam breaking" .index "semicolon" "beam breaking" .index "; (semicolon)" "beam breaking" .index "comma" "beam breaking" .index ", (comma)" "beam breaking" Notes and chords shorter than a crotchet are automatically beamed together unless they are separated in the input by one of the following beam breaking characters: .display &`;`& break all beams (semicolon) &`,`& break secondary beams only (comma) .endd These characters are ignored if they follow longer notes. .index "beaming" "across rests" .index "rests" "beaming across" PMW automatically beams across rests that are shorter than a crotchet, unless a break in the beam is specified. A beam breaking character must appear after the end of a note or after the closing parenthesis of a chord, though if the note or chord is tied (with an underscore character), the beam break must follow the underscore. If any other character follows a note or chord, no breaking happens. If the note or chord is the last of an irregular group (for example, triplets), the beam break may optionally appear after the closing curly bracket. Three pairs of beamed quavers could be notated like this: .code g-e-; f-a-; b-a- .endd A single digit may follow a comma to specify how many beams &'not'& to break &-- no digit is equivalent to 1. .code g=-a=-b=-,2 c'=-d'=-e'=- .endd This example results in two solid beams, with a third that is broken in the middle. A value that is too large causes no beams to be broken. .index "beaming" "aligning adjacent beams" A value of zero causes all beams to be broken; this is different to the normal semicolon beam break, because it causes the beams on either side of the break to align with each other. After a secondary beam break, a small amount of extra horizontal space (1.3 points) is inserted. Without this, the gap that has only a primary beam appears to be too narrow. .subsection "Beaming over bar lines" SUBSECTbeamoverbar .index "beaming" "over bar lines" .index "bar lines" "beaming over" Consistent syncopation employing beamed notes is more logical and more graphic when the beaming is carried across the bar lines. This effect can be achieved in PMW by following the bar character by the &`=`& character. .code r- g g- |= g-; g g- |= g-; g r- | .endd .music "music59" 24 0,-22 This notation causes a beamed group to extend into the subsequent bar; in the example above, two pairs of beamed quavers each straddle a bar line. Without the &`=`& characters after the bar characters, each quaver would be separate. A single beam can be carried over one bar line only; it cannot be continued over a second bar line. However, as the example shows, a bar may have carried-over beams at both ends. When such a beamed group occurs at the end of a system, the beam is drawn to the final bar line, and, on the next system, an `incoming' beam is drawn to indicate the continuation. By default, this has the same slope as the first part of the beam. This can, however, be altered by means of the &%[beamslope]%& directive, placed at the start of the second bar. A &%[beammove]%& directive can also be used in this position, where it will affect only the continued portion of the beam. &*Warning:*& Because PMW normally works on only one bar at a time, continued beams are not handled in quite the same way as other beams. In particular, the computation of stem directions for the notes takes place independently in each bar, taking into account only the notes in that bar. This means that in some cases the notes in the second bar will by default have their stems in the opposite direction to the rest of the beam. This is not usually what is wanted, and it can give rise to errors when PMW cannot fit the notes on both sides of the beam. In these cases, it is necessary to specify an explicit stem direction for the first note of the second bar. .subsection "Beaming across rests at beam ends" SECTbeamendrests .index "beaming" "across rests at beam ends" .index "rests" "beaming across" A recent innovation in notation is the continuation of beams over rests when they are at the start or end of the beam. This is thought to be helpful in indicating rhythmic groupings. .index "&%beamendrests%&" .index "&%nobeamendrests%&" PMW handles rests in the middle of beams automatically, but does not by default draw beams over rests at the ends of beams. If you want this to happen, you can request it by specifying &%beamendrests%& in the header. There is also &%nobeamendrests%&, which can be used to cancel this effect in a subsequent movement. Explicit beam breaks can be used to prevent an individual beam from covering a rest. Vertical movement of the rests is taken into account when computing the position of the beam. As in all beams, this can be adjusted by means of the .index "&%[beammove]%&" &%[beammove]%& directive. Beams covering rests at the end may be continued over bar lines, as described in the previous section, but only if there is at least one non-rest in the first bar. .subsection "Accelerando and ritardando beams" SUBSECTaccritbeams .index "beaming" "accel. and rit. " .index "accelerando beams" .index "ritardando beams" .index "&%[beamacc]%&" .index "&%[beamrit]%&" In modern music, accelerandos and ritardandos are sometimes notated by beams that fan out or in. PMW has some simple support. The stave directives &%[beamacc]%& and &%[beamrit]%& specify that the next beamed group in the bar is of the appropriate type. The notes of the group should normally be input as quavers. In most cases they are an irregular group and need to be enclosed in curly brackets, with an appropriate number. It is not usual to print the number, so this is normally turned off by means of the &`/x`& option on the irregular note group. PMW outputs accelerando and ritardando groups by drawing the primary beam as normal, then drawing one or two more inside beams, with one end fixed and the other getting nearer to the noteheads. By default, three beams in total are drawn, but this number can be changed in the &%[beamacc]%& or &%[beamrit]%& directive by following it with the number 2, in which case only two beams are drawn. This setting lasts until the end of the stave, or until a subsequent &%[beamacc]%& or &%[beamrit]%& directive containing the number 3 is encountered. The slope of the primary beam is the same as it would be for a conventional beamed group. If this is horizontal, a `fanned' beam does not always look right, and it is necessary to use the &%[beamslope]%& directive to change it. .code [beamslope 0.1] [beamacc] {5/x g-g-g-g-g-} | [beamslope -0.1] [beamrit] {5/x g-g-g-g-g-} | [beamslope 0.1] [beamacc 2] {5/x g-g-g-g-g-} | [beamslope -0.1] [beamrit] {5/x g-g-g-g-g-} | .endd .music "music38" 32 4,-20 In some cases it is also necessary to move the beams away from the noteheads using the &%[beammove]%& directive. .subsection "Beams with notes on both sides" SUBSECTbeamsides .index "beaming" "notes on both sides" .index "notes" "on both sides of beam" The stem direction that is determined for a beamed group by the rules described in section &<>& is the default, that is, it is the direction used for those notes in the group whose direction is not otherwise specified. It is possible to have notes on the non-default side of the beam by requesting an explicit stem direction for them. This facility is of most use in two-stave keyboard parts when the staves are `coupled' (see the &%[couple]%& directive). If there is a run of notes on one side of the beam followed by a run of notes on the other side, the note option &`\sw\`& can be used to swap the default stem direction for the note on which it appears and for all subsequent notes in the beam, but only if the first note of the beam has its direction explicitly specified. .code [stave 1 treble 1 couple down] g`-f`-a-\sd\ | e`-\su\f`-g`-g-\sw\a-b- | [endstave] [stave 2 bass 0] q-q-q- | Q! | [endstave] .endd .music "music40" 64 8,-20 In this example, the default stem direction for the first beam is upwards because of the two low notes, but the third note has its stem forced downwards, so is put on the other side of the beam. The &`\su\`& option in the second beam causes the first three notes to have their stems up, and the &`\sw\`& option forces the last three to have their stems down. This option can be used as many times as necessary in a beam. If &`\su\`& were not present on the first note, &`\sw\`& could not be used on the fourth, because the default direction is not known at the time &`\sw\`& it is processed (it depends on the pitches of all the notes in the beam). The arrangement of beams and beamlets for beams with notes on both sides follows the general principle of attempting to avoid `beam corners' wherever possible. Some variation in this arrangement can be obtained by making use of secondary beam breaks. The &%[beamslope]%& and &%[beammove]%& directives, which adjust the slope and vertical position of a beam, can be used as for any other beam. When there are only two notes in a beam, it is almost always possible to arrange them with their stems going in opposite directions, even though sometimes this leads to extremely slanted beams. When there are more than two notes, however, it is sometimes not possible to find a way of positioning the beam if the notes are too close together in pitch. When this happens, PMW outputs an error message. .section "Stem directions" SECTstemdir .index "stems" "direction" .index "direction of stems" .index "notes" "stem direction" This section documents the default rules for choosing a stem direction for a note or a chord. Some variation in the rules can be made by means of the &%stemswap%& header directive (&R; &<>&). The `stem swap level' is normally the middle line of the stave, but can be changed by the &%stemswaplevel%& directive (&R; &<>&). .subsection "Preliminary" 1. The `pitch' of a chord, for stem-decision purposes, is the average pitch of its highest and lowest notes. 2. The `pitch' of a beamed group, for stem-decision purposes, is the pitch of the note that is furthest away from the stem swap level. 3. Stem directions are computed for all notes, even breves and semibreves. In the case of these long notes the notional stem direction can affect the stems of subsequent or previous notes, and also the layout of chords containing adjacent notes. .subsection "Rules for non-beamed notes and chords" These rules are given in order of priority. `The previous note' includes the last note of a previous beamed group, if relevant. What happens to notes at the stemswap level (rules N5 and N6) can be changed by use of the &%stemswap%& directive (&R; &<>&). N1. If an explicit stem direction is specified on a note, it is used. N2. If a default is set by the stave directive &%[stems up]%& or &%[stems down]%&, it is used. N3. If the note is tied to the previous note, that is, the previous note is followed by an underscore and has the same pitch, the same direction as the previous note is used, even if this note is the first in a bar, provided the previous note's direction does not depend on this note's. N4. If the note is above or below the stem swap level, its stem goes down or up, respectively. N5. The note is at the stem swap level. If it is the first in the bar, or if all preceding notes in the bar have used this rule, its stem goes the same way as the next note in the bar that does not use this rule. If there are no more such notes in the bar, its stem goes the same way as the last note of the previous bar. If this is the first bar of the piece, the stem goes up. N6. The stem goes the same way as the previous note. .subsection "Rules for beamed groups" .index "beaming" "default stem direction" .index "stems" "direction in beamed groups" B1. If the stem direction of the first note in the group is forced by N1, N2, or N3 above, that direction is used as the default for the group. B2. If the `pitch' of the beamed group is above or below the stem swap level, the stems go down or up, respectively, by default. B3. The default stem direction is taken from the previous note. If there is no previous note, the stems go upwards. Normally, all the notes in a beam are on the same side of the beam, with their stems in the default direction for the beam, but it is possible to specify that some are on the other side of the beam (&R; &<>&). .section "Text strings in stave data" SECTtextitems .index "text" "on staves" .index "underlay" .index "overlay" .index "figured bass" "specifying" Section &<>& gives details of the special facilities that are applicable only to underlay or overlay text, that is, the sung words (lyrics) in a voice part. This section applies to text in general, with some particular features that are relevant only for non-underlay/overlay text. By default, text strings are output below the stave in an italic font, and positioned according to the following note. The &%[textfont]%& directive can be used to specify a default font for ordinary (that is, not underlay, overlay, or figured bass) text. Rehearsal marks are a special form of text and are specified in a slightly different manner (&R; &<>&). The &%[text]%& directive provides a way of changing the default position of the text to be above the stave, rather than below; it can specify a fixed position (above or below the stave) or allow the position to be determined by PMW. Alternatively, &%[text]%& can specify that unqualified strings are underlay, overlay, or figured bass text. Any individual string can always be explicitly qualified to indicate its type. Underlay, overlay, and figured bass text is by default output in the roman typeface. The directives &%[underlayfont]%&, &%[overlayfont]%&, and &%[fbfont]%& can be used to change the default font for these kinds of text on individual staves. Text strings, enclosed in double quote characters, are coded in among the notes of a stave. .index "strings" "limit on number of" There may be no more than 100 text strings before any one note; this large limit is intended to cover all possible applications. The escape character conventions using the backslash character that apply to all PMW strings are relevant (&R; &<>&). In particular, within any text string, the font can be changed by the use of the appropriate escape sequences. The closing double-quote of the string may be followed by one or more qualifiers, separated from the quote and from each other by slash characters. The following are available: .index "text" "qualifiers" . *** In this table, some of the entries overflow their cell width, so they . *** have to have &~ instead of spaces. This doesn't matter, because the . *** third column is used only for some lines that have narrow text in the . *** second column. .itable none 0 0 3 60 left 130 left 150 left .row &`/a`& "unspecific&~text&~above&~the&~stave" .row &`/a`&<&'n'&> "unspecific&~text&~at&~fixed&~distance&~above&~the&~stave" .row &`/ao`& "unspecific&~text&~above&~the&~stave,&~at&~the&~overlay&~level" .row &`/b`& "unspecific&~text&~below&~the&~stave" .row &`/b`&<&'n'&> "unspecific&~text&~at&~fixed&~distance&~below&~the&~stave" .row &`/bu`& "unspecific&~text&~below&~the&~stave&~at&~the&~underlay&~level" .row &`/m`& "unspecific&~text&~below&~the&~stave,&~midway&~to&~the&~next&~stave" .row "&~" .row &`/ul`& "this text is underlay" .row &`/ol`& "this text is overlay" .row &`/fb`& "this&~text&~is&~figured&~bass" .row &`/fbu`& "this&~text&~is&~figured&~bass&~at&~underlay&~level" .row "&~" .row &`/h`& "position&~halfway&~between&~notes" .row &`/lc`&<&'n'&> "position&~left&~by&~<&'n'&>&~crotchets" .row &`/rc`&<&'n'&> "position&~right&~by&~<&'n'&>&~crotchets" .row "&~" .row &`/bar`& "position at start of bar" "&BT12;" .row &`/ts`& "position at time signature" "&BM12;" .row &`/c`& "centre the text" "&BM12;" .row &`/cb`& "centre the text in the bar" "&BM12;" .row &`/e`& "align end of text" "&BM12;" .row &`/nc`& "do not centre" "&BM12;&~&~ignored for underlay/overlay" .row &`/ne`& "do not align the end" "&BM12;" .row "&~" "" "&BM12;" .row &`/box`& "enclose in a box (mitred corners)" "&BM12;" .row &`/rbox`& "enclose in a box (round corners)" "&BM12;" .row &`/ring`& "enclose in a ring" "&BM12;" .row &`/rot`&<&'n'&> "rotate by <&'n'&> degrees" "&BB12;" .row "&~" .row &`/s`&<&'n'&> "use&~settable&~size&~<&'n'&>,&~where&~<&'n'&>&~is&~between&~1&~and&~20" .row &`/S`&<&'n'&> "use&~fixed&~size&~<&'n'&>,&~where&~<&'n'&>&~is&~between&~1&~and&~10" .row &`/u`&<&'n'&> "move up <&'n'&> points" .row &`/d`&<&'n'&> "move down <&'n'&> points" .row &`/l`&<&'n'&> "move left <&'n'&> points" .row &`/r`&<&'n'&> "move right <&'n'&> points" .endtable If any of the movement options are repeated on a string, their effect is cumulative. This feature is useful when a repeated string with a movement option is defined as a macro, but in some instances needs further adjustment. These two examples have exactly the same effect: .code "allargando"/u6/d2 "allargando"/u4 .endd If more than one of &`/a`&, &`/ao`&, &`/b`&, &`/bu`&, &`/m`&, &`/ul`&, &`/ol`&, &`/fb`&, or &`/fbu`& is present, the last one takes precedence. If none of them are present, the string type is taken from the last &%[text]%& directive. If &%[text]%& has not been used on the current stave, &`/b`& is assumed. There is an important difference between &`/bu`& and &`/ul`&, and similarly between &`/ao`& and &`/ol`&. When &`/bu`& is specified, the text is treated as non-underlay text, but its default vertical position is the underlay level. This contrasts with &`/ul`&, which indicates that the text &'is'& underlay, and subject to special processing described in section &<>&. The &`/m`& option is like &`/b`&, except that the default vertical position of the text is in the middle of the space between the current stave and the one below it, provided this is lower than the normal &`/b`& position would be. This is useful for dynamic marks in keyboard parts. If two overprinting staves are being used for a keyboard part, text with the &`/m`& option may appear with either of them, because if the space after the current stave is set to zero, the space for the next stave is used when positioning such text. .index "text" "vertical position" The default vertical position of text is adjusted to take account of the next note, unless the string is forced to the overlay or underlay level by &`/ol`&, &`/ul`&, or &`/fbu`&, or to an absolute position by &`/a<&'n'&>`& or &`/b<&'n'&>`&. .code "at underlay level"/ul "six points above the stave"/a6 "twenty points below the stave"/b20 .endd By default, if two or more strings precede the same note or the end of a bar, the default vertical position for the second and subsequent strings is an appropriate distance above (for text above the stave) or below (for text below the stave) the previous string. There is, however, a facility for horizontal concatenation (&R; &<>&). The level of any string can always be adjusted by the use of &`/u`& or &`/d`&. .subsection "Horizontal alignment" SECThorizalign .index "text" "horizontal alignmnent" .index "text" "end alignment" The horizontal alignment of underlay and overlay strings is described in section &<>&. Except for follow-on strings (&R; &<>&), unqualified strings are positioned by default with their first character aligned with the left-hand edge of the next note or rest, or with the bar line if there are no following notes or rests in the bar. If the &`/e`& qualifier is present on the text string, it is the end of the string that is aligned with the alignment point. The &`/ne`& option can be used on text strings to cancel the effect of a previous &`/e`&. This can be useful for overriding options on strings defined as macros. .index "text" "centred" .index "text" "centred in bar" If the &`/c`& qualifier is present, the text is centred at the alignment point. If this is used on text immediately before a whole bar rest that is centred in the bar, the text is centred in the bar. This applies to both visible and invisible whole bar rests. The &`/nc`& option can be used on text strings to cancel the effect of a previous &`/c`&. This can be useful for overriding options on strings defined as macros. .index "text" "centre in bar" If the &`/cb`& qualifier is present, the text is centred in the bar. Such a string may appear anywhere in a bar. This qualifier unsets any previous horizontal positioning, but relative movement left or right is honoured. The &`/l`& and &`/r`& qualifiers move a string left or right with respect to the default position, and there are several qualifiers that can be used to vary the position of the alignment point itself. If more than one of these is present, the earliest described here takes precedence (for example, &`/bar`& overrides &`/ts`& and &`/h`& overrides &`/rc`&). If &`/bar`& is present, the alignment point is the previous bar line, or the start of the system for the first bar in a system. If the &`/ts`& option is present, the alignment point is the time signature at the start of the bar. If there isn't one, the alignment point is the first note in the bar. For both &`/bar`& and &`/ts`& the vertical position of the string still depends on the note that follows it. The &`/h`& option causes the alignment point to be halfway between the next note or rest and the note or rest that follows, or the end of the bar if there is only one note or rest following in the bar. The &`/e`& and &`/c`& options can be combined with &`/h`& to specify end or centre alignment at the halfway position, respectively. If no notes follow the text string in the bar, &`/h`& has no effect, and it is also ignored if &`/bar`& or &`/ts`& are present. Positions other than the halfway point can be specified by a number given after &`/h`&. For example, &`/h0.75`& specifies the three-quarter point between the next note or rest and the one following. The &`/h`& option can be used with underlay and overlay strings, but it applies only to the first syllable of such strings. .index "MusicXML" "offset positioning (string)" The alignment point can also be positioned with respect to the musical offset in the bar. This is similar to the `offset' positioning that is used in MusicXML. Whereas &`/l`& and &`/r`& specify a distance in points, &`/lc`& and &`/rc`& specify a distance in crotchets. For example: .code "some text"/rc1 a b .endd The text in this example is aligned with the second crotchet instead of the first. The value given may be fractional, for example: .code "some text"/rc0.5 a b .endd In this case the text is aligned with where a quaver that follows the first note would be. This is not necessarily halfway between the notes when there are other staves that contain different note lengths. If &`/rc`& is used on text that precedes the final note of a bar, or if &`/lc`& is used on text that precedes the first note of a bar, the distance is calculated from the default note spacing. .subsection "Enclosed text (boxed or ringed)" .index "text" "enclosed" .index "text" "boxed" .index "text" "ringed" The longer the string is, the more elliptical a ring will be. For a single character, the ring is approximately circular. If the &`/box`&, &`rbox`&, or &`/ring`& options are used with underlay or overlay, they apply to each individual syllable. .subsection "Text sizes" SUBSECTtextsizeoption .index "text" "sizes" .index "size" "of text" The &`/s`& option refers to the sizes of text defined by the &%textsizes%& header directive (&R; &<>&); &`/s1`& specifies the first size, &`/s2`& specifies the second size, and so on. .code "Some text string"/s2 .endd This example uses the second size defined by &%textsizes%&. The default size for text that is not underlay, overlay, or figured bass is the size set by the &%[textsize]%& directive or, if that is not present, the first settable size. Underlay, overlay, and figured bass have their own default sizes, set by the &%underlaysize%&, &%overlaysize%&, and &%fbsize%& directives. The &`/s`& option can, however, be used with underlay, overlay, and figured bass text to specify a non-default size for an individual string. As well as the 20 settable text sizes, there are 10 fixed sizes that cannot be changed. The &`/S`& option is used to select one of these sizes. The following are defined: .itable none 0 0 2 20 left 50 right .row &`/S1`& "12 points" .row &`/S2`& "11 points" .row &`/S3`& "10 points" .row &`/S4`& "9 points" .row &`/S5`& "8 points" .row &`/S6`& "7 points" .endtable The remaining four are set to 10 points, but may be changed in future so should not be used. These fixed sizes are provided for the use of the standard macro packages, but are not restricted to them. .subsection "Rotated text" SUBSECTrottext .index "text" "rotated" .index "rotated text" .index "fonts" "rotating" Stave text strings that are not underlay or overlay can be rotated through any angle by following the string with &`/rot`& and a number in degrees. Positive rotation is anticlockwise. .code "gliss"/rot40/a0/r4 c'_/g [space 8] c'' .endd .music "music41" 32 8,-22 The centre of rotation is on the text baseline, at the left-hand end of the string. If the string is centred or right-aligned (the &`/c`&, &`/cb`&, or &`/e`& options), this position is computed from the length of a horizontal string, before rotation. That is, rotation happens last. .subsection "Follow-on text" SUBSECTfollowon .index "text" "follow-on" .index "follow-on text" By default, a string that immediately follows another string is placed above or below the previous string and may have its own horizontal positioning. There is, however, a facility for horizontally concatenating two or more strings. This is useful when the strings use fonts of different sizes, or are rotated by different amounts. Follow-on strings are characterised by the &`/F`& qualifier. The first string and any follow-on strings must not use the &`/box`& or &`/ring`& qualifiers. The first string may use any of the available positioning qualifiers, but a follow-on string must not have any explicit positioning qualifiers such as &`/a`&, or &`/ts`&. The starting point for a follow-on string is the endpoint of the preceding string. The only qualifiers that are permitted for follow-on strings are those for relative movement (&`/u`&, &`/d`&, &`/l`&, &`/r`&), &`/s`& or &`/S`& to select a font size, and &`/rot`& to specify a text rotation. A follow-on string that follows a rotated string starts from the rotated end point. Here are some silly examples (text size 2 is defined as 14 points): .code "small"/a " BIG "/s2/F "small"/F a "square" "square"/F/rot270 "square"/F/rot180 "square"/F/rot90 a .endd .music "music60" 80 20,10 .section "Fingering indications" SECTfingeringindics .index "fingering indications" The small caps feature of text strings is useful for selecting a smaller than normal font for fingering indications. Alternatively, a specific font size can be defined and used with the &`/s`& text qualifier, or one of the fixed sizes can be selected by &`/S`&. The music font contains the special characters &{a}&&~&~ and &{b}&&~&~ for indication the use of the thumb in cello parts. The use of macros is suggested when setting music with lots of fingering, and a suggested set of macros is provided in the &%Fingering%& standard macro file (&R; &<>&). Note the use of the &`/c`& option in this example, to centre the text below each note: .code *define 1 "\rm\\sc\1"/b/c *define 2 "\rm\\sc\2"/b/c *define 3 "\rm\\sc\3"/b/c *define 4 "\rm\\sc\4"/b/c [stave 1 alto] &1 d- &3 c'= &2 b=; &4 d'- &3 f-; &1 d= &2 b= &3 f= &4 d'=; &2 b= &3 f= &1 d- | .endd .music "music45" 32 8,-18 .section "Rehearsal marks" SECTrehearse .index "rehearsal marks" Rehearsal marks are specified as text items enclosed in square brackets. The text may be longer than one character. It is output above the stave, and by default is in bold type and enclosed in a rectangular box with mitred corners. The &%rehearsalmarks%& directive can be used to change the size and the font, to specify round corners for the box, or to specify a ring instead of a box, or to specify no enclosure at all. If necessary, a rehearsal mark can be moved up, down, left or right, in the same manner as other text. However, any other options that are given with the string are ignored (with a warning). .code ["A"/u2] .endd This example moves the mark two points upwards. Normally, a rehearsal mark is given at the start of a bar, and in this case it is immediately to the right of the preceding bar line when the bar is not the first in a system (that is, not the first in a line). At the start of the first bar in a system, a rehearsal mark is by default aligned with the first note in the bar, but the &%rehearsalmarks%& directive can be used to move it to the left edge of the system instead. If a rehearsal mark is given in the middle of a bar, it is aligned horizontally with the next note, exactly as for other text. Rehearsal marks normally appear above the top stave of a score only, though in very large scores they are sometimes repeated part of the way down. If parts are to be extracted from a score, the rehearsal marks should be specified on stave 0 (&R; &<>&), so that they are always shown above the top stave, whichever staves are selected. .section "Vocal underlay and overlay text (lyrics)" SECTunderlay .index "text" "underlay" .index "underlay" .index "overlay" .index "multi-syllable underlay" .index "underlay" "multi-syllable" .index "underlay" "special characters" PMW supports both underlay (words under the stave) and overlay (words over the stave). Overlay is comparatively rare, and to save clumsy repetition of `underlay or overlay' in what follows, the description is written mainly in terms of underlay. However, all the features are equally applicable to overlay. A text string is marked as underlay or overlay either by using the &`/ul`& or &`/ol`& options, or by using the &%[text]%& directive to set underlay or overlay as the default, and then not using any of the other text type options (&`/a`&, &`/b`&, etc.) The usual escape character conventions apply, and in addition, the characters &`#`& (sharp), &`-`& (hyphen), &`=`& (equals), and &`^`& (circumflex) have special meanings. If you actually need one of these characters as a literal, you need to escape it with a backslash. .subsection "Underlay syllables" Underlay can be input one syllable at a time, each syllable preceding the note to which it refers. This gives the maximum possible control, because each syllable can be moved up, down, left or right as required. However, it is normally easier to input underlay in longer strings. If a string of underlay text contains space and/or hyphen characters, it is automatically split up by PMW and allocated to the notes that follow. However, after an occurrence of the &%[reset]%& or &%[backup]%& directives (&R; &<>&, &<>&), distribution of underlay syllables is suspended until the overprinting notes or rests have reached the reset/backup point. In the following example, the words `brown fox' are associated with the final two crotchets in the bar. .code "The quick brown fox"/ul gg [reset] eeee | .endd Rests are excluded from the underlay distribution process (with one exception, which is described in section &<>&). A simple underlay example is shown in chapter &<>&. .index "- (hyphen) in underlay string" .index "hyphen" "in underlay string" .index "strings" "hyphen in underlay" When a word consists of more than one syllable, the syllable breaks must be delimited by hyphens. PMW uses one or more hyphens in the output, depending on the distance between the syllables. The header directive &%hyphenthreshold%& can be used to specify the distance between syllables at which more than one hyphen will be used. The default value is 50 points. If the space is less than this, a single hyphen is used, centred in the space. Otherwise, a number of hyphens appear, the distance between them being the threshold value divided by three. PMW can alternatively use en-dash characters (or any other characters) as `hyphens' between syllables of underlaid text. See the &%hyphenstring%& header directive for details. Whatever is output, the syllable separator in the input remains a single hyphen. PMW does not check that the number of syllables matches the number of notes, except that it warns if text is left over at the end of the stave. Each syllable of underlay text is normally centred horizontally about the next note in the bar. Sometimes it is necessary to move syllables slightly to the left or right. A convenient way to do this is to include the character &`#`& .index "# character in underlay" in the underlay string. This character is output as a space, but does not count as a space when PMW is splitting up the text. The width of a space is half the size of the font. .code "Where# hast #tha" c' g-.a= | .endd If the default, 10-point font is in use, this example outputs `Where' 2.5 points to the left of where it would otherwise appear, and `tha' 2.5 points to the right. .index "underlay" "syllable alignment" .index "# character in underlay" .index "^ character" "in underlay" .index "circumflex" "in underlay" Sometimes several words are required to appear under a single note, and only the first is to be centred on it. The &`#`& character can be used to separate such words, to prevent them being assigned to separate notes. If the character &`^`& (circumflex) appears in an underlay syllable, only those characters to the left of it are counted when the string is being centred. The circumflex itself is not output. .code "Glory^#be#to#Thee, O God." G+ g #F .endd In this example, the words `Glory be to Thee' are all associated with the semibreve, but because of the circumflex, only `Glory' is centred under it, and the rest stick out to the right. If a syllable starts with a circumflex, it is not centred, but instead starts at the note position. If two circumflex characters are present in a syllable, the text between them is centred at the note position. This makes it possible to cause text to stick out to the left of a note. .index "underlay" "extension" When a syllable extends over more than one note, equals characters must be inserted into the input string, one for each extra note. This includes tied notes, because PMW does not distinguish between ties and short slurs. .code "glo-==ri-a" F. | B`. | C. | E. | F. | "glo-========ri-a" a-e-a- | b-c'=b=a=b= | c'- c'- b- | .endd PMW automatically draws an extender line after a word that ends with an equals, finishing underneath the last note, provided that the line is of reasonable length. The vertical position of the extender level is just below the baseline of the text, but this can be altered (&R; &<>&). By default, PMW centres all underlay and overlay syllables at the position of their respective notes. The &%underlaystyle%& directive (&R; &<>&) can be used to request PMW to align underlay and overlay multinote syllables flush left with the initial note. The circumflex character can still be used to specify that particular multinote syllables be centred. Text for two or more verses can be specified in multi-syllable fashion before the relevant notes by giving each verse as a separate string. .code "With-in the wood-lands, flow'r-y gladed" "When leaves that late-ly were a-spring-ing" "Let other folk make mon-ey fast-er" d-; g-a- | b d' e'-d'- | c b .endd The vertical distance between verses can be altered by means of the &%underlaydepth%& and &%overlaydepth%& directives, which control independent values. For overlay, the second verse is placed above the first one, and so on. If any positioning qualifiers are specified on an underlay input string (&`/u`&, &`/d`&, &`/l`&, or &`/r`&), the same amount of movement applies to each of the syllables in the string independently. Specifying vertical movement in this way can sometimes be a convenient alternative to the use of the &%[ulevel]%& directive. The multi-syllable underlay feature in PMW is just an alternative input notation. The effect is exactly as if the individual syllables were input immediately preceding the notes under which they appear. If an underlay string ends with a hyphen, the equals characters can be omitted; PMW automatically outputs a sequence of hyphens up to the next underlay syllable. This can be useful when syllables last for many notes, for example: .code "glo-" g=a=b=g=; a=b=c'=a=; b-. "ri-a" g= b .endd .music "music23" 40 4,-12 If the final syllable of a word extends over many notes, only a single equals character is needed if it is at the end of an input string. However, because extender lines are drawn only as far as the last note for the syllable, rather than to the next underlaid word, it is necessary to supply the final equals character at the start of the next string, to tell PMW which is the final note for the syllable. .code "long=" b=a=g=a=; b=a=g=a=; "= time" g g .endd .music "music32" 40 4,-12 If there are more notes on the stave, but no more words, a syllable consisting of just a &`#`& character can be used to stop PMW drawing an extender line further than is required. &*Warning*&: There is one important restriction on the use of multi-syllable underlay text strings. Because they are processed during the input stage of PMW, they cannot in general be used successfully with the square bracket notation for repeating bars. Each syllable in such a string is allocated to &'the next note read from the input'&, but a bar repeat count just duplicates the bar in which it appears, without reading any more notes. .index "string repetition" "with underlay" .index "repetition" "of input string with underlay" However, if you use the string repetition feature (&R; &<>&) to repeat the bar's input characters, this problem does not arise. .display &`"one two three four"/ul &&*2(ab|) `&this works as expected &`"one two three four"/ul [2] ab | `&this does not .endd .subsection "Underlay and overlay fonts" .index "fonts" "underlay" .index "underlay" "fonts" .index "fonts" "overlay" Two separate sets of fonts are provided for underlaid and overlaid text, and the size of these can be set independently of the other text fonts by the &%underlaysize%& and &%overlaysize%& directives. Individual underlay or overlay strings can specify different sizes by means of the &`/s`& or &`/S`& qualifier. .subsection "Underlay and overlay levels" .index "underlay" "level" .index "level" "of underlay" Text that is marked as part of the underlay or overlay is always positioned at the same level below or above the stave in any one system of staves; the line of words is always horizontal. PMW chooses an underlay and an overlay level for each line of music according to the notes that appear on that line, but these can be overridden by means of the &%[ulevel]%& and &%[olevel]%& directives. Individual words or syllables can be moved up or down relative to the standard level by means of the &`/u`& and &`/d`& qualifiers. .subsection "Underlay and overlay spreading" .index "underlay" "note spreading" .index "notes" "spreading for underlay" PMW spreads out the notes of a piece to take into account the width of underlaid or overlaid words. This facility should be used with care, because the music can become very poorly spaced if the width of the words is allowed to have too much influence on the separation of the notes. The spreading facility operates only within individual bars, and not between bars. It applies only to underlay or overlay text, not to other kinds of text. `Hard spaces' (notated by sharp sign characters) in the text are included when examining the available space. The minimum space allowed between syllables is one space character in the appropriate font. There is a header directive, &%nospreadunderlay%&, which disables this facility for both underlay and overlay, and it is recommended that those who place great importance on the spacing of notes should use it. The automatic facility is intended as an insurance for less demanding users against the occasional wide syllable. In order that it function in this way, it is important that a suitable note spacing be set, and a suitable size of underlay or overlay font be chosen, such that most of the syllables fit on the line without the need for any adjustment of the notes. The default setup is not always suitable for music with words; multiplying the note spacing by 1.2 and choosing a font size of 9.5 usually gives better results. &*Warning:*& If use of the &%layout%& header directive (&R; &<>&) causes the bars in a system to be horizontally compressed in order to fit them on the line, underlaid syllables may be forced into each other, even though they were originally separate. Although some re-spacing is done after a sufficiently large compression, in order to mitigate this problem, it is best to avoid settings of &%layout%& that cause compression if possible. .subsection "Other uses of underlay and overlay" SUBSECTuolayother .index "underlay" "use for other text" The underlay and overlay facilities can be used for things other than the words of a vocal part. It is common, for example, for the word &'crescendo'& to be stretched out, in the style of underlay, or alternatively, for an abbreviation such as &'cresc.'& to be followed by a number of hyphens. In the latter case, the final `syllable' of the word does not exist, but it can be specified as a single sharp character, which does not cause anything to be shown (because # is output as a space in underlay). The text can be given as a single string, with equals characters for each note under which hyphens are to be drawn, or each syllable can be given with the relevant note. In the latter style, the final syllable can be moved left or right to adjust the end point of the hyphens. Here is a simple example of both kinds of approach: .code "\it\cresc-==en-==do"/ul gc'ga | gfgr | "\it\dim.-"/ul gfef | G "#"/ul/r6 G | .endd .music "music24" 40 4,-10 PMW supports multiple verses, so there is no difficulty in mixing this kind of usage with real vocal words, though usually the vocal line would be notated as underlay and the other text as overlay. Underlay and overlay syllables cannot normally be associated with rests, but because a final empty syllable is often required when using underlay for rows of dashes, and ending at a rest is common, an exception has been made for the string &`"#"`&, which should not occur in normal underlay usage. If this string is specified as underlay or overlay, and immediately precedes a rest, it is associated with the rest rather than the following note. This exception applies only to strings consisting of a single &`#`& character. Hyphen strings for underlay have the hyphens fairly far apart, and at varying separations. Sometimes a more uniform hyphen separation is required, and some editors prefer some other character to the hyphen after items like &'cresc'&. Some additional features are provided for use in these cases. If a second string is provided as an option to an underlay or overlay string, separated by a slash, it is used instead of hyphens between the syllables of a word. The string is repeated as many times as possible in the available space. This option should be given after any other options for the main string; in particular it must follow an explicit &`/ul`& or &`/ol`& option. The default font for the second string is the default underlay or overlay font, as appropriate, and the default size is the size of the first string. However, the second string may be followed by &`/s`& or &`/S`& and a number to specify a different size. The second string may also be followed by &`/u`& or &`/d`& to specify that it is to be moved up or down, relative to the following syllable. In this example, a space and a full stop is used as the repeating string, and it is moved up so as to be approximately at the middle of the letters. .code "\it\cresc.-"/ul/" ."/u1.5 gc'ga | gf "#"/ul gr | .endd .music "music25" 32 4,-16 The second string is a normal PMW string, and may contain font changes and other escape sequences. Hence it can be used for trill signs followed by wiggly lines, by selecting the appropriate characters from the music font. .code "\*136\-"/ol/"\*96\" E'+_ | "#"/ol/r8 E'R | .endd .index "trill" "with wiggly line" .music "music26" 32 4,-22 Character 136 is the &{ˆ}& character, and character 96 is the tilde &{`zzz}&, which gives a wiggly line when repeated. The invisible final syllable is moved right eight points to ensure that the wiggly line covers the final note. If such features are required in several places in a piece, the best thing to do is to use the macro facility to save having to type the complicated strings each time. This approach is taken in the next example. .index "8va" .index "octave marks" The conventional octave mark of &'8va'& followed by a line of dashes can be handled using an overlay string. However, it is normal to have a small `jog' on the final dash to indicate the end of the section. To achieve this, an additional feature is available. If an underlay or overlay option string contains a vertical bar character, only those characters to the left of the vertical bar are used as the repeating sequence, but the characters to the right of the bar are output at the end of the sequence, once. (If, by some chance, a real vertical bar is required to be repeated, it must be escaped with a backslash.) There are some angle-shaped characters in the music font that can be used for the `jogs'. .code *define s8 "\it\8va-"/ol/" -| \mf\\159\"/u0.3 *define e8 "#"/ol/r8 &s8 c'.d'-e'd' | g'g' &e8 G' | .endd .music "music27" 30 4,-22 In this example, the macros &%s8%& and &%e8%& contain the strings needed to start and end an &'8va'& mark, respectively. Notice that &%e8%& is used before the final note under the mark. The repeated character string is a space and a hyphen (specified before the vertical bar), and at the end, a space followed by character 159 from the music font is output. One further feature is available to cope with repeated strings that extend over the end of a music system. If yet another optional string is given, it is output at the start of each continuation line, before the start of the repeating strings. The only option permitted after this string is &`/s`& or &`/S`&, to set its size (which defaults to the size of the original underlay or overlay string). Using this feature to output a small `8' at the start of continuation lines, the macro definition from the above example becomes: .code *define s8 "\it\8va-"/ol/" -| \mf\\159\"/u0.3/"\it\8"/s2 .endd This assumes that size 2 is suitably defined using the &%textsizes%& directive. .index-to I06 . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .tocsubsectoff .chapter "Stave directives" CHAPstavedirectives .index-from I07 "directives" "stave" .index-from I08 "stave directives" This chapter describes the directives that can appear interspersed with the notes and rests of a stave. They must be enclosed in square brackets, though more than one may appear within a single set of brackets. There are three other items that can appear between square brackets: repeated expression marks (&R; &<>&), repeated bar counts (&R; &<>&), and rehearsal marks (&R; &<>&). .section "Clef directives" SECTclef .index "clefs" "list of" Clefs are specified by directives that are the names of the clefs. There are two different styles for C and F clefs, controlled by the &%clefstyle%& directive (&R; &<>&). The following clefs are available: .itable none 0 0 2 100 left 300 left .row &`alto`& "C3" .row &`baritone`& "F3" .row &`bass`& "F4" .row &`cbaritone`& "C5" .row &`contrabass`& "F4 with &'8'& below" .row &`deepbass`& "F5" .row &`hclef`& "percussion H clef" .row &`mezzo`& "C2" .row &`noclef`& "nothing" .row &`soprabass`& "F4 with &'8'& above" .row &`soprano`& "C1" .row &`tenor`& "C4" .row &`treble`& "G2" .row &`trebledescant`& "G2 with &'8'& above" .row &`trebletenor`& "G2 with &'8'& below" .row &`trebletenorb`& "G2 with &'(8)'& below" .endtable .music "music42" 40 4,-14 The last two clefs shown are the alternative forms for C and F clefs. If a clef directive is given without an argument, no change is made to the current default octave. However, the directive name may be followed by a number to indicate a new setting for the current octave. .code [treble 1] .endd This example sets the default octave to start at middle C. A clef setting has no bearing on the interpretation of the pitch of the notes that go to make up a part (apart from the octave setting). Changing the clef directive at the start of a part causes the music to be output in the new clef, but at the same absolute pitch as before. Clef changes in the middle of a stave that are not in the middle of a bar are normally notated immediately before a bar line rather than immediately after. The &%clefsize%& header directive is used to specify the size of such clefs. .section "Alphabetical list of stave directives" SECTstavedirectives The stave directives are now described in alphabetical order. .subsection "[1st], [2nd], etc." SUBSECTfirstsecond .index "first time bar" .index "second time bar" First and second time bars (and third and fourth, etc. if needed) are specified by enclosing the number, followed by one of the sequences `st', `nd', `rd' or `th' in square brackets at the start of a bar. The mark for the final one is terminated by the appearance of the directive &%[all]%&. .code [1st] g a b g :) | [2nd] g a b c' | [all] b a g f .endd There is an example of the output in section &<>&. More than one bar of music may appear between the items. The &%[all]%& directive is not used if the piece ends with the second time bar. Often these marks are shown only above the top stave of a score. If parts are to be extracted from a score, first and second time marks should be specified on stave 0 (&R; &<>&), so that they will be output above the top stave, whichever staves are selected. It is possible to specify vertical movements for 1st and 2nd time bar marks, to cope with unusual cases. This is done by entering &`/u`& or &`/d`&, followed by a number, in the directive. The left-hand ends of these marks can also be moved left and right by means of &`/l`& and &`/r`& qualifiers. .code [1st/u4] .endd This example specifies a first time bar whose mark is to be 4 points higher than it would be by default. PMW normally puts the second time mark at the same level as the first, unless high notes in the second time bar force it upwards. More than one of these marks can be given in the same bar. .code [1st] [2nd] Grg :) | [3rd] GR | .endd When this is done, the numbers are output with a comma and a space between them. Any movement qualifiers must be specified on the first number. It is also possible to change the text that is output by supplying a text string after a slash. .code [1st/"primero"] .endd If there are several marks in the same bar, separate strings can be supplied for each of them. The font size is set by the &%repeatbarfont%& directive, which also sets the default font. .subsection "[All]" See the immediately preceding section. .subsection "[Alto]" .index "&%[alto]%&" This specifies a C clef with its centre on the third stave line (&R; &<>&). .subsection "[Assume]" .index "&%[assume]%&" .index "clefs" "assuming" When an overprinted stave contains a sequence of skipped bars (see &%[skip]%&), the clef, key signature, or time signature for its partner stave may have changed before the skipping stave resumes. The &%[assume]%& directive can be used to set these things without causing anything to be output. .code [skip 60] [assume bass 0] gbc | .endd This example has the effect of changing the stave into the bass clef so that `gbc' are output in this clef, and a bass clef is shown at the next start of line, but no clef is output where the directive occurs. Similar syntax is used for setting the key and the time. .code [assume key E$] [assume time 3/4] .endd The use of this directive is not confined to overprinted staves. .subsection "[Backup]" SUBSECTbackup .index "&%[backup]%&" .index "overprinting" "previous note" This directive moves the musical position in the bar back to that of the previous note, thus allowing the previous note to be overprinted. To overprint a whole bar, see &%[reset]%& (&R; &<>&), and to overprint a whole stave, use another stave with zero stavespacing (&R; &<>&). &%[Backup]%& is an alternative to &%[reset]%& followed by invisible rests, but is not exactly equivalent: .ilist After &%[reset]%& the state of the implied accidentals (relevant for MIDI output) is re-initialized from the key signature, whereas there is no change for &%[backup]%&. .next &%[Backup]%& is permitted inside irregular note groups such as triplets, provided that it follows at least one note, whereas &%[reset]%& is not allowed. .endlist Here's an example of the use of &%[backup]%& to create a non-standard shorthand for a minim that is to be played as four quavers. A macro is used to demonstrate how this can be packaged for multiple uses. .code *define X() &&1-\nz\[backup]&&1+ [stave 1 treble 1] &X(g) #&X(g)\>\ &X(c') .endd .music "music71" 36 4,-18 The argument of the macro is a note letter with an optional octave indication. This is first output as a quaver without a notehead (using &`\nz\`&), followed by an overprinted minim, which is coded as a doubled crotched so that a single lower case letter can be used for both notes. Note that the shorter of the two notes is given first so that the whole item has the length of a minim. Note also that an accidental may precede the whole item, and note options may follow. .subsection "[Baritone]" .index "&%[baritone]%&" This specifies an F clef based on the third stave line (&R; &<>&). .subsection "[Barlinestyle]" .index "&%[barlinestyle]%&" This directive must be followed by a number, and it sets the bar line style for subsequent bar lines in the stave (&R; &<>&). .subsection "[Barnumber]" SUBSECTstavebarno .index "&%[barnumber]%&" .index "bar numbers" "requesting" .index "bar numbers" "suppressing" .index "bar numbers" "moving" .index "bar numbers" "forcing" .index "numbering bars" The header directive &%barnumbers%& (&R; &<>&) is used to request automatic bar numbering. The stave directive &%[barnumber]%& is used to control bar numbering for individual bars. If &%[barnumber]%& appears without any arguments, a number is output for the current bar, independently of the overall setting. This is the only way to generate a number with a fractional part for an uncounted bar, or to generate a number for bar 1, which is not normally numbered. The size of font used and whether or not the number is enclosed in a box or ring is controlled by the header directive. The default is not to use boxes, and the default size is 10 points. The position of the bar number can be altered by following the directive with a slash, one of the letters &`l`&, &`r`&, &`u`&, or &`d`&, and a number. This is sometimes necessary when there are notes on high ledger lines at the start of a numbered bar. .code [barnumber/l10/d5] .endd This example outputs a number on the current bar, 10 points to the left and 5 points down from where it would appear by default. If &%[barnumber]%& appears followed by the word `off', no bar number is output for the current bar, even if the header directive implies there should be one. .subsection "[Bass]" .index "&%[bass]%&" This specifies a bass clef, that is, an F clef on the fourth stave line (&R; &<>&). .subsection "[Beamacc]" .index "&%[beamacc]%&" This directive causes the next beam to be drawn as an accelerando beam (&R; &<>&). .subsection "[Beammove]" .index "&%[beammove]%&" .index "beaming" "moving a beam" This directive, which takes a single number as its argument, causes the following beam to be moved vertically without altering its slope. A positive number moves it upwards, and a negative one downwards. An attempt to move a beam too near the noteheads may give strange results. Use of this directive is preferable to adjusting the stem length of one or more notes in the beam, because it is not always clear which notes in the beam are those whose stems control the beam position. .subsection "[Beamrit]" .index "&%[beamrit]%&" This directive causes the next beam to be drawn as an ritardando beam (&R; &<>&). .subsection "[Beamslope]" .index "&%[beamslope]%&" .index "slope of beams" .index "beaming" "slope" PMW contains rules for choosing the slope of a beamed group which usually have the right effect. However, it is possible to override them by means of the &%[beamslope]%& stave directive. This directive takes as its argument a number specifying the slope of the next beamed group on the current stave. .code [beamslope 0.2] g-g- [beamslope 0] c-g- [beamslope -0.1] g-c'- .endd Positive slopes go upwards to the right, negative ones downwards. A slope of zero specifies a horizontal beam. The values given are in the conventional form for gradients, with a slope of 1.0 giving an angle of 45 degrees. When a beam's slope is specified explicitly, this overrides the setting of the maximum beam slope (see &%maxbeamslope%&). When a beam has notes on either side of it, it may not be possible to use the specified slope because of the position of the notes. In this case, the default rules come into play again and a smaller slope is chosen. .subsection "[Bottommargin]" .index "&%[bottommargin]%&" .index "page" "bottom margin" .index "margin" "bottom" This directive provides a way of changing the value given by the &%bottommargin%& header directive for a single page only. If there is more than one occurrence on the same page, the last value is used. .code [bottommargin 30] .endd This example, which may appear in any bar on the page, sets the margin for that page to 30 points. .subsection "[Bowing]" .index "&%[bowing]%&" .index "bowing marks" String bowing marks are normally output above the stave. The &%[bowing]%& directive is provided for changing this. It must be followed by one of the words `above' or `below'. .subsection "[Breakbarline]" .index "&%[breakbarline]%&" An occurrence of this directive causes the bar line at the end of the current bar not to be extended downwards onto the stave below, unless it is at the end of a system. See also &%[unbreakbarline]%&. .subsection "[Cbaritone]" .index "&%[cbaritone]%&" This specifies a C-clef on the 5-th stave line (&R; &<>&). .subsection "[Comma]" .index "&%[comma]%&" .index "pause" "comma" The &%[comma]%& directive inserts a comma &+[&{zzzN}&]+& pause mark above the current stave. See also &%[tick]%&. .subsection "[Contrabass]" .index "&%[contrabass]%&" This specifies a bass clef with a little `8' below it (&R; &<>&). .subsection "[Copyzero]" .index "&%[copyzero]%&" .index "stave zero" This directive takes a dimension as an argument, and adjusts the vertical level of any stave zero material in the current bar when stave zero (&R; &<>&) is overprinting the current stave. .code [copyzero 4] .endd This example raises the stave zero material in the current bar by 4 points. It is not necessary for there to be an instance of the &%copyzero%& header directive specifying the current stave for &%[copyzero]%& to take effect. In the default case, &%[copyzero]%& takes effect whenever the stave in which it appears is the top stave of a system. When first and second time bar marks are specified in stave zero, and there is a need to adjust their height for certain staves, it should be noted that the marks are drawn when the bar in which their end point is determined is processed. Consequently, it is that bar in which &%[copyzero]%& should appear. The same applies to slurs and lines (though they are rarely specified in stave zero). .subsection "[Couple]" .index "&%[couple]%&" .index "coupled staves" .index "treble/bass coupling" .index "bass/treble coupling" .index "staves" "coupled" A single music part, notated as one PMW stave, can be spread across two staves. This is a common requirement in keyboard music. If &%[couple up]%& is given on a bass clef stave, it specifies that notes higher than middle C should be positioned on the stave above, which is assumed to be a treble clef stave. Similarly, &%[couple down]%& couples a treble clef stave to the bass clef stave below, and there is also &%[couple off]%& to terminate the coupling. A stave can be coupled only one way at once. However, there is no reason why a pair of staves should not both be simultaneously coupled to each other. An example of coupling is given in section &<>&. &*Warning 1:*& Coupling only works properly if the upper stave is using the treble clef and the lower one is using the bass clef. &*Warning 2:*& Coupling requires the spacing between the staves to be a multiple of 4 points if it is to work properly in all circumstances. The default spacing of 44 points satisfies this requirement. Occasionally it is desirable to cause individual notes that would not normally be positioned on the coupled stave to be moved onto it. A notation for this is provided in the form of the &`\c\`& note option. .code [treble 1 couple down] g-e-c-\c\g`- .endd The middle C in this beam would normally remain on the original (upper) stave, but the use of &`\c\`& forces it down onto the lower one. If the &`\c\`& option is used when coupling is not in force, the note is coupled upwards if it is on or above the centre line of the stave; otherwise it is coupled downwards. When coupling is in force, there is a note option &`\h\`& (for `here') that prevents a note that would normally move onto the other stave from doing so. .subsection "[Cue]" SUBSECTcue .index "&%[cue]%&" .index "cue bars" The directive &%[cue]%& causes the subsequent notes of the current bar, on the current stave, to be output using the cue note font, instead of the normal font. Typically, the note spacing needs to be reduced as well. This feature is normally used only for single parts; the conditional features of PMW can be used to control this, as in the following example: .code [35] R! | @ 35 bars rest *if score R! | @ if full score, rest bar *else [cue] [ns *1/2] @ cue bar with halved note spacing "[flute]"/a @ output above stave g a-g-f-e- e | [ns] @ restore note spacing at next bar start *fi @ end conditional section .endd The effect of the &%[cue]%& directive is automatically cancelled at the end of the bar in which it appears, but it can also be explicitly cancelled by &%[endcue]%&. .index "&%endcue%&" .index "ornaments" "complicated" In addition to their use for cue bars, &%[cue]%& and &%[endcue]%& can be used for handling complicated ornaments or optional notes. Another way of handling optional notes is to use the &`\sm\`& note option &R; &<>&.) .index "optional notes" When cue notes are dotted, the dots are spaced horizontally in proportion to the size of the cue notes. However, when there are small optional notes with full-sized notes directly above or below on the same stave, it is sometimes better to arrange for all the dots to be aligned. You can request this by specifying &%[cue/dotalign]%&, which increases the space between the cue notes and their dots. .subsection "[Deepbass]" .index "&%[deepbass]%&" This specifies an F clef based on the fifth stave line (&R; &<>&). .subsection "[Dots]" .index "augmentation dots" "inverted" .index "&%[dots]%&" Augmentation dots are normally put in the space above when a note appears on a stave line. The directive &%[dots]%& is provided for changing this. It must be followed by one of the words `above' or `below', and it applies to all subsequent notes on the stave, with the exception of certain adjacent notes in chords. Note that the position of an individual note's dot can be overridden by means of the &`\:\`& note option (&R; &<>&). .subsection "[Doublenotes]" SUBSECTstavedoublenotes .index "&%[doublenotes]%&" .index "doubling note lengths" .index "notes" "doubling length" This directive causes the length of subsequent notes in the current stave to be doubled. Unlike the header directive with the same name (&R; &<>&), it does not affect time signatures. It is, however, cumulative with the header directive and with &%[halvenotes]%& (&R; &<>&). .subsection "[Draw]" The &%[draw]%& directive is described in chapter &<>&. .subsection "[Endcue]" See &%[Cue]%& (&R; &<>&) above. .subsection "[Endline]" See &%[line]%& (&R; &<>&) below. .subsection "[Endslur]" See &%[slur]%& (&R; &<>&) below. .subsection "[Endstave]" .index "&%[endstave]%&" The data for each stave of music must end with the directive &%[endstave]%&. This can be followed only by the start of a new stave or the start of a new movement or by the end of the file. .subsection "[Ensure]" .index "&%[ensure]%&" .index "spacing" "ensuring sufficient" The &%[space]%& directive always inserts extra space before a note. Sometimes all that is needed is an assurance that a certain amount of space is available, for example, when using the drawing facilities for marks that PMW does not know about. The &%[ensure]%& directive provides this facility. If the requested amount of space is not available between the previous note (or the start of the bar) and the next note (or the end of the bar), a suitable amount of space is inserted. .code G [ensure 32] G .endd In this example, if this is the only stave, because minims are normally 20 points apart, the &%[ensure]%& directive has the effect of inserting 12 points of space. However, if there is another stave containing four crotchets, which are 16 points apart, there is already 32 points between the two minims, and no extra space is inserted. The additional space is inserted immediately before the note, thus moving it further away from any other items, such as clefs, which may lie between it and the previous note. .subsection "[Fbfont]" .index "&%[fbfont]%&" .index "fonts" "default for figured bass" .index "figured bass" "default font" The default typeface for figured bass text is roman. It can be changed for an individual stave by means of the &%[fbfont]%& directive. This directive takes as its argument one of the standard font names. .code [fbfont extra 3] .endd This example assumes that the third extra font has been suitably defined for use in figured bass text. In any given text string it is always possible to change typeface by using the appropriate escape sequence. .subsection "[Fbtextsize]" .index "&%[fbtextsize]%&" This directive must be followed by a number in the range 1 to 20. It selects the default size to be used for figured bass text on the current stave. The actual font sizes that correspond to the twenty available sizes are set by the &%textsizes%& header directive. If this directive is not used, the size used is the one set by the &%fbsize%& header directive (which is a different parameter from any of the sizes set by &%textsizes%&). &%[Fbtextsize]%& is normally needed only if you want different sizes of figured bass text on different staves. .subsection "[Footnote]" SUBSECTfootnote .index "&%[footnote]%&" .index "footnotes" This directive usually defines a text string that is output below the bottom system of the page in which the current bar appears. However, the syntax of &%[footnote]%& is the same as the syntax of the &%heading%& and &%footing%& directives (&R; &<>&), and therefore &%[footnote]%& may alternatively define a drawing. Footnotes are different from footings, in that the space in which they are placed is taken from the normal page length; consequently the bottom system of music is positioned higher up the page, in order to leave room for footnotes. If a textual footnote is longer than the line length, it is automatically split into several lines in the same was as headings and footings. .code [footnote "A close friend of Schumann and Mendelssohn, Sheffield-born Sterndale Bennett founded the Bach choir, was for ten years the conductor of the Philharmonic Society, and in 1866 became principal of the Royal Academy of Music."] .endd The initial font is roman, and the default size is 9 points, but this can be changed by the &%footnotesize%& header directive. An individual footnote may override the default by including a number before the text string. If there are several footnotes on one page, extra vertical white space is left between them. The default amount of extra space is 4 points, but this can be changed by the &%footnotesep%& header directive. If there are several footnotes in one system, they are ordered by stave, those for the lowest numbered stave appearing first. .subsection "[Hairpins]" SUBSECThairpinsstave .index "&%[hairpins]%&" .index "hairpin position" Hairpins (&R; &<>&) are normally placed below the stave. The &%[hairpins]%& directive is provided for changing this for an individual stave. It must be followed by one of the words `above' or `below'. It can also be followed by `middle', which causes hairpins to be below the stave, half way between it and the following stave, unless low notes on the upper stave force them lower still. Hairpins in fixed positions above or below the stave can be made the default by following `above' or `below' in the &%[hairpins]%& directive by a dimension. .code [hairpins above 10] .endd This example specifies that the `sharp end' of hairpins should be positioned 10 points above the top of the stave. Individual hairpins can be moved from this position by the normal &`/u`& and &`/d`& qualifiers on the angle bracket characters that specify hairpins. In addition, &`/a`& and &`/b`& can be used without a dimension to specify the default type of hairpin, whose vertical position depends on the notes it covers. It is also possible to set up a default adjustment for variable-position hairpins, by giving a dimension preceded by &`+`& or &`-`& in the &%[hairpins]%& directive. .code [hairpins below -4] .endd After this example, all hairpins are positioned as if they were followed by &`/d4`&. Note the distinction between these two directives: .code [hairpins above 8] [hairpins above +8] .endd The former causes all hairpins to be 8 points above the stave, whereas the latter adds 8 points to whatever position PMW computes from the notes under the hairpin. .subsection "[Hairpinwidth]" .index "&%[hairpinwidth]%&" This directive, which must be followed by a dimension, sets the default width of the open ends of any subsequent hairpins on the current stave. The overall default is 7 points. The width of the open end of an individual hairpin can be set by following the initial &`<`& or &`>`& character with &`/w`& and a dimension. .subsection "[Halvenotes]" SUBSECTstavehalvenotes .index "&%[halvenotes]%&" .index "halving note lengths" .index "notes" "halving length" This directive causes the length of subsequent notes in the current stave to be halved. Unlike the header directive with the same name (&R; &<>&), it does not affect time signatures. It is, however, cumulative with the header directive and with &%[doublenotes]%& (&R; &<>&). For example, if there are many bars consisting mostly of quavers in a stave, using &%[halvenotes]%& saves having to type hyphens after each lower case note letter. &%[Doublenotes]%& can be used to restore the previous state. .subsection "[Hclef]" .index "&%[hclef]%&" .index "percussion clef" This directive causes a percussion `H-clef' to be used on the current stave. This behaves as a treble clef as far as note positioning is concerned (&R; &<>&). .subsection "[Justify]" .index "&%[justify]%&" The justification parameters can be changed by the appearance of this stave directive. Unlike the header directive of the same name, it specifies &'changes'& to the justification parameters, not complete settings. Its effect lasts only until the end of the current movement. The directive name must be followed by a &`+`& character (for adding a justification) or a &`-`& character (for removing a justification) immediately preceding one of the words `top', `bottom', `left', or `right'. For example, if the last page of a piece uses only slightly more than half the page depth, and vertical justification is not wanted, &%[justify -bottom]%& should be included in any bar on that page. Changes of parameter take effect from the system in which they are encountered, and persist until a subsequent change. More than one change may be given at once. .code [justify -right -bottom] .endd This example might be used in the last system of a piece if the last line and the last page are both too short to be sensibly justified. .subsection "[Key]" .index "&%[key]%&" .index "key signatures" "changing" This directive specifies a change of key signature. If this falls at the start of a system, a cautionary key signature is output at the end of the previous system unless the word `nowarn' is included in the directive. .code [key E$ nowarn] .endd There is also a header directive, &%nokeywarn%&, for suppressing all cautionary key signatures. Key signature changes are shown in `modern style'. That is, unless the new key signature is empty (C major, A minor, the pseudo-key N, or an empty string from &%printkey%&), all that is output is the new signature. If `old style' is required, where the new key signature is preceded by an explicit cancelling of the old one with naturals, the new signature should be preceded by a change to a key with an empty signature. For example, in the default configuration (no &%printkey%& settings): .code [key C key A] .endd This example uses a number of naturals to cancel the previous signature before outputting three sharps for A major. When a bar starts with a new key signature and a repeat mark, the order in which these appear depends on their order in the input. .code [key G] (: .endd This example causes the key signature to be first, followed by the repeat mark. .code (: [key G] .endd This example causes the repeat mark to be amalgamated with the previous bar line, with the key signature following. If, at the same point in the music, these items appear in different orders on different staves, the repeat sign is put first on all staves. .subsection "[Line]" SUBSECTline .index "lines" "straight" .index "straight lines" .index "lines" "over notes" .index "lines" "under notes" .index "&%[line]%&" .index "&%[xline]%&" .index "bracket, horizontal" .index "horizontal brackets" There are a number of situations where it is required to draw a straight line above or below a sequence of notes, with or without small `jogs' at the ends. The directive &%[line]%& works exactly like &%[slur]%& (&R; &<>&), except that what is drawn is a straight line with a vertical `jog' on each end, giving a sort of horizontal or near-horizontal bracket. The angle of the line depends on the `shape' of the note sequence that is above or below. The end of the line is marked by &%[endline]%& or &%[el]%& and there are the same options as for &%[slur]%& &-- for example, &`/b`&, &`/u`&, &`/d`&, &`/rr`&, etc. The &`/i`& and &`/ip`& qualifiers are available, and cause a dashed or dotted line to be drawn, respectively. The &`/co`& and &`/ci`& options affect the length of the `jogs'; however, the other options starting with &`/c`&, which for a slur move the Bézier curve control points, are ignored for lines. The following options can also be given with &%[line]%& in addition to those available for &%[slur]%&: .display &`/ol`& requests that the line be `open on the left' &`/or`& requests that the line be `open on the right' .endd An `open' line has no `jog' on the end. Unlike slurs, lines are by default always positioned above or below the stave itself, never actually overprinting it. However, like slurs, they can be positioned at fixed positions above or below the staves or at the underlay or overlay levels. The fixed positions refer to the main part of the line, excluding the jogs, if any. The &%[linegap]%& directive can be used to leave gaps in lines with optional text or drawing in the gap. For handling complicated overlapping lines, there is an &%[xline]%& directive that corresponds to &%[xslur]%&, and lines can also be `tagged' like slurs (&R; &<>&). The &`/=`& option that is used in &%[endslur]%& to identify tagged slurs is also available in &%[endline]%& for tagged lines. .subsection "[Linegap]" SUBSECTlinegap .index "&%[linegap]%&" .index "gaps" "in lines" .index "lines" "gaps in" The directive &%[linegap]%& requests that a gap be left in a line that was set up by the &%[line]%& directive. The following options are provided: .ilist &`/=`&<&'letter'&> is used to identify which line is being referenced, in exactly the same way as it is used on the &%[endline]%& directive. .next &`/w`& followed by a number is used to specify the width of the gap; if it is not given, a width of four points is used, unless there is an associated text string (see below). The width is measured along the line. If a gap passes either end of the line, the ending jog is never drawn, even if specified. .next &`/h`& specifies that the centre of the gap is to be halfway along the line. It can be followed by a number in the range 0&--1.0 to specify a different fraction of the length; for example, &`/h0.75`& specifies that the centre of the gap is to be three-quarters of the way along the line. If &`/h`& is not specified, the centre of the gap is aligned with the centre of the notehead of the next note, or with the barline if there are no more notes in the bar. If &`/h`& is used when a line is split between two systems, it is applied to whichever part of the line the &%[linegap]%& directive falls in. .next &`/l`& and &`/r`& are used to move the position of the gap to the left or to the right by a given number of points. .next .index "drawing facility" "in line gaps" &`/draw`& <&'arguments'&> <&'name'&> specifies that the named drawing is to be associated with the gap. &*Warning*&: take care not to leave out the &`/`& by mistake. If a space is used instead, the drawing is no longer associated with the line gap, but with the following note. When defining drawings that are to be used with line gaps, it is useful to know that the width of lines drawn by &%[line]%& is 0.3 points. The drawing code is obeyed with the origin of the coordinate system set to the centre of the gap, and the variables &%linegapx%& and &%linegapy%& containing the coordinates of the start of the right-hand portion of the line relative to this origin. For a horizontal line, &%linegapx%& is half the width of the gap, and &%linegapy%& is zero. .next .index "text" "in line gaps" &`/"`&&'text'&&`"`& associates the text with the gap. .code [linegap/"\it\ad lib."] .endd This example outputs the italic text &'ad lib.'& in the gap. The default font is roman. If no width for the gap is given by the &`/w`& option, the width is set to the length of the text plus a little bit. The text is centred in the gap, rotated so that it has the same slope as the line. The text option must be the last option for &%[linegap]%& because any further options are taken as options that apply to the string. The following text options are available: &`/u`&, &`/d`&, &`/l`&, &`/r`&, &`/s`&, &`/S`&, &`/box`&, &`/rbox`&, and &`/ring`&. The movements are relative to a coordinate system whose `horizontal' axis lies on the line joining the ends of the gap. .endlist A drawing or text string can be associated with the start or end of a line by using &`/h0`& or &`/h1`&, respectively. To associate a drawing or string with a particular point on a line, but without leaving a gap, &`/w0`& can be used. Any number of gaps may be specified for a single line. They are processed from left to right, and all the drawings for a single line on one system are processed together in succession. Here is an example of a gap that is used for some text in the middle of a horizontal line: .code [line/a/h linegap/h/"unis. \it\ad lib"] efge | bag [el] r | .endd .music "music28" 36 4,-18 Because the &`/h`& option is used, the &%[linegap]%& directive can be given right at the start of the line. Do not confuse &`/h`& as used with &%[line]%&, where it means &'horizontal'&, with &`/h`& as used with &%[linegap]%&, where it means &'halfway'&. This latter usage was chosen to be similar to the &`/h`& option on hairpins. .index "pedal marks" Another use of the &%[linegap]%& facility is for drawing conventional piano pedal marks. Because these appear often in a piece, it is sensible to define macros for the relevant directives. .code draw blip linegapx linegapy moveto 0 linegapx 2 mul lineto linegapx neg linegapy neg lineto 0.3 setlinewidth stroke enddraw draw ped 0 0 moveto "\**163\ " show enddraw *define ped [line/=P/b/h/ol/d4 linegap/h0/w30/draw ped] *define blip [linegap/=P/draw blip] *define ep [endline/=P] [stave 1 bass 0] r- &ped %a &blip b-_; b-; e &blip a`-_ | a`- G` &ep r-r | .endd .music "music29" 40 0,-16 The &%ped%& macro starts the line, which is specified as horizontal and open (that is, no jog) on the left. It is also moved down four points, to allow for the height of the &{{£}}& text at the start, which is generated by the immediately following &%[linegap]%& directive. The &%blip%& macro creates a gap in the line at the next note, and causes a `blip' to be drawn. Notice that the size of the blip is relative to the width of the gap. Thus the same drawing could be used for different sized blips if required. The &%ep%& macro ends the line. In simple cases it would be just as quick to type &%[el]%&, the abbreviation for &%[endline]%&, but using the macro makes it clear that it is a pedal line that is terminating as well as using the &`/=`& option to specify exactly which line it is. .subsection "[Mezzo]" .index "&%[mezzo]%&" This specifies a C clef with its centre on the second stave line (&R; &<>&). .subsection "[Midichannel]" SUBSECTmidichannelST .index "&%[midichannel]%&" .index "MIDI" "changing channel" The &%[midichannel]%& directive can be used to change the MIDI channel that the current stave uses, from the next note onwards. It can also be used to change the voice allocation of the new channel at the same time. .code [midichannel 5] [midichannel 6 "flute"] .endd The voice change takes effect at the time of the next note (or rest), and of course it affects any other staves that may be using the same channel. A relative volume may optionally be given after the voice name, separated by a slash. .code [midichannel 1 "trumpet"/12] .endd See the &%midichannel%& header directive for how to set up channels at the start of a piece. .subsection "[Midipitch]" SUBSECTmidipitch .index "&%[midipitch]%&" .index "MIDI" "changing pitch" The &%[midipitch]%& directive is used to alter the MIDI playing pitch for a stave, for the purpose of selecting a different untuned percussion instrument. Its argument takes the same form as the final argument of the &%midichannel%& header directive. .code [midipitch "bongo"] .endd To stop forcing the playing pitch on a stave, specify an empty string in quotes. See &%[printpitch]%& for an alternative way of handling MIDI untuned percussion. .subsection "[Miditranspose]" .index "&%[miditranspose]%&" .index "transposition" "for playing" The &%[miditranspose]%& directive can be used to change the playing transposition of a stave, which is initially set from the &%miditranspose%& header directive. The value given in &%[miditranspose]%& is added to the current playing transposition for the stave at the point it is encountered. One use of this is to arrange for &'8va'& passages to be played at the correct pitch. Changes made by &%[miditranspose]%& do not persist beyond the end of the movement. .subsection "[Midivoice]" SUBSECTmidivoice .index "&%[midivoice]%&" .index "MIDI" "changing voice" The &%[midivoice]%& directive can be used to change the MIDI voice without changing the channel. Like &%[midichannel]%& a relative volume may optionally be given after the voice name, separated by a slash. .code [midivoice "french horn"] [midivoice "piano"/12] .endd Note that this will affect any other staves that are using the same channel. If &%[midivoice]%& with different arguments appears in multiple staves that are using the same channel, the result is undefined. If you want different staves to play using different voices, you must allocate them to different channels, using either &%midichannel%& at the start of the piece, or &%[midichannel]%& on each stave. .subsection "[Midivolume]" SUBSECTmidivolumeST .index "&%[midivolume]%&" .index "MIDI" "changing volume" This directive can be used to change the relative MIDI playing volume of a particular stave part way through. Its single argument is number between 0 and 15, specifying the new relative volume for the current stave. .subsection "[Move]" .index "&%[move]%&" .index "moved notes" .index "notes" "moved" .index "clefs" "moving" If the &%[move]%& directive is followed by a single number, it causes the next non-textual thing on the current stave, whether it be a note or something else, to be moved horizontally by that number of points, without affecting the position of anything else in the bar, except slurs or ties that are attached to a moved note and any accents or ornaments that a note may have. If the number is positive, movement is to the right; if negative, it is to the left. Certain items can also be moved vertically, by specifying a second number after a comma. The second argument may also be a positive or negative number; positive movement is upwards. If two or more &%[move]%& directives appear in succession on a stave, they act cumulatively. .code [move -2,4 treble] .endd This example positions a mid-stave clef two points to the left and four points higher than normal. Vertical movement does not apply to notes, and is ignored if specified. It does apply to rests. See &%[rlevel]%& and section &<>& for other ways of moving rests vertically. If more than one is used, the effect is cumulative. When staves of different sizes are in use, any vertical movement specified by &%[move]%& is scaled for the current stave, but horizontal movements are not scaled. However, there is a related directive called &%[rmove]%& that scales in both directions. Text items and slurs have their own movement options. Those items to which the &%[move]%& directive applies are: clefs, key signatures, time signatures, dotted bar lines, repeat marks, caesuras, commas, ticks, rests, and notes (horizontal movement only). If &%[move]%& is present in the first bar of a sequence of rest bars and they are packed up into a single multi-bar rest, the &%[move]%& is applied to the number that is output above the long rest sign. See also &%[ensure]%&, &%[rmove]%&, &%[rsmove]%&, &%[rpace]%&, &%[smove]%& and &%[space]%&. .subsection "[Name]" SUBSECTname .index "&%[name]%&" .index "naming staves" .index "staves" "names for" The &%[name]%& directive has two entirely separate functions. If its arguments are one or more strings or calls to drawing functions, it is an alternative way of defining text and/or drawings that appear at the left-hand side of the stave. This can be useful when portions of the text are being skipped conditionally. .code [stave 1 treble 1] *if score [name "Flute" "Fl."] *fi .endd This example shows the name in the score, but not in the part. In this form, the arguments for &%[name]%& are exactly the same as the text and drawing arguments of the &%[stave]%& directive (&R; &<>&). Each occurrence of &%[name]%& adds to the list of strings and drawings. The second form of &%[name]%& is used to change what appears at the start of a stave part-way through a piece, for example, if a double choir becomes a single choir, or &'vice versa'&. In this usage, its argument is a single number, which selects which string and/or drawing is to be used on the current and subsequent systems. Each start-of-stave `item' consists of a string or a call to a drawing function, or both, and the items are numbered starting at one. For example, a stave might start with: .code [stave 2 "Alto" "A" "Alto I"] .endd By default in the first system the stave is labelled `Alto', and in all subsequent systems it is by default labelled `A'. However, if &%[name 3]%& is used at any point, the system in which it appears, and any subsequent ones, use the text `Alto I' for this stave. A number greater than the number of items can be used to suppress any output; alternatively, empty strings can be used. .subsection "[Newline]" .index "&%[newline]%&" .index "forcing new lines" The directive &%[newline]%& can be used to force a new line (system) of music to be started for a particular bar. It should normally be at the start of a bar, but it need only appear in one stave that is selected. If a stave is not selected, an appearance of &%[newline]%& within it is ignored. See also the &%layout%& header directive. .subsection "[Newmovement]" SUBSECTnewmovement .index "&%[newmovement]%&" .index "movement" "specifying" This directive must appear either immediately after an &%[endstave]%& directive, or in the header section of a movement. In the latter case it terminates a movement that has no staves; this could be used for a title page. There are a number of optional arguments, described below, of which &`newpage`&, &`thispage`&, and &`thisline`& are mutually exclusive. &%[Newmovement]%& is followed by a new set of header directives and stave data. When it is used without an argument, PMW looks to see if it can fit the new heading lines (if any) and the first system of the new movement onto the current page. If it cannot, a new page is started. In the case of a system consisting of one stave only, PMW tries to fit two systems into the current page, because a single line of music at the bottom of a page does not look good. By specifying &%[newmovement newpage]%& you can force PMW always to start a new page. You can also specify &%[newmovement thispage]%& to stay on the current page when only a single stave of music will fit. Page headings specified in the new movement completely replace those set up in the previous movement, but if nothing is specified, the old page headings continue. This means that, for example, if page numbers are specified in the first movement by a page heading, they are output on all subsequent pages, including pages that are the start of new movements. Section &<>& contains more details about the interaction of headings and footings with new movements. When a new movement starts at the top of a page, any page headings that are in force (either carried over or newly specified) are output, in addition to the headings for the movement. Sometimes, however, it is required to suppress these page headings, for example if they are being used to put the name of the movement at the head of pages. This can be done by adding the keyword `nopageheading' to the &%[newmovement]%& directive. .code [newmovement nopageheading] .endd This option can be used with or without the `newpage' option; it takes effect only if the new movement actually starts at the top of a page. .index "footing" "at end of movement" The &%lastfooting%& directive sets up footings for the final page of a piece. In some circumstances it may be desirable to have a special footing at the end of an individual movement, and this can be done by specifying &%[newmovement uselastfooting]%&. In this case, if the new movement starts on a new page, the footing on the previous page is the &%lastfooting%& from the previous movement, if present. To force a new page, putting the &%lastfooting%& text on the current page, use: .code [newmovement newpage uselastfooting] .endd Use of this option does not cancel the &%lastfooting%& text; it is carried forward to the new movement, but of course can be replaced by a new &%lastfooting%& directive in the new movement. Another possible form of the directive is &%[newmovement thisline]%&, which is useful in some specialized circumstances. It has the effect of starting a new movement without advancing the current vertical position on the page. If there are no headings, the first system of the new movement's first stave is at the same level as the first stave of the last system of the previous movement. Two different uses are envisaged for this: .ilist Music for church services often contains very short sections of one or two bars, and it is sometimes desirable to have two or more of them side by side. .next .index "incipits" One style of incipit has white space between the incipit staves and the start of the main system. .endlist In both cases it is necessary to specify left justification for the last system of the first movement, and right justification for the first system of the second. .subsection "[Newpage]" .index "&%[newpage]%&" .index "forcing new pages" The directive &%[newpage]%& can be used to force a new page of music to be started at a particular point. It should always be at the start of a bar, but need appear in only one stave. If a stave is not selected, however, an appearance of &%[newpage]%& within it is ignored. See also the &%layout%& header directive. .subsection "[Nocheck]" SUBSECTstavenocheck .index "&%[nocheck]%&" .index "bar lengths" .index "odd bar lengths" .index "variable bar lengths" It is sometimes useful to disable PMW's checking of bar lengths (at the start or end of a piece, for example). The directive &%[nocheck]%& suppresses this check, for the current bar only. (See the header directive of the same name for suppressing the check globally.) You can omit &%[nocheck]%& from completely empty bars and bars in which nothing appears other than a whole bar rest indication. .subsection "[Noclef]" .index "&%[noclef]%&" .index "invisible items" "clefs" .index "clefs" "invisible" This specifies an invisible clef (&R; &<>&). It acts as a treble clef as far as note pitch is concerned. It is useful when setting incipits where no clef is required. It is also useful when setting fragments and musical examples. .subsection "[Nocount]" .index "&%[nocount]%&" .index "uncounted bars" .index "bar numbers" "counting" .index "counting bars" .index "bar counting" If the first bar of a piece is incomplete, it is conventional not to include it in the bar numbering. Occasionally this applies in other situations, for example, when using an `invisible bar line' to make PMW split a bar over two systems. The directive &%[nocount]%& causes the current bar not to be counted; such a bar is never numbered by the &%barnumbers%& header directive, but an explicit &%[barnumber]%& within a stave is honoured (unless it is zero, the number will have a decimal fraction). &%[Nocount]%& need appear in only one stave. If it appears anywhere in a bar whose contents are repeated by means of a number in square brackets, all the repeated bars are uncounted. Section &<>& explains how PMW identifies uncounted bars if it needs to refer to them, for example, in an error message. .subsection "[Noteheads]" SUBSECTnoteheadstave .index "&%[noteheads]%&" .index "noteheads" "invisible" .index "noteheads" "alternative shapes" .index "shape of noteheads" .index "invisible items" "noteheads" .index "harmonics" .index "`direct' character for noteheads" .index "noteheads" "`direct' character" .index "pitch, indicating without duration" Four alternative notehead shapes are supported: diamond-shaped for string harmonics, cross-shaped, circular, and invisible (that is, no noteheads at all). The character &{{²}}& (which is called `direct') is sometimes seen on a stave in musical extracts and examination papers to indicate a pitch without specifying a time value. This character is in PMW's font and can be positioned as a text item, and it is also available as an exotic additional form of notehead. You can use any of the notehead shapes without stems. &%[Noteheads]%& controls the default settings of these features for subsequent notes. It must be followed by one of the words `normal', `harmonic', `cross', 'circular', `none', `only', or `direct'. .music "music65" 35 10,-18 For individual notes, option settings such as &`\nh\`& and &`\nx\`& (&R; &<>&) can be used to override the default, which makes it possible to have different noteheads within a chord. .index "stemless notes" .index "stems" "invisible" .index "invisible items" "stems" &%[Noteheads only]%& and &%[noteheads direct]%& cause subsequent notes not to have stems. For the former, the notehead type is not altered, so &%[noteheads cross noteheads only]%& gives stemless crosses, and &%[noteheads none noteheads only]%& makes subsequent notes invisible. Any setting other than `only' or `direct' enables note stems. Because this is quite a long directive to type, and one which might appear frequently in some music, abbreviations are provided as follows: .itable none 0 0 3 30 left 80 left 200 left .row &`[c]`& "is equivalent to" "&`[noteheads central]`&" .row &`[h]`& "is equivalent to" "&`[noteheads harmonic]`&" .row &`[o]`& "is equivalent to" "&`[noteheads normal]`&" .row &`[x]`& "is equivalent to" "&`[noteheads cross]`&" .row &`[z]`& "is equivalent to" "&`[noteheads none]`&" .endtable .index "ledger lines" "with alternate noteheads" When &%[noteheads direct]%& is selected (to show notes as &{{²}}&), ledger lines are output as normal, but there are no stems or beams. When no noteheads are being output (&%[noteheads none]%&), breves and semibreves are completely invisible. Stems and beams are still drawn for other notes, but no ledger lines. See &%[notes]%& for a way of suppressing noteheads &'and'& stems, but still drawing beams. With cross-shaped noteheads there is no difference between the appearance of a crotchet and a minim. Breves are distinguished from semibreves only when normal noteheads are used, and minims and semibreves look the same with circular noteheads. .subsection "[Notes]" .index "&%[notes]%&" .index "invisible items" "noteheads" .index "invisible items" "stems" .index "stems" "invisible" .index "noteheads" "invisible" .index "beams without notes" The directive &%[notes off]%& suppresses the output of notes and their stems (and ledger lines). However, if the notes would have been beamed, the beams are still drawn. This can be used for placing beams in non-standard places. In addition, if ornaments or fermatas are specified, these are shown. Making the note or chord at the end of a tie invisible is a convenient way to output `hanging' tie marks (&R; &<>&). The effect of &%[notes off]%& is reversed by &%[notes on]%&. See &%[noteheads]%& for a way of suppressing noteheads while leaving both stems and beams. .index "&%midifornotesoff%&" .index "MIDI" "for invisible notes" Notes that are suppressed with &%[notes off]%& are by default omitted from MIDI output. This can be changed by including the header directive &%midifornotesoff%&. .subsection "[Notespacing]" SUBSECTstavens .index "&%[notespacing]%&" .index "&%[ns]%&" .index "notes" "spacing" .index "spacing" "notes" The &%[notespacing]%& directive (abbreviation &%[ns]%&) specifies a temporary change in the horizontal distances between notes. Internally, note spacings are held to an accuracy of 0.001 of a point. If the directive is given with no arguments, it resets to the values that were current at the start of the movement. The most commonly used form of &%[notespacing]%& is the one that changes each element in the note spacing table by a multiplicative factor. This is done by following the keyword by an asterisk and a number (possibly containing a decimal point) or a rational number, as in the following examples: .itable none 0 0 2 80 left 300 left .row "&`[ns *0.75]`&" "change to three-quarter spacing" .row "&`[ns *3/4]`&" "change to three-quarter spacing" .row "&`[ns *2]`&" "double the spacing" .row "&`[ns *1.5]`&" "multiply the spacing by one and a half" .row "&`[ns *3/2]`&" "multiply the spacing by one and a half" .endtable Alternatively, the directive name can be followed (in the brackets) by up to eight numbers, which give the &'change'& in the note spacing, in points, for notes of different lengths, starting with the value for breves. (See the &%notespacing%& header directive.) Trailing zero values can be omitted. .code [notespacing 0 0 3 -2] .endd This example specifies that minims are to appear three points further apart and crotchets are to be two points closer together. The &%[notespacing]%& directive takes effect for the remainder of the current bar on the stave where it occurs, and for all the notes in the same bar on staves of higher number (that is, those that are below it), and then for all notes in subsequent bars. Of course, this may have the effect of moving notes in previous staves, in order to keep the music properly aligned. &*Warning*&: To avoid unexpected effects, &%[notespacing]%& is best used only at the beginnings of bars, and preferably in the top part. When changing the spacing for a single bar, it is all too easy to reset the note spacing within the bar, for example: .code [notespacing *0.8] a-b- g d [ns] | .endd This may behave strangely because PMW processes bars stave by stave. It will therefore obey the resetting directive before considering the other staves, and only one bar on one stave will have been processed with the altered spacing. It is usually better to use this form: .code [notespacing *0.8] a-b- g d | [ns] .endd In this case, the subsequent staves are also processed with the reduced spacing. If a change of note spacing is always required, whatever combination of staves is selected, it can be given on stave 0. .subsection "[Octave]" SUBSECToctave .index "transposition" "octave" .index "&%[octave]%&" When a part is in the treble clef it may be easier to enter if the letters C&--B represent the octave starting at middle C rather than the one below it (which is the default). The &%[octave]%& directive, which must be followed by a number, requests transposition by the number of octaves given. The octave can also be specified at the same time as the clef (&R; &<>&). Each octave setting replaces the previous one; they are not cumulative. The argument for &%[octave]%& may be positive or negative: .display &`[octave -1] `& C is the note two octaves below middle C &`[octave 0] `& C is the note one octave below middle C &`[octave 1] `& C is middle C .endd Octave transposition is in addition to any general transposition that is in force. .subsection "[Olevel] and [olhere]" .index "&%[olevel]%&" .index "&%[olhere]%&" These directives control the position of the overlay level in exactly the same way as &%[ulevel]%& and &%[ulhere]%& for the underlay level (&R; &<>&). .subsection "[Oltextsize]" .index "&%[oltextsize]%&" This directive must be followed by a number in the range 1 to 20. It selects the default size to be used for overlay text on the current stave. The actual font sizes that correspond to the twenty numbers are set by the &%textsizes%& header directive. If this directive is not used, the size set by the &%overlaysize%& header directive (whose parameter is different from any of the sizes set by &%textsizes%&) is used. &%[Oltextsize]%& is normally needed only if you want different sizes of overlay text on different staves. .subsection "[Overdraw]" .index "&%[overdraw]%&" .index "drawing facility" "drawing over everything else" When a drawing is associated with a note or bar line by means of the &%[draw]%& directive, the drawing output happens before the note or bar line is output. The order does not matter when everything is black, but if the &%setgray%& drawing operator is being used, the drawing may need to be done last to achieve the correct effect. &%[Overdraw]%& acts just like &%[draw]%& except that it saves up the drawn items, and outputs them only after everything else in the system has been output. Using &%setgray%& and &%[overdraw]%& it is possible to `white out' parts of staves. .subsection "[Overlayfont]" .index "&%[overlayfont]%&" .index "fonts" "default for overlay" The default typeface for overlay text can be set for an individual stave by means of the &%[overlayfont]%& directive, which takes as its argument one of the standard font names. .code [overlayfont italic] .endd The default typeface for overlay text is roman. In any given text string it is always possible to change typeface by using the appropriate escape sequence. .subsection "[Page]" .index "&%[page]%&" .index "page" "skipping a number" Occasionally there is a requirement to skip a page in the middle of a piece &-- to insert commentary in a critical edition, for example. The &%[page]%& directive can be used to set the page number for the page on which it appears, but it is not possible to decrease the page number. You can specify an absolute page number, or an increment of the page number preceded by a plus sign. .code [page 45] [page +1] .endd .subsection "[Printpitch]" SUBSECTprintpitch .index "&%[printpitch]%&" .index "MIDI" "untuned percussion" The &%[midipitch]%& directive can be quite cumbersome to use if a percussion part changes instruments frequently, even though the amount of typing can be reduced by using macros. An alternative facility that forces the visible pitch instead of the playing pitch is available. The &%[printpitch]%& directive takes a note letter and optional octave indication as its argument. It causes all subsequent notes on the stave to be output on the corresponding line or space, whatever pitch is specified for the note in the input. The input pitch can then be used to select different percussion instruments for MIDI output. To do this, you need to know that middle C corresponds to MIDI note 60, C-sharp is 61, B is 59, and so on. Of course, some indication is also required to tell a human player what to do &-- this can take the form of graphic signs above the notes, or different noteheads or stem directions can be used. Here is an invented example, where the first three beats of the bar are played on a snare drum (General MIDI pitch 38), and the last beat on the cowbell (General MIDI pitch 56), indicated by a downward pointing stem. .code [stave 8/1 hclef 0] [printpitch b' stems up] d`d`d` $a-\sd\$a- | .endd .music "music44" 26 4,-20 After the stave number, &`/1`& defines a one-line stave. The effect of &%[printpitch]%& can be cancelled by supplying an asterisk as its argument. When a percussion stave with more than one line is used to separate different instruments, or if notes are placed above and below the line, it is probably easiest to input each instrument's part on a separate stave, and arrange for them to overprint each other. Then the appropriate MIDI sound can be permanently set for each stave. .subsection "[Reset]" SUBSECTreset .index "&%[reset]%&" .index "overprinting" "single bars" Sometimes it is convenient to notate a bar as two different sequences of notes, to be overprinted on the stave. &%[Reset]%& has the effect of resetting the horizontal position to the start of the current bar. Anything that follows it is overprinted on top of whatever has already been specified. If a large number of bars require overprinting, it may be more convenient to set up an entire overprinting stave by specifying a stave spacing of zero. If only a single note is overprinted, the &%[backup]%& directive (&R; &<>&) may be more convenient. &%[Reset]%& should be used with caution, because it can cause unexpected effects if items such as slurs are in use. The distribution of pending underlay or overlay syllables is suspended after &%[reset]%& until the position in the bar has `caught up' to the reset point. .code [stems up] gabc' [reset] [stems down] efga | .endd This example outputs a bar containing the chords &`(eg)`&, &`(fa)`&, &`(gb)`& and &`(ac')`&, but with the stems of each component of the chord drawn in opposite directions. More than one &%[reset]%& may appear if necessary, and only one set of notes need be of the correct length to satisfy the time signature. Invisible rests, notated by the letter Q, can be useful in conjunction with &%[reset]%&. Because PMW processes bars from left to right, &%[reset]%& must not appear between two notes that are connected in some way, for example, between two tied or slurred notes. It must also not appear between any non-note item and the note or bar line that follows, because such items are always `attached' to the following note or bar line. Specifically, &%[reset]%& must not follow any of the following: a clef, a tied note, the first note of a glissando, the start of a hairpin, a mid-bar dotted line, a repeat sign, a caesura, a text item, &%[slur]%&, &%[xslur]%&, &%[line]%&, &%[xline]%&, &%[key]%&, &%[time]%&, &%[comma]%&, &%[tick]%&, &%[move]%&, &%[smove]%&, &%[space]%&, or a rehearsal mark. Also, &%[reset]%& may not occur in the middle of an irregular note group. .subsection "[Resume]" .index "&%[resume]%&" This directive forces a resumption of a suspended stave &-- see &%[suspend]%& for details. .subsection "[Rlevel]" .index "&%[rlevel]%&" .index "rests" "level" .index "level" "of rests" Rests are normally positioned centrally on the stave, as is conventional for single parts. When two staves are being overprinted to combine two different parts, it may be necessary to move rests up or down. A note option (&R; &<>&) or &%[move]%& can be used to do this for individual rests. The &%[rlevel]%& directive specifies an adjustment that applies to all subsequent rests. Any adjustment specified for individual rests is added to the current rest level as set by this directive. The argument for &%[rlevel]%& may be positive or negative; it specifies a number of points by which the rest is moved vertically. A positive number moves upwards, and a negative one moves downwards. .code [rlevel -12] .endd This example causes rests to be 12 points lower than normal, so that a whole bar rest, which normally appears below the fourth line, is now below the bottom line of the stave. .index "ledger lines" "for rests off the stave" Semibreve and minim rests that are moved off the stave are shown with a single ledger line to indicate which they are. Each occurrence of &%[rlevel]%& sets a new level relative to the default position. They are not cumulative. .subsection "[Rmove]" .index "&%[rmove]%&" This directive operates exactly as &%[move]%&, except that the horizontal dimension is scaled to the relative stave size. .subsection "[Rsmove]" .index "&%[rsmove]%&" This directive operates exactly as &%[smove]%&, except the horizontal dimension is scaled to the relative stave size. .subsection "[Rspace]" .index "&%[rspace]%&" This directive operates exactly as &%[space]%&, except that the horizontal dimension is scaled to the relative stave size. .subsection "[Sghere], [sgabove], and [sgnext]" SUBSECTsg .index "&%[sghere]%&" .index "&%[sgnext]%&" .index "&%[sgabove]%&" .index "system gap" .index "spacing" "systems" .index "gaps" "between systems" These directives affect the system gap value, that is, the amount of vertical space that is left between systems. Note that when just one stave is being output (typically for a single part), it is the system gap that determines the spacing. When vertical justification is enabled (&R; &<>&), the system gap is a minimum amount of space. &%[Sghere]%& changes the spacing below the current system (that is, the one in which the current bar is to appear), &%[sgabove]%& changes the spacing above the current system, and &%[sgnext]%& makes the change for all systems that follow the current one, but not for the current system itself. These directives can be placed on any of the staves that comprise the system. For all of them, a single number is required as an argument. It can be preceded by a plus or a minus sign to indicate a relative change from the existing value. If there is more than one occurence of these directives in a system, any that are in stave 0 are processed first, in bar number order, followed by those in the following staves. The last absolute setting (if any) is used, with any relative changes acting cumulatively. Thus, for example, an absolute setting in stave 2, bar 1 will override a relative setting in stave 1, bar 4. The system gap is used only between systems, not at the top or bottom of a page. If &%[sghere]%& is present in the last system on a page, or &%[sgabove]%& in the first system on a page, they have no effect. .subsection "[Skip]" .index "&%[skip]%&" .index "overprinting" "sparse staves" .index "skipping bars" .index "bars" "skipping" When setting vocal or keyboard music it is common to use two overprinting staves for notes with stems in different directions. Sometimes there are long sequences of bars for which the second stave is not required. Such a sequence can be notated using invisible whole bar rests, but if this is done it is still necessary to keep the clef and key signature in step with the other stave so that they are correct at the beginnings of lines, and at least the final time signature change must appear in the correct place so that it is available for checking when notes resume. .index "&%skip%&" An alternative approach is to use the &%[skip]%& stave directive, which should appear at the beginning of a bar, and which causes PMW to leave a given number of bars totally empty before proceeding with the current bar. If there is more than one &%[skip]%& their effect it cumulative. A warning is given if &%[skip]%& is not at the start of a bar because wherever it appears, its effect is the same (that is, empty bars are inserted before the current bar). .code [stave 2 bass 0] gg | [skip 50] aa | [endstave] .endd This example defines a stave in which only bars 1 and 52 are defined. The intermediate bars are treated as being completely empty. If &%[skip]%& is required at the very start of a stave, do not include a clef setting, unless you want a clef as part of the resumed bar after the skip. You can use the &%[assume]%& directive to set a clef without outputting anything. See also the the &%omitempty%& option for &%[stave]%&. .subsection "[Slur]" SUBSECTslurs .index "&%[slur]%&" .index "&%[endslur]%&" .index "&%[es]%&" .index-from I09 "slurs" "full specification" Slurs between adjacent single notes can be input by inserting an underline character after the first note (&R; &<>&). When a slur covers chords, or spans several single notes, it must be coded using the &%[slur]%& and &%[endslur]%& directives; &%[es]%& is an abbreviation for &%[endslur]%&. The options for the &%[slur]%& directive are also applicable to the &%[line]%& directive (&R; &<>&). .subsection "Normal slurs" The &%[slur]%& and &%[endslur]%& directives enclose the notes and/or chords that are to be slurred. .code a [slur] b-a-g-f- [endslur] g .endd This example causes a slur to be drawn over the four beamed quavers. Slurs are drawn above the notes by default. The shape of slurs is correct in many common cases, but when there is a large variation in pitch in the notes being slurred, the slur mark may sometimes need manual adjustment. Various options are provided for the &%[slur]%& directive for this purpose. The options are separated from each other, and from the directive name, by slashes. The following are available: .itable none 0 0 2 76 left 300 left .row &`/a`& "slur above the notes (default)" .row &`/a`&<&'n'&> "slur above, at fixed position above stave" .row &`/ao`& "slur above, at overlay level" .row &`/b`& "slur below the notes" .row &`/b`&<&'n'&> "slur below, at fixed position below stave" .row &`/bu`& "slur below, at underlay level" .row &`/h`& "force horizontal slur" .row &`/ll`&<&'n'&> "move the left end left by <&'n'&> points" .row &`/lr`&<&'n'&> "move the left end right by <&'n'&> points" .row &`/rl`&<&'n'&> "move the right end left by <&'n'&> points" .row &`/rr`&<&'n'&> "move the right end right by <&'n'&> points" .row &`/u`&<&'n'&> "raise the entire slur by <&'n'&> points" .row &`/d`&<&'n'&> "lower the entire slur by <&'n'&> points" .row &`/lu`&<&'n'&> "raise the left end by <&'n'&> points" .row &`/ld`&<&'n'&> "lower the left end by <&'n'&> points" .row &`/ru`&<&'n'&> "raise the right end by <&'n'&> points" .row &`/rd`&<&'n'&> "lower the right end by <&'n'&> points" .row &`/ci`&<&'n'&> "move the centre in by <&'n'&> points" .row &`/co`&<&'n'&> "move the centre out by <&'n'&> points" .endtable .index "MusicXML" "offset positioning (slur)" Another way of specifying horizontal position for slur ends is to use &`/llc`&, &`/lrc`&, &`/rlc`& or &`/rrc`& followed by a number that may have a fractional part. These options specify a base horizontal position for a slur end as a musical offset, in units of crotchets. At the start of a slur this offset is relative to the next note. By default, at the end of a slur it is relative to the previous note (that is, the last enclosed note). However, if the &`/cx`& option is present, an ending offset is taken relative to the following note. These features were added to PMW in order to simplify processing MusicXML input. Here are some examples of the &%[slur]%& directive: .code [slur] [slur/b] [slur/u4] [slur/lu2/co4] [slur/rr6] [slur/a/u4/ld2] [slur/a/lu2/ru4] .endd Repeated movement qualifiers are cumulative. The options &`/u`& and &`/d`& are shorthand for specifying an identical vertical adjustment of both ends of the slur. Specifying &`/ci`& causes the slur to become flatter, and specifying &`/co`& causes it to become more curved. The &`/h`& qualifier requests a horizontal slur, that is, one in which both ends are at the same horizontal level before any explicit adjustments are applied. This is implemented by forcing the right-hand end to be at the same level as the left-hand end. Use of the &`/a`& or &`/b`& options with a fixed position (for example, &`/a8`&) initializes the vertical positions of both end points, as does the use of the &`/ao`& or &`/bu`& options. This results in a horizontal slur by default. The &`/h`& option is not relevant in these cases, and is ignored if given. However, the options for moving the ends can be applied. The &`/ao`& and &`/bu`& options are probably more useful with &%[line]%& than with &%[slur]%&, for cases when several lines at the same level are required on a single system. For example, if lines are being drawn for piano pedal marks (see &%[linegap]%& for an example), using the &`/bu`& option causes them all to be at the same level below a given stave, and to be positioned just below the lowest note on that stave. If there is overlay or underlay text for a stave, the overlay or underlay level is computed by taking into account only those notes that actually have associated text or dashes or extender lines. If not, all the notes on the stave are taken into account. One particular use of the options for moving the ends of slurs horizontally is for notating a slur (or tie) that extends from the last note of a bar up to the bar line and no further, or from the bar line to the first note in a bar. These are needed for some kinds of first and second time bar. A slur that includes only one note provokes an error, because it is an attempt to draw a slur of zero horizontal extent. .code [slur] a [endslur] .endd This example is incorrect. However, if one end of the slur is moved, all is well. .code [slur/rr15] a [endslur] .endd This example is acceptable. The slur starts at the note, and extends for 15 points to the right. Slurs may be nested to any depth. .code a b [slur] c d | [slur/b] e f g [es] a | f e [es] d c | .endd This has a long slur extending from the middle of the first bar to the middle of the third bar, with a shorter slur below three notes in the second bar. In other words, the first &%[slur]%& matches with the last &%[es]%&. A similar example, together with its output, is shown in section &<>&. .subsection "Additional control of slur shapes" .index "slurs" "control of shape" .index "Bézier curves" Slurs are drawn using Bézier curves, which are described in many books on computer graphics. A Bézier curve is defined by two end points and two control points. The curve starts out from its starting point towards the first control point, and ends up at the finishing point coming from the direction of the second control point. The greater the distance of the control points from the end points, the more the curve goes towards the control points before turning back to the end point. It does not, however, pass through the control points. For slurs, the control points are normally positioned symmetrically, giving rise to a symmetric curve. The &`/co`& and &`/ci`& (`curve out' and `curve in') options described above are used to move the control points further from or nearer to the line between the endpoints, respectively. Occasionally, non-symmetric slurs are needed, and so some additional options are provided to enable the positions of the two control points to be independently moved. .itable none 0 0 2 76 left 300 left .row &`/clu`&<&'n'&> "move left control point up <&'n'&> points" .row &`/cld`&<&'n'&> "move left control point down <&'n'&> points" .row &`/cll`&<&'n'&> "move left control point left <&'n'&> points" .row &`/clr`&<&'n'&> "move left control point right <&'n'&> points" .row &`/cru`&<&'n'&> "move right control point up <&'n'&> points" .row &`/crd`&<&'n'&> "move right control point down <&'n'&> points" .row &`/crl`&<&'n'&> "move right control point left <&'n'&> points" .row &`/crr`&<&'n'&> "move right control point right <&'n'&> points" .endtable Thus, for example, &%[slur/a/clu40]%& draws a slur that bulges upwards on the left. Experimentation is usually needed to find out the precise values needed for a given shape. The directions of movement for these options are not the normal ones, except when a slur is horizontal. When a slur's end points are not at the same level, the coordinate system is rotated so that the new `horizontal' is the line joining the end points. In most cases this rotation is small, and so the difference is not great. In all cases, the left control point relates to the left-hand end of the slur, and the right control point relates to the right-hand end, whichever way up the slur is drawn. .subsection "Editorial and dashed slurs" .index "slurs" "dashed" .index "slurs" "editorial" .index "dashed slurs" .index "editorial slurs" Three alternative forms of slur are provided: dashed slurs, dotted slurs, and `editorial' slurs. The latter have a short vertical stroke through their midpoint if they are symmetric in shape, or near the midpoint otherwise. The alternatives are specified by qualifiers on the directive. .display &`/i `& draw an `intermittent' (dashed) slur &`/ip`& draw an `intermittent points' (dotted) slur &`/e `& draw an editorial slur .endd These qualifiers can be freely mixed with the other slur qualifiers. However, if a slur is dashed or dotted, and also marked `editorial', no attempt is made to ensure that the editorial mark coincides with a solid bit of slur. .subsection "Wiggly slurs" .index "slurs" "wiggly" .index "wiggly slurs" The option &`/w`& causes the curvature of the slur to change sides in the middle. For example, a wiggly slur below some notes starts curving downwards, but then changes to curving upwards. The slur may be solid, dashed, dotted, or editorial. If a wiggly slur crosses the end of a system, the portion on the first system curves one way, and the portion on the next system curves the other way. .subsection "Split slurs" .index "split slurs" .index "slurs" "split" Slurs are correctly continued if they span a boundary between two systems. By default, such slurs are not continued over warning key or time signatures at the ends of lines, but PMW can be requested to do this by means of the &%sluroverwarnings%& header directive. The shape and positioning of the end of the first part of a split slur are controlled by the &%endlineslurstyle%& and &%endlinesluradjust%& directives. The sections of a slur that extends over one or more line ends are numbered from 1. An option in a &%[slur]%& directive that consists just of a number means that subsequent options apply only to the given section. Thus, for example, &%[slur/3/lu4/co4]%& moves the left-hand end of the third section upwards, and increases its curvature. Spaces are allowed between options, and these can be used to make a complicated slur more readable by separating the various sections. .code [slur /1/co2 /2/lu4/rd6] .endd The only options that may appear after a section selector are those that move endpoints or control curvature, that is, &`/u`&, &`/d`& and those options beginning with &`/l`&, &`/r`&, and &`/c`&. If a section number is given that is greater than the number of sections, its data is ignored, and when a slur is not split, all section-specific options are ignored, even those for section 1. Movement and curvature options that appear before the first section selector are handled as follows: .ilist All options beginning with &`/c`& apply only when the slur is not split. .next The &`/u`& and &`/d`& options apply to all endpoints of all sections, whether the slur is split or not. .next Options beginning with &`/l`& (the letter) apply to the starting point of the slur, whether or not it is split. To move the starting point only when the slur is split (but not if it is not) these options can be given after &`/1`& (the digit), in which case they are added to any values given before the selector. .next Any vertical movement specified with &`/lu`& or &`/ld`& is also applied to the right-hand end of the first section of a split slur. To affect only the left-hand end, put these options after &`/1`& (the digit). .next Options beginning with &`/r`& apply to the final endpoint of the slur, whether or not it is split. To move the endpoint only when the slur is split (but not if it is not) these options can be given after &`/`&<&'n'&>, where <&'n'&> is the number of the final section, in which case they are added to any values given before the selector. .next Any vertical movement specified with &`/ru`& or &`/rd`& is also applied to the left-hand end of the final section of the slur. To affect only the right-hand end, put these options after &`/`&<&'n'&>. .endlist If &`/ao`& or &`/bu`& is specified for a slur that is split, each section of the slur is positioned at the overlay or underlay level for its own stave, but can of course be moved by suitable options after a section selector. Similarly, &`/a`& and &`/b`&, if given with a dimension, cause all sections of a split slur to be positioned at the given vertical position. If a wiggly slur is split, the first section curves one way, and all subsequent ones curve the other way. .subsection "Overlapping nested slurs" SUBSECTxslur .index "slurs" "overlapping" .index "overlapping slurs" .index "&%[xslur]%&" Usually slurs are properly nested, that is, if a second slur starts within a slur, the inner slur ends before the outer slur. The slur notation in PMW is naturally nested, and automatically ensures that this convention is followed. Any number of slurs may be started at any one time on a stave. The data for a given slur (starting coordinates, etc.) are placed on a stack when the &%[slur]%& directive is obeyed. If another slur is started before the first one is complete, its data goes on top of the stack, temporarily `hiding' any previous data that may be already there. When &%[endslur]%& is obeyed, it terminates the slur whose data is on the top of the stack (and that data is removed). By default, therefore, &%[endslur]%& always terminates the most recently started slur. Very occasionally, it is useful to be able to start a second slur within a slur and have it cross over the outer slur. More commonly, it is sometimes necessary to have one slur ending and the next beginning on the same note &-- something that is not possible using the normal PMW slur notation, because slur starts are notated before notes and slur ends afterwards. .index "crossing slurs" .index "slurs" "crossing" To make this possible, the &%[xslur]%& (`crossing slur') directive causes an innermost nested slur cross over the one immediately outside it. .code [slur] a [xslur] b [es] c [es] .endd This example draws one slur covering the first two notes, and the next slur covering the second and third notes. The &%[xslur]%& directive does not place its data on the top of the stack (unless the stack is empty). Instead, it places it one position down in the stack. Thus, the next &%[endslur]%& terminates the previously started slur, leaving the latest one still incomplete, and in the example above, the first &%[es]%& is thereby made to refer to the &%[slur]%& directive and the second to the &%[xslur]%& instead of the other way round. This facility is available for the innermost nested slur only. .subsection "Tagged slurs" SUBSECTtaggedslurs .index "tagged slurs" .index "slurs" "tagged" In very complicated music, even the &%[xslur]%& facility is not powerful enough to describe what is wanted, and it is necessary to use `tagged' slurs. The qualifier &`/=`& can be used within a &%[slur]%& directive to `tag' a slur. It must be followed by a single ASCII alphanumeric character, which acts as an identifier. It is recommended that capital letters normally be used, as they are visually distinctive. A tagged slur is placed on top of the stack as normal. The &%[endslur]%& directive may also contain a tag, using the same syntax. When a tagged &%[endslur]%& directive is obeyed, the stack of unterminated slurs is searched for a slur with a matching tag, and if one is found, that slur is terminated. If no matching slur is found, an error message is given and the slur on the top of the stack is terminated. When &%[endslur]%& does not contain a tag, the topmost slur is terminated, whether or not it is tagged. Here is an example of the use of tagged slurs: .code [slur/=A] [slur/b/=Z] ggg [slur/=B] a [es/=A] a [es/=Z] a [es] | .endd .music "music43" 32 4,-20 .index-to I09 .subsection "[Slurgap]" SUBSECTslurgap .index "&%[slurgap]%&" .index "slurs" "gaps in" .index "gaps" "in slurs" The &%[slurgap]%& directive has the same options as &%[linegap]%&, and can be used to leave gaps in slurs where they would otherwise cross over other items. For example, to avoid drawing a slur through a key signature: .code r [slur/co3/lu2] G`+ [slurgap/w30/r10] | [key e$] c G' [es] | .endd .music "music52" 34 4,-14 Specifying a gap associated with a text string or a drawing function provides a way of adding arbitrary annotation to a slur &-- a width of zero can be given if no actual gap in the slur is required. When an associated drawing function is obeyed, the origin is halfway along the straight line joining the edges of the gap, and the &%linegapx%& and &%linegapy%& variables are set as for &%[linegap]%&. Bracketed slurs can be done using a drawing function, but the text option is probably easier. .code [slur slurgap/h0/w0/"( " slurgap/h1/w0/" )"] .endd In this example, the &`/h0`& and &`/h1`& options specify the start and end of the slur, respectively, and &`/w0`& specifies a gap of zero width. String options can be used to alter the size or position of the text as required. A gap specified for a dashed slur is liable to result in partial dashes being drawn, unless its length is carefully adjusted. .subsection "[Smove]" .index "&%[smove]%&" This directive is a shorthand for combining a &%[move]%& and a &%[space]%& directive. The following two lines of input are equivalent: .code [move 6] a [space 6] [smove 6] a .endd This is common usage when adjusting the position of notes on overprinting staves. &%[Smove]%& can take two arguments, like &%[move%&], with the second one specifying vertical movement for the move. The horizontal value is not scaled by the stave size &-- use &%[rsmove]%& if you want this to be scaled. .subsection "[Soprabass]" .index "&%[soprabass]%&" This specifies a bass clef with a little `8' above it (&R; &<>&). .subsection "[Soprano]" .index "&%[soprano]%&" This specifies a C clef with its centre on the bottom stave line (&R; &<>&). .subsection "[Space]" .index "&%[space]%&" .index "space" "inserting in staves" The &%[space]%& directive, which has a single number as an argument, causes space to be inserted before the next note or rest in the bar, or before the bar line if there are no more notes or rests. The remainder of the bar, including appropriate items on other staves, is adjusted accordingly. The number can be positive or negative; a negative value removes space from the bar. The space is not scaled by the relative stave size. If you want to insert scaled space, use &%[rspace]%&. &*Note*&: unlike &%[move]%&, &%[space]%& always affects the position of the next note, rest, or bar line, even if some other item intervenes. Other items are positioned relative to the note, rest, or bar line that follows them. Therefore, adjusting the position of a note, rest, or bar line with &%[space]%& affects these items too. The following two examples have exactly the same effect: .code [comma] [space 6] A [space 6] [comma] A .endd The &%[move]%& directive can be used in conjunction with &%[space]%& to insert space between a non-note item and the note to which it is related. .code [space 6][move -6][comma] A .endd In this example, &%[space]%& moves both the note and its attached comma (and everything that follows) to the right; &%[move]%& then moves the comma back to where it would have been without the inserted space. &%[Space]%& is obeyed when PMW is figuring out where to position the notes in the bar, whereas &%[move]%& is obeyed when the bar is output. The handling of multiple occurences of &%[space]%& at the same point in the bar depends on their positioning. Multiple occurrences on the same stave are cumulative, so the following are equivalent: .code [space 2] [tick] [space 2] A [space 4] [tick] A [tick] [space 6 space -2] A .endd After any accumulation, PMW checks the extra space value for this position, as set by any lower-numbered stave(s), with default zero. If the new value is non-negative, it is retained if it is greater than the current setting; otherwise it is retained if it is less. This normally gives the right effect if extra space is accidentally specified in two different staves. See also &%[ensure]%&, &%[move]%&, &%[smove]%&, &%[rspace]%&, &%[rmove]%&, and &%[rsmove]%&. .subsection "[Ssabove], [sshere], and [ssnext]" SUBSECTss .index "&%[ssabove]%&" .index "&%[sshere]%&" .index "&%[ssnext]%&" .index "staves" "spacing" .index "spacing" "staves" These directives affect vertical stave spacing in the current movement only. See section &<>& for how to set initial values for the movement that also apply by default to subsequent movements. &%[Ssabove]%& differs from the other two in that it sets a minimum spacing &'above'& staves; the other two adjust the actual settings for spacing below staves. For example, if the spacing for stave 2 has been set to 50, an occurrence of &%[ssabove 40]%& in stave 3 would have no effect, but &%[ssabove 60]%& would increase the distance between staves 2 and 3. The difference between the other two directives is that &%[sshere]%& changes the spacing for the current system only (that is, the one in which the current bar appears), whereas &%[ssnext]%& makes the change for all systems that follow the current one. If any of these directives is followed by a single number, the setting applies to the current stave only, except when the current stave is number zero, in which case the value applies to all staves. For example, a bar with very low notes might require notating thus: .code [treble 1] [sshere 60] f` a` c e | .endd This example has the effect of setting the stave spacing to 60 points, for the current stave in the current system only. If the number is preceded by a plus or minus sign, it is interpreted as a change to the existing spacing. .code [sshere +10] .endd This example adds 10 points to the stave spacing for the current stave in the current system. The argument for these directives can also take the form of two numbers separated by a slash, in which case the first is a stave number and the second is a spacing (which may be preceded by a plus or minus sign). More than one pair may be present. This makes it possible to encode all stave spacing changes in the same stave. .code [ssnext 2/+8 3/-10 4/44] .endd If zero is given as a stave number, the spacing setting is applied to all the staves. If there is more than one occurence of any of these directives in a system, those in stave 1 are processed first, in bar number order, followed by those in the following staves. For any given stave, the last absolute setting (if any) is used, with any relative changes acting cumulatively. Thus, for example, an absolute setting in stave 2, bar 1 will override a relative setting in stave 1, bar 4. When &%[ssnext]%& is used with a plus or minus sign, without a preceding absolute setting, the value is relative to the original spacing for the stave, ignoring any changes that might have been made with &%[sshere]%&. .subsection "[Stave]" SUBSECTstave .index "&%[stave]%&" The first thing in each stave's data must be the &%[stave]%& directive. In its most basic form, the name is followed by just a stave number. This may be followed by a slash and a number in the range 0&--6, specifying the number of stave lines (default 5). .index "staves" "number of lines" .index "alternatives to 5-line staves" .index "invisible items" "stave" .index "staves" "invisible" A stave with no lines is an invisible stave. Two-line and three-line staves have double the normal stave line spacing, and are centred about the middle line of the normal five-line position. They are designed for multiple percussion parts. A three-line stave at the normal spacing can be obtained by overprinting a one-line and a two-line stave. .index "guitar tablature" Four-line and six-line staves are five-line staves with the top line missing or an additional line added above the top, respectively. When used for guitar tablature they should normally be enlarged by means of the &%stavesize%& header directive. The &%contrib%& directory in the PMW distribution contains an example of guitar tablature. The number of stave lines has no implications for key signatures or clefs. .index "ledger lines" "with non-standard staves" For staves with fewer than five lines, ledger lines are not shown for notes that are off the stave. On one-line staves, whole bar rests are output under the single line, and on three-line staves they are under the top line. In all other respects the behaviour of PMW is unchanged by the number of stave lines. Following the stave number and optional number of lines, the word &%omitempty%& may appear. This causes nothing whatsoever to be output for completely empty bars. See section &<>& below for details. Further arguments may be given to specify text or drawings to be output at the lefthand side of the stave. Most commonly, &%[stave]%& is used just with text, and this form is described first. .subsection "Text at stave starts" SUBSECTstavetext .index "test" "at stave start" The text-only form of &%[stave]%& has the following format, where the stave number &'n'& can be followed the number of stave lines and/or &`omitempty`&, as just described: .display &`[stave `&<&'n'&>&` "`&<&'string1'&>&`" "`&<&'string2'&>&`" ...]`& .endd .index "part names" .index "staves" "names for" There may be any number of string arguments. By default, the first one is used in the first system of the movement, and the second one for subsequent systems (see the next section for multiple strings for the same system). These strings are normally used for the name of the instrument or voice for which the stave is intended. .code [stave 1 "Soprano" "S"] .endd This example has `Soprano' at the start of the first system, and `S' on all the others. If there is only one string, only the first system has text at the start. The third and subsequent strings in &%[stave]%& directives are not used automatically, but can be selected at any point in the .index "&%[name]%&" piece by means of the &%[name]%& stave directive (&R; &<>&), which also provides an alternative way of specifying text and drawings for the beginnings of staves. .index "| (vertical bar) in strings" If a vertical bar appears in one of the strings, it specifies the start of a new line of text. .code [stave 5 "Trumpet|in G"] .endd This example outputs two lines at the start of the stave 5 in the first system. The amount of space used for start-of-stave text depends on the longest text line for any stave. By default, shorter lines are left-aligned in this space, but the options &`/c`& and &`/e`& can be used to centre or right-justify the lines. If both &`/c`& and &`/e`& are given, and the text consists of multiple lines (delimited with &`|`& characters), the longest line is right justified, and all the other lines for the stave have their centres aligned with the centre of the longest. If there is only one line, it is right justified. .index "text" "halfway between staves" You can position text vertically halfway between two successive staves by appending &`/m`& (for `middle') to the text on the upper of the two staves. .code [stave 1 "Piano"/m] .endd If two overprinting staves are being used for a keyboard part, the text may appear with either of them, because if the space after the current stave is set to zero, the space for the next stave is used when positioning such text, unless such a stave is suspended, in which case &`/m`& is ignored. It is also ignored if the following stave is suspended. As an example of where this is relevant, consider this input: .code [stave 1 "Horns"/m "Hn"/m] ... [endstave] [stave 2] ... [endstave] .endd When both horn parts are being output, the text is shown halfway between them, but if the second stave is suspended, the text aligns with the first stave. You can specify a size for text at the start of a stave by following the string with &`/s`& or &`/S`& and a number. For &`/s`&, the number selects a text size from the list given to the &%textsizes%& directive, whereas &`/S`& selects one of the fixed sizes (&R; &<>&). .code [stave 1 "Flute"/s2] .endd The size is not affected by any relative magnification that may be applied to the stave. If no size is specified, a 10-point font is used. .index "text" "rotated stave names" .index "staves" "rotated names" You can also specify that the text be rotated through 90° so that it runs vertically up the page and its midpoint is approximately at the middle of the stave. This is specified with the &`/v`& option; &`/c`& and &`/e`& are ignored. .code [stave 3 "Chorus"/v] .endd Only a single line of text is supported when output is vertical, and hence the vertical bar character has no special meaning in this case. When &`/v`& is combined with &`/m`&, the text is both rotated and moved down so that its midpoint is halfway between the staves. Finally, you can use &`/u`&, &`/d`&, &`/l`&, or &`/r`& to move text up, down, left, or right from its default position. When there is more than one line, these qualifiers apply to all of them. For vertical text, `up' still means up the page. If more than one string is given for any stave, the various qualifiers can be used on any of them, and apply only to those strings for which they appear. .subsection "Multiple strings at stave starts" .index "staves" "names, multiple strings" Sometimes it is useful to be able to specify two or more strings, possibly at different sizes or with different options, to be output together at the start of the same stave. This is notated by ending a string with a slash followed immediately by the next string, with no intervening space. Here is an example where this feature is useful: .music "music57" 74 4,-14 The start of the input for stave 1 in this example is: .code [stave 1 "1"/e/"Horns in F"/m/s2 treble 1] .endd Both strings are output at the start of the stave, with &`/m`& being used to move the second one down to the halfway point before the second stave, and &`/s`& being used to select a different size. If &`/m`& had not been used, the two strings would have overprinted each other. This facility is not confined to the first string in a &%[stave]%& directive; it can be used with any string. .subsection "Drawings at stave starts" .index "drawing facility" "at stave starts" .index "staves" "drawing at start" A drawing function (see chapter &<>&) can be specified at the start of a stave, instead of, or as well as, a text string. The amount of space to the left of the stave is controlled by the text string, so a string consisting of blanks can be used to ensure that an appropriate amount of space is left. .index "guitar tablature" The &%contrib%& directory in the PMW distribution contains an example where a drawing function associated with a stave is used to generate a special kind of `clef' for guitar tablature. The full syntax of &%[stave]%& is as follows: .display &`[stave `&<&'n'&>&` `&<&'string'&>&` draw `&<&'arguments'&>&` `&<&'drawing name'&>&` ...]`& .endd This feature is also available for the &%[name]%& directive. If both a string and a call to a drawing function are present, the string must come first. .code [stave 3 " " draw thing] .endd As in all drawings, the arguments (which may be numbers or strings) are optional. The origin of the coordinate system is at the left-hand margin of the page and at the level of the bottom line of the stave. The drawing variable &%stavestart%& contains the x-coordinate of the start of the stave itself. Just as there may be more than one string specified, for use on different systems, there may also be more than one drawing function. They are listed in order, following the corresponding strings, if present. .code [stave 23 "Trumpet" draw 2.5 thing2 "Tr." draw "arg" thing3] .endd There is an ambiguity if an item that consists only of a string (with no associated drawing) is followed by an item consisting only of a drawing. In this case, an empty string must be specified for the second item, to prevent the drawing being incorrectly associated with the first item. There is also a possibility of ambiguity if the first item on the stave itself is a call to a drawing function, and there is no other intervening directive. The drawing must be put into a new set of square brackets to prevent this. .code [stave 35 "Flute"] [draw thing3] .endd In this example the &%stave%& directive is terminated by the closing square bracket, so the &%draw%& directive is taken as part of the stave data and is associated with the following note in the usual way. .subsection "Omitting empty bars" SUBSECTomitempty .index "&%omitempty%& stave option" .index "omitting empty staves" .index "omitting empty bars" .index "empty bars, omitting" .index "empty staves, omitting" .index "staves" "omitting if empty" .index "bars" "omitting if empty" When a stave is about to be suspended (&R; &<>&, &<>&), it is sometimes desirable not to output stave lines after the final bar that contains notes, and similarly, when a stave is resumed, empty bars preceding the resuming bar may not be required. If the &%omitempty%& option is specified for a &%[stave]%& directive, &'nothing at all'& is output for bars for which no data is supplied. Such bars can be set up by means of the &%[skip]%& stave directive, or by omitting them at the end of a stave's data. Note that a bar that is specified as a rest bar, visible or invisible, counts as a bar for which there &'is'& data, and a clef specification also counts as data. Therefore, if bars are to be omitted at the start of a stave, the input should be as in this example: .code [stave 3 omitempty skip 20] .endd A clef specification (possibly made invisible by means of &%[assume]%&) can then follow. It is not necessary for the suspend mechanism to be used with this feature, though if is not, vertical white space is left for the stave, even if nothing is output in that space. When a non-empty bar follows an empty bar in a stave for which &%omitempty%& has been set, and it is not the first bar in a system, a bar line is needed at its start. By default, a conventional solid bar line is output, but it is possible to specify other bar line styles, a double bar line, or an invisible bar line, by using the normal PMW notations for these things at the end of the preceding empty bar. .code [stave 1 omitempty treble 1] ggg |? [skip 3] |? aaa | .endd .music "music51" 32 8,-16 This example specifies no bar line at the end of the bar before the skip, nor at the start of the final bar. Without the question marks, there would be bar lines in both these places. Note that because of the way &%[skip]%& works, this example contains 4 empty bars, not 3. The gap in this case is quite small, because, in the absence of other staves, PMW has packed them up into a single (invisible) `rest' bar. .index "isolated bars" One or more &%omitempty%& staves can be used for positioning isolated bars on a page, using empty bars between them to cause horizontal white spaces to appear. The size of the white spaces can be controlled by the use of &%[space]%& directives on stave 0 &-- they cannot be used in the empty bars, because that causes PMW to treat them as not empty. .subsection "[Stavelines]" This is an obsolete directive that was used to set the number of stave lines. Because this is a characteristic of the entire stave, this parameter is now set as part of the &%[stave]%& directive. The old directive still works, with a warning, but may be removed in a future release. .subsection "[Stemlength]" .index "&%[stemlength]%&" .index "stems" "length" .index "length" "of stems" The &%[stemlength]%& directive is used to set a default value for the stem length adjustment on a stave. It applies to all stemmed notes, both single and beamed. .code [stemlength -2] .endd This example specifies that subsequent notes should have stems that are 2 points shorter than normal. A value of zero resets to the initial state. Any stem length adjustments that are given on individual notes are added to the overall default. The name &%[sl]%& is a synonym for &%[stemlength]%&. The default stem length can be changed as often as necessary. PMW can also be instructed to automatically shorten the stems of notes whose stems point the `wrong' way. See the &%shortenstems%& header directive for details. .subsection "[Stems]" .index "&%[stems]%&" .index "stems" "direction" This directive controls the vertical direction of stems and can also adjust their horizontal positioning. Normally PMW chooses for itself in which direction to draw note stems. Details of the rules it uses are given in section &<>&. Some variation is possible by means of the &%stemswap%& header directive (&R; &<>&). You can also force note stems to point upwards or downwards, wherever the noteheads are on the stave. For individual notes there are options to do this; the &%[stems]%& directive sets a default for any notes that are not explicitly marked. When used for this purpose it must be followed by one of the words `up' (or `above'), `down' (or `below'), or `auto' &-- the last causing a reversion to the default state. .index "stems" "central with notehead" The &%[stems]%& directive may also be followed by `central'. This causes note stems to be positioned horizontally aligned with the centres of noteheads instead of at the edges. This feature is provided for some experimental music notation; it can be turned off by the word `beside'. Currently this works only with full-sized notes, not cue or grace notes. .subsection "[Suspend]" SUBSECTsuspend .index "&%[suspend]%&" .index "suspending staves" When a part is silent for a long time, it is often desirable in full scores to suppress its stave from the relevant systems. The term `suspended' is used in PMW to describe a stave that is not currently being included. The &%[suspend]%& directive tells PMW that it may suspend the current stave from the start of the next system, provided that there are no notes or text items on this stave in that system. The suspension ends automatically when a system is encountered in which there are notes or text on this stave. .code [suspend] [108] R! | .endd This example specifies 108 bars rest, which can be suspended where possible. If the &%[suspend]%& directive appears in the first rest bar, as in this example, at least one rest bar is output before the stave is suspended. If no rest bar is wanted before the suspension, &%[suspend]%& should be placed in the preceding bar. .code abcd [suspend] | [108] R! | .endd .index "&%[resume]%&" Suspension can be ended early by the &%[resume]%& directive. If at least one rest bar is required when the stave is resumed, an explicit &%[resume]%& must appear in the last rest bar, because by default the stave may resume with a non-rest bar at the beginning of a system. .code [suspend] [107] R! | [resume] R! | .endd When a single part is being output, &%[suspend]%& has no effect, because a sequence of rest bars is automatically packed up into a single bar with a multiple rest sign. Because &%[suspend]%& stave directive takes effect from the start of the following system of staves, it cannot be used to cause suspension right at the start of a piece. The &%suspend%& header directive is provided for this purpose. .subsection "[Tenor]" .index "&%[tenor]%&" This specifies a C clef with its centre on the fourth stave line (&R; &<>&). .subsection "[Text]" .index "&%[text]%&" .index "text" "default type" The default type for text within a stave (which implies a default vertical level and size) can be set for an individual stave by means of the &%[text]%& directive. It takes a word as its argument. .itable none 0 0 2 120 left 300 left .row "&`[text above]`&" "output above the stave" .row "&`[text above`& <&'n'&>&`]`&" "ditto, at a given level" .row "&`[text below]`&" "output below the stave" .row "&`[text below`& <&'n'&>&`]`&" "ditto, at a given level" .row "&`[text underlay]`&" "default is underlay" .row "&`[text overlay]`&" "default is overlay" .row "&`[text fb]`&" "default is figured bass" .endtable To override a default with an absolute position (for example &`[text above 15]`&), the text options &`/a`& or &`/b`& without a following number can be used (as well as &`/ul`&, &`/fb`&, &`/fbu`&, or &`/m`&). Similarly, the appearance of &%[text above]%& or &%[text below]%& without a number resets to the initial state, where the default vertical position depends on the next note. Ordinary text that is positioned above or below the stave is by default output at settable size 1 (specified by the &%textsizes%& header directive), unless the &%[textsize]%& directive has specified otherwise. Underlay, overlay, and figured bass text is output by default at the sizes specified by the &%underlaysize%&, &%overlaysize%&, and &%fbsize%& header directives. The default text type and size can always be overridden by explicit qualifiers following the string. For example, if &%[text underlay]%& has been specified, an italic dynamic mark above the stave is coded like this: .code "\it\ff"/a .endd The default text type can be changed many times within one stave. .subsection "[Textfont]" .index "&%[textfont]%&" .index "fonts" "default for text" .index "text" "default font" The default typeface for text other than underlay, overlay, or figured bass can be set for an individual stave by means of the &%[textfont]%& directive, which takes as its argument one of the standard font names. .code [textfont extra 3] .endd This example supposes that the third extra font has been defined for some special use in the stave's text. The default font for this kind of text is italic. The defaults for underlay, overlay, and figured bass text are set by &%[underlayfont]%&, &%[overlayfont]%&, and &%[fbfont]%&, respectively. In any given text string it is always possible to change font by using the appropriate escape sequence. .subsection "[Textsize]" .index "&%[textsize]%&" This directive must be followed by a number in the range 1 to 20. It selects the default size to be used for text that is neither underlay nor overlay nor figured bass, which have their own size setting directives. The actual font sizes that correspond to the twenty numbers are set by the &%textsizes%& header directive. If this directive is not used, the default size is size 1. Individual text strings can have their sizes set by means of the &`/s`& option, or by &`/S`&, which selects from a set of fixed sizes. .subsection "[Tick]" .index "&%[tick]%&" .index "pause" "tick" .pi sdop "subscript_down=""20""" The &%[tick]%& directive causes PMW to insert a tick &-[&{(zz€)}&]-& pause mark above the current stave. See also &%[comma]%&. .pi sdop "subscript_down=""33""" .subsection "[Ties]" .index "&%[ties]%&" .index "ties" "direction" Normally PMW draws tie marks on the opposite side of the noteheads from the stem. However, it is possible to force ties to be above or below the noteheads. For individual ties there is an option qualifier to do this. In addition, the &%[ties]%& directive is available for forcing the tie direction for all subsequent ties that are not explicitly marked. The argument must be one of the words `above', `up', `below', `down', or 'auto' &-- the last causing a reversion to the default state. .index "chords" "tied" The effect of this directove on chords is to force &'all'& the tie marks for a chord to the given side of the noteheads by default. However, when overriding the default for an individual chord, you can specify that some are above and some below the noteheads (&R; &<>&). .subsection "[Time]" .index "&%[time]%&" .index "time signatures" "changing" The time signature for a stave can be changed at the start of a bar by the &%[time]%& directive. If the change of time falls at the start of a system, a cautionary time signature is output at the end of the previous line unless the word `nowarn' is included in the directive. .code [time 6/8 nowarn] .endd There is also a header directive, &%notimewarn%&, for suppressing all cautionary time signatures. .index "time signatures" "different on different staves" PMW does not work sensibly by default if different time signatures are used on different staves, unless they represent the same length of musical notes. For example, if one stave is in 3/4 time and another is in 6/8 all will be well, but PMW cannot cope with 2/4 against 6/8 without additional input (&R; &<>&). When a bar starts with a new time signature and a repeat mark, the order in which these appear depends on their order in the input. .code [time 4/4] (: (: [time 4/4] .endd The first example causes the time signature to be first, followed by the repeat mark, whereas the second example causes the repeat mark to be amalgamated with the previous bar line, with the time signature following. If, at the same point in the music, these items appear in different orders on different staves, the repeat sign is put first on all staves. Sometimes two time signatures are needed at the start of a piece (for example, if there are alternate bars in different times). The simplest way to do this is to make use of the &%printtime%& header directive. .subsection "Staves with differing time signatures" SUBSECTstadiffsig .index "time signatures" "differing" .index "differing time signatures" PMW requires no special action to handle staves with different time signatures if the actual barlengths (measured in notes) are the same. For example 3/4 and 6/8 bars both contain six quavers, and so are compatible. PMW can also handle time signatures that are not compatible, for example, 6/8 in one stave and 2/4 in another, but because PMW handles just one stave at a time when it is reading the music in, it is necessary to tell it what is going on by giving a second time signature in the &%[time]%& directive, preceded by &`->`&. .code time 6/8 [stave 1 treble 1] a. b-a-g- | [endstave] [stave 2 bass 0 time 2/4 -> 6/8] c-d-; e-f- | [endstave] .endd The first signature is the one that is output, and this corresponds to the notes in the bar; the second signature is the one from the other stave. The notes are stretched or compressed (in position on the stave and in time when generating a MIDI file) to make the bar lengths match. .subsection "[Topmargin]" .index "&%[topmargin]%&" .index "page" "top margin" .index "margin" "top" This directive provides a way of changing the value given by the &%topmargin%& header directive for a single page only. If there is more than one occurrence on the same page, the last value is used. To leave 30 points at the top of one particular page, for example, use &%[topmargin 30]%& in any bar on that page. .subsection "[Transpose]" .index "&%[transpose]%&" .index "transposition" "for one stave" The &%[transpose]%& directive specifies that subsequent notes on the current stave are to be transposed by a number of semitones. A positive number transposes upwards; a negative number transposes downwards. If transposition is also specified at an outer level (either in the header, or by using the &%-t%& command line option), the transposition specified here adds to, rather than replaces it, as does any subsequent appearance of &%[transpose%&]. Octave transposition, as specified in a clef-setting directive or by the &%[octave]%& directive, is also added to any general transposition. .index "key signatures" "after transposition" .index "transposition" "control of keys" PMW does not transpose the current key signature that is already set for the current stave when it encounters the &%[transpose]%& directive, but it does transpose any subsequently encountered key signatures, except for the non-transposing pseudo-key N. To ensure a transposed key signature for a stave which has its own transposition specified, you should include the key signature after &%[transpose]%&, even if it is the same key signature that is specified in a header directive for the whole piece. .code key G [stave 1] ... [endstave] [stave 2 transpose 1 key G] ... [endstave] .endd Note that it is the &'old'& key signature that is specified. In this example it is transposed to become A-flat. Further details about transposition of notes are given in section &<>&, and details of the transposition of chord names are given in section &<>&. .subsection "[Transposedacc]" .index "&%[transposedacc]%&" .index "accidentals" "forcing transposed" This directive must be followed by one of the words `force' or `noforce'. It changes the option for forcing an accidental on a transposed note when there was an accidental on the original, even if the accidental is not strictly needed (&R; &<>&). .subsection "[Treble]" .index "&%[treble]%&" This specifies a treble clef (&R; &<>&). .subsection "[Trebledescant]" .index "&%[trebledescant]%&" This specifies a treble clef with a little `8' above it (&R; &<>&). .subsection "[Trebletenor]" .index "&%[trebletenor]%&" This specifies a treble clef with a little `8' below it (&R; &<>&). .subsection "[TrebletenorB]" .index "&%[trebletenorB]%&" This specifies a clef that is exactly like the trebletenor clef, except that the little `8' is enclosed in parentheses. .subsection "[Tremolo]" .index "&%[tremolo]%&" .index "tremolo" "between notes" .index "notes" "tremolo between" Tremolo marks that appear as beams between notes that are not normally beamed, or as disconnected beams between notes are notated by &%[tremolo]%& between the two notes. There are two optional qualifiers: &`/x`& followed by a number specifies the number of beams to draw, and &`/j`& followed by a number specifies the number of beams that are to be joined to the note stems. The default is to draw two beams, neither of which is joined to the stems. .code g [tremolo] b .endd This example outputs two crotchets with two disconnected beams between them. .code G [tremolo/x3/j3] B .endd This example outputs two minims, joined by three beams. The &`/j`& qualifier should not be used with breves or semibreves. For the most commonly encountered tremolos, it is necessary to use a note of the `wrong' length. For example, a tremolo that lasts for the length of a crotchet is shown as two crotchets, at the positions two quavers would occupy, with tremolo bars between them. This effect can be achieved by using the masquerading feature described in section &<>&. Here are some examples: .code d-\m\ [tremolo] g-\m\; d-\m\ [tremolo/j1/x3] g-\m\; d\M\ [tremolo] g\M\ .endd .music "music62" 30 6,-16 The &%[tremolo]%& directive must appear between two notes in a bar. It is ignored if it appears at the beginning or end of a bar, or if it is preceded or followed by a rest. It assumes that the notes are of the same kind, and have their stems in the same direction. Notes with flags should not be used, though tremolos can be added underneath the normal beams of a beamed group if necessary. .subsection "[Tripletize]" .index "&%[tripletize]%&" This directive enables and disables `tripletizing', which causes certain groups of regularly notated notes to be positioned (and played if MIDI is generated) as triplets. Details are given in section &<>&. .subsection "[Triplets]" SUBSECTtriplets .index "irregular note groups" "suppressing the number" .index "irregular note groups" "forcing position" .index "irregular note groups" "forcing brackets" .index "&%[triplets]%&" This directive is used to control triplet and other irregular note group marks. Despite its name, it applies to all irregular note groups. It must be followed by one or more of the words `on', `off', `above', `below', `bracket', `nobracket, or `auto'. `On' and `off' apply to the `3', with or without a bracket, above or below a group of triplets (or equivalent for other groups). The default is `on'. When `off' is specified, nothing is output. Note that the qualifier &`/x`& can be used to suppress the number for an individual triplet, or to enable it, if it has been previously disabled. The other words set default options for irregular note groups, and they are independent of each other. .code [triplets above] .endd This example causes all the irregular note marks to be placed above the notes, but (unlike the &`/a`& option on an individual group) it does not specify whether a horizontal bracket should be drawn. The words `above' and `below' can be followed by a dimension, to set a fixed vertical position for all subsequent irregular note group marks. If the dimension is preceded by &`+`& or &`-`&, this does not set a fixed position, but provides a default vertical adjustment for subsequent irregular groups. .code [triplets above +4] .endd This example causes subsequent marks to be four points higher than they would otherwise appear. Brackets can be forced or inhibited by means of `bracket' and `nobracket'. If neither has been specified, a bracket is drawn unless the note group is beamed. The `auto' option resets both the position and the bracketing options to their initial states, where the marks are placed above or below the notes, depending on their pitch, and the bracket is omitted if the notes are beamed. Options given on an individual note group override the defaults set by the &%[triplets]%& directive. Note that the use of &`/a`& or &`/b`& forces a bracket to be drawn, unless followed by &`/n`&. .subsection "[Ulevel] and [ulhere]" SUBSECTulevelhere .index "&%[ulevel]%&" .index "&%[ulhere]%&" .index "underlay" "level" .index "level" "of underlay" For each stave, PMW computes a default level for underlay text. The standard position for this level (the base line level for the text) is 11 points below the bottom line of the stave, but a lower level may be chosen if there are low notes on the stave. There are two different ways of changing this level. &%[Ulhere]%& specifies a temporary change for the current line, and &%[ulevel]%& sets an absolute level to be used until further notice. &%[Ulhere]%& takes a positive or negative number of points as an argument. This is added to the automatically computed level for the line in which the current bar appears. .code [ulhere -2] .endd This example has the effect of lowering the current underlay line by two points. If a subsequent occurrence of &%[ulhere]%& appears in the same line for the same stave, it is accepted if its argument is negative and specifies a lower level than the previous one, or if its argument is positive and all previous ones were positive and it is greater than any of them. &%[Ulhere]%& has no effect if an absolute underlay level is being forced by means of the &%[ulevel]%& directive, which sets a level relative to the bottom of the stave. .code [ulevel -15] .endd This example sets a level fifteen points the bottom of the stave. &%[Ulevel]%& takes effect for the text under all the notes that follow it, even if the text was input earlier as part of a multi-syllable input string. &%[Ulevel]%& may appear as often as necessary; its effect lasts until the end of the movement or its next appearance. However, if &%[ulevel]%& appears with an asterisk for an argument, the underlay level reverts to the value automatically selected by PMW, and any subsequent &%[ulhere]%& directives are honoured. .subsection "[Ultextsize]" .index "&%[ultextsize]%&" .index "underlay" "text size" This directive must be followed by a number in the range 1 to 20. It selects the default size to be used for underlay text on the current stave. The actual font sizes that correspond to the twenty numbers are set by the &%textsizes%& header directive. If this directive is not used, the size set by the &%underlaysize%& header directive (which is different from any of the sizes set by &%textsizes%&) is used. &%[Ultextsize]%& is normally needed only if you want different sizes of underlay text on different staves. .subsection "[Unbreakbarline]" .index "&%[unbreakbarline]%&" .index "bar lines" "breaking" An occurrence of this directive causes the bar line at the end of the current bar to be extended downwards onto the stave below. This could be used, for example, to output a double barline right through a system at the end of a verse or other important point in a choral piece, where the barlines are normally broken after each stave. See also &%[breakbarline]%&. .subsection "[Underlayfont]" .index "&%[underlayfont]%&" .index "fonts" "default for underlay" .index "underlay" "default font" The default typeface for underlay text can be set for an individual stave by means of the &%[underlayfont]%& directive. This directive takes as its argument one of the standard font names. .code [underlayfont extra 3] .endd This example supposes that the third extra font has been defined for use in underlay text. The default typeface for underlay text is roman. In any given text string it is always possible to change typeface by using the appropriate escape sequence. .subsection "[Xline]" See &%[line]%& (&R; &<>&) and also section &<>&. .subsection "[Xslur]" See section &<>&. .index-to I07 .index-to I08 . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .chapter "Changes for release 5.00" CHAP500 There was a major revision of the code for release 5.00. Many previously existing input files should continue to work as before, but there have been some changes. A number of deprecated obsolete features, some of which have not been documented for a long time, have been removed. There are also some extensions and simplifications. .ilist There is no longer the need to use &%barcount%& for movements longer than 500 bars, and some other limits have been removed or relaxed. .next Extra fonts are now accessed in strings by, for example, \xx2\ rather than \x2\, which is ambiguous; it could be a hexadecimal character number. The old notation is, for the moment, still interpreted as a font change, but gives a warning. .next The synonym &%-includefont%& for &%-includePMWfont%& is removed. .next The synonym &%origin%& for &%originx%& in draw functions is removed. .next Earlier versions of PMW used a more restricted set of options starting with &`/s`& to control split slurs. These are no longer supported. .next All the deprecated directives whose names began with `old' have been removed. .next An obsolete feature of irregular note groups, allowing a hyphen after the count of regular notes (e.g. &`{3-/11`&) is removed. .next Support for including literal PostScript has not been retained. It could be put back should anyone actually need it. .next A list of numbers that follows some directives must now be all on one line. Such lists can no longer be automatically continued onto the next line by terminating the first line with a comma. Instead, use the &`&&&&&&`& facility to concatenate input lines. .next If a character that is treated specially in a string is required as a literal, it must be escaped with a backslash. It no longer works to include it as a character number, because escape sequences are now processed when a string is read, before any interpretation. .next Similarly, a redundant font change no longer works to disable a kern. You have to use some actual characters that have no effect on the output, for example &`\*u*d\`& (which does an up and down move in the music font). .next White space is permitted before a beam break character. .next The &%accspacing%& directive can now be given with an optional sixth value, giving the width for the narrower style 0 half sharp. .next The &%timefont%& directive must precede &%printtime%& if it is to apply to the strings in &%printtime%&. .next A completely empty stave now starts with a clef unless there was a previous &%[noclef]%& setting. .next A masquerade setting for a chord must appear on the chord's first note. .next The test output files in the &_testing/outfiles_& directory are no longer complete PostScript files that include the music font. However, they can be viewed by a command such as: .code cat PSheader testing/outfiles/Test01.ps | gv - .endd though this method does not show a list of page numbers. .next The separate font name &`bigmusic`& is abolished. .next &%[omitempty]%& is no longer a separate directive, but is instead an option of the &%[stave]%& directive, because it applies to the entire stave. .next [&%Stavelines]%& also applies to the whole stave; it still works, but is now deprecated, with a warning message. Instead of &%[stavelines 3]%& (for example), you should now use &%[stave n/3]%&. .next Slur and line ids are now required to be ASCII alphanumeric characters. .next The obsolete directives whose names began with `play' have been removed (replace `play' with `midi'). .next The obsolete &%[percussion]%& directive is removed. .next The [move] directive can now move rests vertically as well as horizontally. .next A Unicode translation (&`.utr`&) file can now specify the character to use for unsupported code points in non-standardly-encoded fonts. .endlist . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .tocsubsecton .chapter "Characters in text fonts" CHAPunifont .index "Unicode" "character list" .index "fonts" "Unicode characters" .index "PostScript" "Unicode characters" .index "accented characters in strings" "list of" PostScript text fonts such as &'Times-Roman'& that use the Adobe standard encoding contain over 300 characters. From release 4.10, PMW gives access to all these characters by making use of Unicode encoding, which allows for character codes that are greater than 255. There are several ways in which characters other than the standard ASCII set can be represented in PMW text strings; these are described in section &<>&. This chapter lists all the characters in the PostScript standard text fonts, with their Unicode values (in hexadecimal, as is conventional), their PMW escape sequences when defined, and their PostScript character names. However, some of these characters may be missing in older fonts. The use of the escape sequence &`\fi`& for the `fi' ligature is no longer necessary, because PMW now automatically uses the ligature for variable width fonts when it is available. The escape sequence is retained for backwards compatibility. PMW does not use the `fl' ligature automatically. Characters whose code values are less than 007F (127) are ASCII characters that correspond to the keys on the computer keyboard. However, in PMW strings, the literal characters grave accent and single quote (codes 0060 and 0027) are converted into Unicode characters 2018 and 2019 so that they appear as opening and closing quotes, respectively. If you want an actual grave accent or an ASCII single quote character, you can use the escape sequences &`\``& and &`\'`&. .rule .leadon 2 .itable none 0 0 4 50 centre 60 centre 80 left 100 centre .row &*Unicode*& &*Escape*& "&*PS name*&" &*Character*& .row &`0020`& "" space "" .row &`0021`& "" exclam ! .row &`0022`& "" quotedbl " .row &`0023`& "" numbersign # .row &`0024`& "" dollar $ .row &`0025`& "" percent % .row &`0026`& "" ampersand & .row &`0027`& &`\' `& quotesingle ' .row &`0028`& "" parenleft ( .row &`0029`& "" parenright ) .row &`002A`& "" asterisk * .row &`002B`& "" plus + .row &`002C`& "" comma , .row &`002D`& "" hyphen - .row &`002E`& "" period . .row &`002F`& "" slash / .row &`0030`& "" zero 0 .row ↓ "" ↓ ↓ .row &`0039`& "" nine 9 .row &`003A`& "" colon : .row &`003B`& "" semicolon ; .row &`003C`& "" less < .row &`003D`& "" equal = .row &`003E`& "" greater > .row &`003F`& "" question ? .row &`0040`& "" at @ .row &`0041`& "" A A .row ↓ "" ↓ ↓ .row &`005A`& "" Z Z .row &`005B`& "" bracketleft [ .row &`005C`& &`\\ `& backslash \ .row &`005D`& "" bracketright ] .row &`005E`& "" asciicircum ^ .row &`005F`& "" underscore _ .row &`0060`& &`\` `& grave ` .row &`0061`& "" a a .row ↓ "" ↓ ↓ .row &`007A`& "" z z .row &`007B`& "" braceleft { .row &`007C`& "" bar | .row &`007D`& "" braceright } .row &`007E`& "" asciitilde ~ .row &`00A1`& "" exclamdown ¡ .row &`00A2`& "" cent ¢ .row &`00A3`& "" sterling £ .row &`00A4`& "" currency ¤ .row &`00A5`& "" yen ¥ .row &`00A6`& "" brokenbar ¦ .row &`00A7`& "" section § .row &`00A8`& "" dieresis ¨ .row &`00A9`& &`\c)`& copyright © .row &`00AA`& "" ordfeminine ª .row &`00AB`& "" guillemotleft « .row &`00AC`& "" logicalnot ¬ .row &`00AE`& "" registered ® .row &`00AF`& "" macron ¯ .row &`00B0`& "" degree ° .row &`00B1`& "" plusminus ± .row &`00B2`& "" twosuperior ² .row &`00B3`& "" threesuperior ³ .row &`00B4`& "" acute ´ .row &`00B5`& "" mu µ .row &`00B6`& "" paragraph ¶ .row &`00B7`& "" bullet · .row &`00B8`& "" cedilla ¸ .row &`00B9`& "" onesuperior ¹ .row &`00BA`& "" ordmasculine º .row &`00BB`& "" guillemotright » .row &`00BC`& "" onequarter ¼ .row &`00BD`& "" onehalf ½ .row &`00BE`& "" threequarters ¾ .row &`00BF`& &`\? `& questiondown ¿ .row &`00C0`& &`\A``& Agrave À .row &`00C1`& &`\A'`& Aacute Á .row &`00C2`& &`\A^`& Acircumflex  .row &`00C3`& &`\A~`& Atilde à .row &`00C4`& &`\A.`& Adieresis Ä .row &`00C5`& &`\Ao`& Aring Å .row &`00C6`& "" AE Æ .row &`00C7`& &`\C,`& Ccedilla Ç .row &`00C8`& &`\E``& Egrave È .row &`00C9`& &`\E'`& Eacute É .row &`00CA`& &`\E^`& Ecircumflex Ê .row &`00CB`& &`\E.`& Edieresis Ë .row &`00CC`& &`\I``& Igrave Ì .row &`00CD`& &`\I'`& Iacute Í .row &`00CE`& &`\I^`& Icircumflex Î .row &`00CF`& &`\I.`& Idieresis Ï .row &`00D0`& "" Eth Ð .row &`00D1`& &`\N~`& Ntilde Ñ .row &`00D2`& &`\O``& Ograve Ò .row &`00D3`& &`\O'`& Oacute Ó .row &`00D4`& &`\O^`& Ocircumflex Ô .row &`00D5`& &`\O~`& Otilde Õ .row &`00D6`& &`\O.`& Odieresis Ö .row &`00D7`& "" multiply × .row &`00D8`& &`\O/`& Oslash Ø .row &`00D9`& &`\U``& Ugrave Ù .row &`00DA`& &`\U'`& Uacute Ú .row &`00DB`& &`\U^`& Ucircumflex Û .row &`00DC`& &`\U.`& Udieresis Ü .row &`00DD`& &`\Y'`& Yacute Ý .row &`00DE`& "" Thorn Þ .row &`00DF`& &`\ss`& germandbls ß .row &`00E0`& &`\a``& agrave à .row &`00E1`& &`\a'`& aacute á .row &`00E2`& &`\a^`& acircumflex â .row &`00E3`& &`\a~`& atilde ã .row &`00E4`& &`\a.`& adieresis ä .row &`00E5`& &`\ao`& aring å .row &`00E6`& "" ae æ .row &`00E7`& &`\c,`& ccedilla ç .row &`00E8`& &`\e``& egrave è .row &`00E9`& &`\e'`& eacute é .row &`00EA`& &`\e^`& ecircumflex ê .row &`00EB`& &`\e.`& edieresis ë .row &`00EC`& &`\i``& igrave ì .row &`00ED`& &`\i'`& iacute í .row &`00EE`& &`\i^`& icircumflex î .row &`00EF`& &`\i.`& idieresis ï .row &`00F0`& "" eth ð .row &`00F1`& &`\n~`& ntilde ñ .row &`00F2`& &`\o``& ograve ò .row &`00F3`& &`\o'`& oacute ó .row &`00F4`& &`\o^`& ocircumflex ô .row &`00F5`& &`\o~`& otilde õ .row &`00F6`& &`\o.`& odieresis ö .row &`00F7`& "" divide ÷ .row &`00F8`& &`\o/`& oslash ø .row &`00F9`& &`\u``& ugrave ù .row &`00FA`& &`\u'`& uacute ú .row &`00FB`& &`\u^`& ucircumflex û .row &`00FC`& &`\u.`& udieresis ü .row &`00FD`& &`\y'`& yacute ý .row &`00FE`& "" thorn þ .row &`00FF`& &`\y.`& ydieresis ÿ .row &`0100`& &`\A-`& Amacron Ā .row &`0101`& &`\a-`& amacron ā .row &`0102`& &`\Au`& Abreve Ă .row &`0103`& &`\au`& abreve ă .row &`0104`& "" Aogonek Ą .row &`0105`& "" aogonek ą .row &`0106`& &`\C'`& Cacute Ć .row &`0107`& &`\c'`& cacute ć .row &`0108`& &`\C^`& Ccircumflex Ĉ .row &`0109`& &`\c^`& ccircumflex ĉ .row &`010A`& "" Cdotaccent Ċ .row &`010B`& "" cdotaccent ċ .row &`010C`& &`\Cv`& Ccaron Č .row &`010D`& &`\cv`& ccaron č .row &`010E`& &`\Dv`& Dcaron Ď .row &`010F`& &`\dv`& dcaron ď .row &`0110`& &`\D-`& Dcroat Đ .row &`0111`& &`\D-`& dcroat đ .row &`0112`& &`\E-`& Emacron Ē .row &`0113`& &`\e-`& emacron ē .row &`0114`& &`\Eu`& Ebreve Ĕ .row &`0115`& &`\eu`& ebreve ĕ .row &`0116`& "" Edotaccent Ė .row &`0117`& "" edotaccent ė .row &`0118`& "" Eognonek Ę .row &`0119`& "" eogonek ę .row &`011A`& &`\Ev`& Ecaron Ě .row &`011B`& &`\ev`& ecaron ě .row &`011C`& &`\G^`& Gcircumflex Ĝ .row &`011D`& &`\g^`& gcircumflex ĝ .row &`011E`& &`\Gu`& Gbreve Ğ .row &`011F`& &`\gu`& gbreve ğ .row &`0120`& "" Gdotaccent Ġ .row &`0121`& "" gdotaccent ġ .row &`0122`& "" Gcommaaccent Ģ .row &`0123`& "" gcommaaccent ģ .row &`0124`& &`\H^`& Hcircumflex Ĥ .row &`0125`& &`\h^`& hcircumflex ĥ .row &`0126`& "" Hbar Ħ .row &`0127`& "" hbar ħ .row &`0128`& &`\I~`& Itilde Ĩ .row &`0129`& &`\i~`& itilde ĩ .row &`012A`& &`\I-`& Imacron Ī .row &`012B`& &`\i-`& imacron ī .row &`012C`& &`\Iu`& Ibreve Ĭ .row &`012D`& &`\iu`& ibreve ĭ .row &`012E`& "" Iogonek Į .row &`012F`& "" iogonek į .row &`0130`& "" Idotaccent İ .row &`0131`& "" dotlessi ı .row &`0132`& "" IJ IJ .row &`0133`& "" ij ij .row &`0134`& &`\J^`& Jcircumflex Ĵ .row &`0135`& &`\j^`& jcircumflex ĵ .row &`0136`& "" Kcommaaccent Ķ .row &`0137`& "" kcommaaccent ķ .row &`0138`& "" kgreenlandic ĸ .row &`0139`& &`\L'`& Lacute Ĺ .row &`013A`& &`\l'`& lacute ĺ .row &`013B`& "" Lcommaaccent Ļ .row &`013C`& "" lcommaaccent ļ .row &`013D`& &`\Lv`& Lcaron Ľ .row &`013E`& &`\lv`& lcaron ľ .row &`013F`& "" Ldot Ŀ .row &`0140`& "" ldot ŀ .row &`0141`& &`\l/`& Lslash Ł .row &`0142`& &`\l/`& lslash ł .row &`0143`& &`\N'`& Nacute Ń .row &`0144`& &`\n'`& nacute ń .row &`0145`& "" Ncommaaccent Ņ .row &`0146`& "" ncommaaccent ņ .row &`0147`& &`\Nv`& Ncaron Ň .row &`0148`& &`\nv`& ncaron ň .row &`0149`& "" napostrophe ʼn .row &`014A`& "" Eng Ŋ .row &`014B`& "" eng ŋ .row &`014C`& &`\O-`& Omacron Ō .row &`014D`& &`\o-`& omacron ō .row &`014E`& &`\Ou`& Obreve Ŏ .row &`014F`& &`\ou`& obreve ŏ .row &`0150`& &`\O"`& Ohungrumlaut Ő .row &`0151`& &`\o"`& ohungrumlaut ő .row &`0152`& "" OE Œ .row &`0153`& "" oe œ .row &`0154`& &`\R'`& racute Ŕ .row &`0156`& "" Rcommaaccent Ŗ .row &`0157`& "" rcommaaccent ŗ .row &`0158`& &`\Rv`& Rcaron Ř .row &`0159`& &`\rv`& rcaron ř .row &`015A`& &`\S'`& Sacute Ś .row &`015B`& &`\s'`& sacute ś .row &`015C`& &`\S^`& Scircumflex Ŝ .row &`015D`& &`\s^`& scircumflex ŝ .row &`015E`& &`\S,`& Scedilla Ş .row &`015F`& &`\s,`& scedilla ş .row &`0160`& &`\Sv`& Scaron Š .row &`0161`& &`\sv`& scaron š .row &`0162`& &`\T,`& Tcedilla Ţ .row &`0163`& &`\t,`& tcedilla ţ .row &`0164`& &`\Tv`& Tcaron Ť .row &`0165`& &`\tv`& tcaron ť .row &`0166`& "" Tbar Ŧ .row &`0167`& "" tbar ŧ .row &`0168`& &`\U~`& Utilde Ũ .row &`0169`& &`\u~`& utilde ũ .row &`016A`& &`\U-`& Umacron Ū .row &`016B`& &`\u-`& umacron ū .row &`016C`& &`\Uu`& Ubreve Ŭ .row &`016D`& &`\uu`& ubreve ŭ .row &`016E`& &`\Uo`& Uring Ů .row &`016F`& &`\uo`& uring ů .row &`0170`& &`\U"`& Uhungrumlaut Ű .row &`0171`& &`\u"`& uhungrumlaut ű .row &`0172`& "" Uogonek Ų .row &`0173`& "" uogonek ų .row &`0174`& &`\W^`& Wcircumflex Ŵ .row &`0175`& &`\w^`& wcircumflex ŵ .row &`0176`& &`\Y^`& Ycircumflex Ŷ .row &`0177`& &`\y^`& ycircumflex ŷ .row &`0178`& &`\Y.`& Ydieresis Ÿ .row &`0179`& &`\Z'`& Zacute Ź .row &`017A`& &`\z'`& zacute ź .row &`017B`& "" Zdotaccent Ż .row &`017C`& "" zdotaccent ż .row &`017D`& &`\Zv`& Zcaron Ž .row &`017E`& &`\zv`& zcaron ž .row &`017F`& "" longs ſ .row &`0192`& "" florin ƒ .row &`0218`& "" Scommaaccent Ș .row &`0219`& "" scommaaccent ș .row &`021A`& "" Tcommaaccent Ț .row &`021B`& "" tcommaaccent ț .row &`0302`& "" circumflex ̂ .row &`0303`& "" tilde ̃ .row &`0306`& "" breve ̆ .row &`0307`& "" dotaccent ̇ .row &`030A`& "" ring ̊ .row &`030B`& "" hungrumlaut ̋ .row &`030C`& "" caron ̌ .row &`0326`& "" commaaccent ̦ .row &`0328`& "" ogonek ̨ .row &`0394`& "" Delta Δ .row &`2013`& &`\--`& endash – .row &`2014`& &`\---`& emdash — .row &`2018`& "" quoteleft ‘ .row &`2019`& "" quoteright ’ .row &`201A`& "" quotesinglbase ‚ .row &`201C`& &`\<<`& quotedblleft “ .row &`201D`& &`\>>`& quotedblright ” .row &`201E`& "" quotedblbase „ .row &`2020`& "" dagger † .row &`2021`& "" daggerdbl ‡ .row &`2026`& "" ellipsis … .row &`2027`& "" periodcentred ‧ .row &`2031`& "" perthousand ‱ .row &`2039`& "" guilsinglleft ‹ .row &`203A`& "" guilsinglright › .row &`2044`& "" fraction ⁄ .row &`20AC`& "" Euro € .row &`2122`& "" trademark ™ .row &`2202`& "" partialdiff ∂ .row &`2211`& "" summation ∑ .row &`2212`& "" minus − .row &`221A`& "" radical √ .row &`221E`& "" infinity ∞ .row &`2260`& "" notequal ≠ .row &`2264`& "" lessequal ≤ .row &`2265`& "" greaterequal ≥ .row &`25CA`& "" lozenge ◊ .row &`FB01`& &`\fi`& fi fi .row &`FB02`& &`\fl`& fl fl .endtable .leadoff .rule . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .chapter "The PMW music font" CHAPfont .index "music font characters" .index "fonts" "music font characters" .index "fonts" "PMW-Music" .index "PMW-Music font" .index "PostScript" "music font" This chapter contains a list of all the characters in the PMW-Music font. Characters from this font can be referenced by number in character strings (&R; &<>&). Those with character codes less than 127 can also be referenced by switching to the music font and entering the corresponding ASCII character or giving the Unicode code point if there is one. The following three examples produce the same effect: .code "\rm\this clef \*33\ is treble" "\rm\this clef \mu\!\rm\ is treble" "\rm\this clef \mu\\x1D11E\\rm\ is treble" .endd The second method is more convenient when a whole sequence of music font characters is required. Character 33 in the music font (which corresponds to an exclamation mark in ASCII) is the treble clef. Most of the characters in the music font are positioned `on the baseline' in the typographic sense, though some have `descenders'. The only exceptions to this are the constituent parts of notes, such as stems and quaver tails. The typographic character widths, which may or may not be used by PMW when setting music, are mostly set to values that are reasonable when these characters are part of a text string. Here is a list of the characters in the font, giving both their numbers (in decimal) and, where relevant, the corresponding ASCII characters and Unicode code points. The character width is also given as a fraction of the font size. For example, when a 10-point treble clef is output, its width is 15 points. .rule .leadon .itable none 0 0 6 36 centre &&& 36 centre &&& 48 right &&& 48 "char"" charoff=""40" &&& 44 centre &&& 210 left .literal xml ASCII Code Unicode Width Char Comment .literal off .row "" 32 &`00020`& 0.75 "" "space" .row &`!`& 33 &`1D11E`& 1.5 &{{{!}}}& "treble clef" .row &`"`& 34 &`1D122`& 1.5 &-[&{{{"}}}&]-& "bass clef" .row &`#`& 35 &`1D121`& 1.5 &-[&{{{#}}}&]-& "alto clef" .row &`$`& 36 &`1D1AF`& 1.0 &-[&{{$}}&]-& "piano end pedal sign" .row &`%`& 37 &`0266F`& 0.6 &{{%}}& "sharp" .row &`&&`& 38 &`1D12A`& 0.6 &{{&}}& "double sharp" .row &`'`& 39 &`0266D`& 0.5 &{{'}}& "flat" .row &`(`& 40 &`0266E`& 0.45 &{{(}}& "natural" .row &`)`& 41 &`1D110`& 0.0 &{{)}}& "fermata (over)" .row &`*`& 42 &`1D13A`& 0.66 &{{*}}& "breve rest" .row &`+`& 43 &`1D13B`& 0.66 &{{+}}& "semibreve rest" .row &`,`& 44 &`1D13C`& 0.66 &{{,}}& "minim rest" .row &`-`& 45 &`1D13D`& 0.66 &{{-}}& "crotchet rest" .row &`.`& 46 &`1D13E`& 0.59 &{{.}}& "quaver rest" .row &`/`& 47 &`1D111`& 0.0 &{{/}}& "fermata (under)" .row &`0`& 48 &`1D129`& 3.5 &{{0}}& "many bars rest" .row &`1`& 49 &`1D15C`& 1.34 &{{1}}& "breve" .row &`2`& 50 &`1D15D`& 0.84 &{{2}}& "semibreve" .row &`3`& 51 &`1D15E`& 0.84 &~&~&{{3}}& "up minim" .row &`4`& 52 "" 0.84 &{{4}}&&~ "down minim" .row &`5`& 53 &`1D15F`& 0.84 &~&~&{{5}}& "up crotchet" .row &`6`& 54 "" 0.84 &{{6}}&&~ "down crotchet" .row &`7`& 55 &`1D160`& 1.2 &~&~&{{7}}& "up quaver" .row &`8`& 56 "" 0.84 &{{8}}&&~ "down quaver" .row &`9`& 57 &`1D161`& 1.2 &~&~&{{9}}& "up semiquaver" .row &`:`& 58 "" 0.84 &{{:}}&&~ "down semiquaver" .pi sdop "subscript_down=""80""" .row &`;`& 59 "" 0.0 &-[&{{;}}&]-& "repeatable tail" .pi sdop "subscript_down=""33""" .pi sdop "superscript_up=""70""" .row &`<`& 60 "" 0.0 &+[&{{<}}&]+& "repeatable tail" .pi sdop "superscript_up=""33""" .row &`=`& 61 "" 0.0 &{{=}}& "ledger line" .row &`>`& 62 "" 0.0 &{{>}}& "vertical dot (above note on base line)" .row &`?`& 63 "" 0.4 &{{?}}& "horizontal dot" .row &`@`& 64 &`1D100`& 0.6 &{{@}}& "bar line" .row &`A`& 65 &`1D101`& 0.76 &{{A}}& "double bar line" .row &`B`& 66 "" 0.76 &{{B}}& "thick bar line" .pi sdop "subscript_down=""60""" .row &`C`& 67 &`1D11A`& 1.0 &-[&{{C}}&]-& "normal stave" .row &`D`& 68 &`1D116`& 1.0 &-[&{{D}}&]-& "percussion stave" .row &`E`& 69 &`1D16E`& 0.0 &-[&{{E}}&]-& "up quaver tail" .pi sdop "subscript_down=""33""" .row &`F`& 70 "" 10.0 "" "long stave" .row &`G`& 71 "" 10.0 "" "long percussion stave" .row &`H`& 72 "" 0.0 &+[&{{H}}&]+& "down quaver tail" .row &`I`& 73 "" 0.6 &{{I}}& "for repeat marks" .row &`J`& 74 &`1D165`& 0.0 &-[&{{J}}&]-& "upward note stem" .row &`K`& 75 "" 0.0 &+[&{{K}}&]+& "downward note stem" .row &`L`& 76 &`1D158`& 0.84 &{{L}}& "solid notehead" .row &`M`& 77 &`1D157`& 0.84 &{{M}}& "minim notehead" .row &`N`& 78 &`1D112`& 0.6 &{{N}}& "pause comma" .row &`O`& 79 "" 0.0 &{{O}}& "mordent" .row &`P`& 80 "" 0.0 &{{P}}& "double mordent" .row &`Q`& 81 "" 0.0 &{{Q}}& "inverted mordent" .row &`R`& 82 "" 0.0 &{{R}}& "double inverted mordent" .row &`S`& 83 &`1D197`& 0.0 &{{S}}& "turn" .row &`T`& 84 &`1D170`& 0.0 &{{T}}& "horizontal bar accent" .row &`U`& 85 &`1D181`& 0.0 &{{U}}& "accent" .row &`V`& 86 &`1D113`& 1.0 &{{V}}& "caesura" .row &`W`& 87 &`1D19C`& 0.0 &{{W}}& "accent" .row &`X`& 88 "" 0.0 &{{X}}& "accent" .row &`Y`& 89 "" 0.0 &{{Y}}& "accent" .row &`Z`& 90 &`1D17E`& 0.0 &{{Z}}& "accent" .row &`[`& 91 &`1D104`& 0.6 &-[&{{[}}&]-& "dashed bar line" .row &`\`& 92 "" 1.0 &-[&{{\}}&]-& "single-line caesura" .row &`]`& 93 "" 0.0 &{{]}}& "for use with clefs" .row &`^`& 94 &`1D134`& 1.0 &-[&{{^}}&]-& "`common' time" .row &`_`& 95 &`1D135`& 1.0 &-[&{{_}}&]-& "`cut' time" .row &```& 96 "" 0.4 &{{`}}& "suitable for following &{{ˆ}}&" .row &`a`& 97 "" 0.0 &{{a}}& "thumb (above)" .row &`b`& 98 "" 0.0 &{{b}}& "thumb (below)" .row &`c`& 99 &`1D10C`& 1.5 &-[&{{c}}&]-& "dal segno" .row &`d`& 100 &`1D10B`& 1.5 &-[&{{d}}&]-& "dal segno" .row &`e`& 101 &`1D1AA`& 0.0 &{{e}}& "down bow" .row &`f`& 102 "" 0.0 &{{f}}& "inverted down bow" .row &`g`& 103 &`1D1AB`& 0.0 &{{g}}& "up bow" .row &`h`& 104 "" 0.0 &{{h}}& "inverted up bow" .row &`i`& 105 &`1D199`& 0.0 &{{i}}& "inverted turn" .row &`j`& 106 "" 0.55 &{{j}}& "for figured bass" .row &`k`& 107 "" 0.76 &{{k}}& "for figured bass" .row &`l`& 108 &`1D1BA`& 0.84 &{{l}}& "solid diamond notehead" .row &`m`& 109 &`1D1B9`& 0.84 &{{m}}& "diamond notehead" .row &`n`& 110 "" 0.84 &{{n}}& "cross notehead" .row &`o`& 111 "" 0.0 &-[&{{o}}&]-& "up stem for cross" .row &`p`& 112 "" 0.0 &+[&{{p}}&]+& "down stem for cross" .row &`q`& 113 "" 0.0 &{{q}}& "up stem fragment, 0.2 to 0.4" .row &`r`& 114 "" 0.0 &{{r}}& "down stem fragment, 0 to -0.2" .row &`s`& 115 "" 0.5 &{{s}}& "for figured bass" .row &`t`& 116 "" 0.55 &{{t}}& "dot for guitar grid" .row &`u`& 117 "" 0.55 &{{u}}& "circle for guitar grid" .row &`v`& 118 "" 0.0 "" "outputs nothing; moves down by 0.1" .row &`w`& 119 "" 0.0 "" "outputs nothing; moves down by 0.4" .row &`x`& 120 "" 0.0 "" "outputs nothing; moves up by 0.4" .row &`y`& 121 "" -0.1 "" "outputs nothing; moves left by 0.1" .row &`z`& 122 "" 0.1 "" "outputs nothing; moves right by 0.1" .row &`{`& 123 "" -0.33 "" "outputs nothing; moves left by 0.33" .row &`|`& 124 "" 0.0 "" "outputs nothing; moves down by 0.2" .row &`}`& 125 "" 0.55 "" "outputs nothing; moves right by 0.55" .row &`~`& 126 "" 0.0 "" "outputs nothing; moves up 0.2" .row "" 127 "" - "" "unassigned" .row "" 128 "" 0.6 &-[&{{€}}&]-& "tick" .pi sdop "subscript_down=""60""" .pi sdop "superscript_up=""60""" .row "" 129 "" 0.0 &-[&{{}}&]-& "accaciatura bar" .row "" 130 "" 0.0 &+[&{{‚}}&]+& "accaciatura bar" .row "" 131 &`1D11C`& 0.0 &-[&{{ƒ}}&]-& "&~&~grid for guitar chords" .pi sdop "subscript_down=""33""" .pi sdop "superscript_up=""33""" .row "" 132 &`1D1A0`& 0.6 &{{„}}& "short bar line" .row "" 133 "" 0.0 &{{…}}& "breath" .row "" 134 "" 0.0 &{{†}}& "ring above" .row "" 135 "" 0.0 &{{‡}}& "cross" .row "" 136 &`1D196`& 0.8 &{{ˆ}}& "trill" .row "" 137 "" 0.6 &{{‰}}& "short vertical caesura" .row "" 138 "" 0.6 &{{Š}}& "long vertical caesura" .leadoff .row &D15; &D15;139 "" &D15;0.35 &D15;&{{‹}}& "&-[&BT15;]-&" .row &D15; &D15;140 "" &D15;0.35 &D15;&{{Œ}}& "&BM15;&~&~&~brackets for accidentals" .row &D15; &D15;141 "" &D15;0.35 &D15;&{{}}& "&BM15;" .row &D15; &D15;142 "" &D15;0.35 &D15;&{{Ž}}& "&BB15;" .leadon .row "" 143 &`1D10D`& 0.5 &{{}}& "for bar repetition" .row "" 144 "" 0.0 &{{}}& "for bar repetition" .row "" 145 "" 0.0 &{{‘}}& "for arpeggios &-- moves upwards by 0.4" .row "" 146 &`1D167`& 0.0 &{{’}}& "tremolo bar &-- moves upwards by 0.4" .row "" 147 &`1D1C8`& 1.0 &-[&{{“}}&]-& "old time signature" .row "" 148 &`1D1C9`& 1.0 &-[&{{”}}&]-& "old time signature" .row "" 149 "" 0.0 &+[&{{•}}&]+& "slur" .row "" 150 "" 0.0 &+[&{{–}}&]+& "slur" .row "" 151 "" 0.0 &{{—}}& "for splitting/joining staves" .row "" 152 "" 0.0 &+[&{{˜}}&]+& "for splitting/joining staves" .row "" 153 "" 1.0 &{{™}}& "inverted `common' time" .row "" 154 "" 1.0 &{{š}}& "inverted `cut' time" .row "" 155 "" 1.58 &{{›}}& "unison breve" .row "" 156 "" 0.0 &{{œ}}& "`start of bar' accent" .row "" 157 "" 0.35 &{{}}& "for bracketing &{]}&" .row "" 158 "" 0.35 &{{ž}}& "for bracketing &{]}&" .leadoff .row &D15; &D15;159 "" &D15;0.33 &D15;&{{Ÿ}}& "&-[&BT15;]-&" .row &D15; &D15;160 "" &D15;0.33 &D15;&{{ }}& "&BM15;&~&~&~for &'8va'& lines etc." .row &D15; &D15;161 "" &D15;0.33 &D15;&{{¡}}& "&BM15;" .row &D15; &D15;162 "" &D15;0.33 &D15;&{{¢}}& "&BB15;" .leadon .row "" 163 &`1D1AE`& 1.4 &{{£}}& "piano pedal" .row "" 164 "" 0.0 &{{¤}}& "for arpeggios &-- moves upwards by 0.4" .row "" 165 "" 0.0 &{{¥}}& "for arpeggios &-- moves upwards (sic) by 0.4" .row "" 166 "" 0.0 &{{¦}}& "harp nail symbol" .row "" 167 "" 0.333 &{{§}}& "alternate bracket angle" .row "" 168 "" 0.333 &{{¨}}& "alternate bracket angle" .row "" 169 &`1D117`& 1.0 &-[&~&~&~&~&~&{{©}}&]-& "2-line stave" .row "" 170 &`1D118`& 1.0 &-[&{{ª}}&&~&~&~&~&~&~&~]-& "3-line stave" .row "" 171 &`1D119`& 1.0 &-[&~&~&~&~&~&{{«}}&]-& "4-line stave" .row "" 172 &`1D11B`& 1.0 &-[&{{¬}}&&~&~&~&~&~&~&~]-& "6-line stave" .row "" 173 &`1D125`& 1.5 &-[&{{­}}&]-& "percussion clef" .row "" 174 "" 1.5 &-[&{{®}}&]-& "old-style F clef" .row "" 175 "" 1.5 &{{¯}}&&~&~&~&~&~ "old-style C clef" .row "" 176 "" 0.0 &-[&{{°}}&]-& "bracket top" .row "" 177 "" 0.0 &-[&{{±}}&]-& "bracket bottom" .row "" 178 "" 1.0 &{{²}}& "symbol for pitch without duration (`direct')" .row "" 179 "" 0.55 &{{³}}& "for figured bass" .row "" 180 "" 0.75 &{{´}}& "major chord sign (jazz notation)" .row "" 181 "" 0.675 &{{µ}}& "diminished chord sign" .row "" 182 "" 0.675 &{{¶}}& "`half diminished' chord sign" .row "" 183 "" 0.55 &{{·}}& "cross for guitar grid" .row "" 184 "" 0.0 &{{¸}}& "thicker ledger line" .row "" 185 "" -0.42 "" "outputs nothing; moves left 0.42, up 0.4" .row "" 186 "" -0.76 "" "outputs nothing; moves left 0.76, down 0.4" .row "" 187 "" 0.0 "" "outputs nothing; moves up 1.2" .row "" 188 "" 0.0 "" "outputs nothing; moves down 1.2" .row "" 189 "" 0.424 &{{½}}& "half sharp, Egyptian style" .row "" 190 "" 0.5 &{{¾}}& "half sharp, Turkish style" .row "" 191 "" 0.6 &{{¿}}& "half flat, Egyptian style" .row "" 192 "" 0.6 &{{À}}& "half flat, Turkish style" .row "" 193 "" 0.6 &{{Á}}& "pause comma, inverted for R-to-L music" .row "" 194 "" 0.0 &{{Â}}& "staccatissimo" .row "" 195 "" 0.0 &{{Ã}}& "staccatissimo, inverted" .row "" 196 &`1D198`& 0.0 &{{Ä}}& "reversed turn" .row "" 197 "" 0.0 &{{Å}}& "inverted reversed turn" .row "" 198 "" 0.0 &{{Æ}}& "top half circle" .row "" 199 "" 0.0 &{{Ç}}& "bottom half circle" .row "" 200 "" 0.84 &{{È}}& "circular crotchet notehead" .row "" 201 "" 0.84 &{{É}}& "circular minim notehead" .row "" 247 "" 10.0 "" "long 2-line stave" .row "" 248 "" 10.0 "" "long 3-line stave" .row "" 249 "" 10.0 "" "long 4-line stave" .row "" 250 "" 10.0 "" "long 6-line stave" .endtable .leadoff .rule .index "non-printing music characters" The characters numbered 32, 118&--126, and 185&--188 do not cause anything to be output; instead they just cause the current position to be moved by a distance that depends on the point size of the font. &*Note*&: All these characters exist as actual characters in the original PostScript version of the font, which is in a file called &_PMW-Music.pfa_&. From release 5.20 an OpenType version called &_PMW-Music.otf_& is also provided because the PostScript font formats are becoming obsolete. The OpenType format does not support leftwards, upwards, or downwards movements in fonts whose primary movement is to the right. For this reason, the PMW program has been updated so that it no longer relies on the font mechanism for such movements. Instead, when it encounters any of these characters, it emulates what would happen with the PostScript font. This means that PMW output works with either form of the font, but if the OpenType font is used with any other program, the characters with unsupported movements are not available. The values given in the table above are the factors by which the font's point size must be multiplied in order to get the relevant distance. For example, if a 10-point font is in use, character number 119 (w) moves the current position down by 4 points. If a space character (number 32) is output from the music font, it moves the position by 0.75 units to the right. There is a discussion on the use of the special characters for guitar chord grids in section &<>&. The larger round and square brackets (characters 139&--142) are designed so that they can be output directly before and after an accidental, except that for a flat they need to be raised by one note pitch (2 points). The large circle characters have a diameter of two stave spaces, and are intended for original time signatures (see the example in section &<>&). The slanting arrows are for use at the ends of staves when a stave containing multiple parts is about to be split into two or more staves, and &'vice versa'&. The slur characters are not used by PMW itself, but are for showing ties when using note characters in text. The first is the correct width for two successive note characters; the second is the correct width when the first note is followed by a dot. Because they have zero width, they should be placed before the notes. .code "\**m.\ = \mf\\149\\51\\53\" .endd This example is output as:&~&~ &{3?}& = &{•35}& . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .chapter "The PMW-Alpha font" CHAPpmwalpha .index "fonts" "PMW-Alpha" .index "PMW-Alpha font" Richard Hallas contributed an auxiliary font for use with PMW and other programs. It is called PMW-Alpha, because it is designed for music symbols that are useful in conjunction with normal alphabetic text. The font was originally designed as an Acorn RISC OS font; the PostScript version was generated automatically from the original. The characters that PMW-Alpha contains fall into four classes: .ilist There is a set of letters such as &{-f-}& and &{-p-}& which are in a style commonly seen in music, and which can be used for dynamic marks. .next There is a set of digits in a style commonly seen in time signatures, together with a matching plus sign. .next There is a set of fractions, suitable for use in organ registrations. There are also two sets of small digits, one raised and one lowered, that can be used to build additional fractions. .next There are small versions of many music characters such as notes, accidentals, and clefs. These are at appropriate sizes for mixing with text fonts of the same nominal size, which makes it easier to include them with text when using desktop publishing programs. .endlist .section "Use of PMW-Alpha from within PMW" Here is an example of some header directives that could be used to make use of the PMW-Alpha font from within PMW: .code Textfont extra 1 "PMW-Alpha" Timefont extra 1 *Define f "\xx1\f" *Define fr37 \xx1\\203\\222\\217\ .endd The &%textfont%& directive sets up PMW-Alpha as the first extra font; the &%timefont%& directive specifies that numerical time signatures are to use this font. The first &%*define%& directive defines a macro for the &'forte'& mark &{-f-}&. The second macro is for the fraction &{-ËÞÙ-}&. It is set up without surrounding quote marks so that it can be included in a longer string, for example: .code "an unusual fraction is &fr37\rm\" .endd .section "Use of PMW-Alpha in other programs" From within a desktop publishing program, PMW-Alpha can be used as a kind of musical typewriter. Richard Hallas explains: ``The keys Q, W, E, R, T, Y produce notes of descending duration from breve to semiquaver. The lower-case versions of the letters produce notes with up-stems, and the upper-case characters produce down-stem notes. The dot key produces a dot which is suitable to follow any up-stem note, and the > key (shifted dot) produces a suitable dot for the down-stem notes. There are also some simple beams which can be used with the crotchet characters. The keys h, j, and k produce beams for upstemmed notes, while H, J, and K are for use with downstemmed notes. They should be typed after the first note, and all have a width of zero, so do not move the cursor. For example, typing `rh,r RK> < Hd R , | Hd , Hd e , Hd } \ | .endd produces: .display &{+&~V&~<&~Q&~<|&~<&~E><&~R,|&~,&~e,&~}\|+}& .endd There are two systems available for fractions. Firstly, the most common fractions &{-¹-}&, &{-²-}&, and &{-³-}& are in the ASCII positions normally occupied by superscript digits &{-É-}&, &{-Ê-}&, and &{-Ë-}&. The standard &{-¼-}&, &{-½-}&, and &{-¾-}& are in their normal ASCII positions, and various other common fractions are available in a fairly sensible order from adjacent characters. Secondly, any fraction can be made from the individual fraction numbers and character 222. The ready-made fractions are preferable to the custom ones because the relative positions of the numbers and the slash are slightly neater, but nevertheless the custom fractions will usually give a good result. The fractions are in &'Times-Roman'& style, and should go well with that font.'' .section "Characters in the font" Here is a list of the characters in the PMW-Alpha font, in the same format as the list of characters in the PMW-Music font above. The stemless notes (breve and semibreve) appear twice, in both the `upstem' and `downstem' positions, and for technical reasons, the treble clef appears on the lower case g as well as the upper case G. .rule .leadon .itable none 0 0 5 36 centre &&& 36 centre &&& 54 "char"" charoff=""40" &&& 40 centre &&& 210 left .literal xml ASCII Code Width Char Comment .literal off .row "" 32 0.64 "" "space" .row """" 34 0.26 &{-"-}& "small semiquaver rest" .row # 35 0.46 &{-#-}& .row $ 36 0.38 &{-$-}& .row % 37 0.36 &{-%-}& .row && 38 0.7 &{-&&-}& .row ' 39 0.38 &{-'-}& "big semiquaver rest" .row ( 40 0.924 &{-(-}& .row ) 41 0.924 &{-)-}& .row * 42 0.77 &{-*-}& .row + 43 0.64 &{-+-}& "for time signatures" .row , 44 0.26 &{-,-}& "`double dot' space" .row . 46 0.13 &{-.-}& "dot for upstemmed notes" .row / 47 0.38 &{-/-}& "big crotchet rest" .row 0 48 0.64 &{-0-}& .row 1 49 0.64 &{-1-}& .row 2 50 0.64 &{-2-}& .row 3 51 0.64 &{-3-}& .row 4 52 0.64 &{-4-}& .row 5 53 0.64 &{-5-}& .row 6 54 0.64 &{-6-}& .row 7 55 0.64 &{-7-}& .row 8 56 0.64 &{-8-}& .row 9 57 0.64 &{-9-}& .row : 58 0.26 &{-:-}& "small quaver rest" .row ; 59 0.38 &{-;-}& "big quaver rest" .row < 60 0.13 &{-<-}& "`dot' space" .row = 61 0.564 &{-=-}& .row > 62 0.13 &{->-}& "dot for downstemmed notes" .row ? 63 0.26 &{-?-}& "small crotchet rest" .row B 66 0.64 &{-B-}& .row C 67 0.64 &{-C-}& .row E 69 0.38 &{-E-}& .row F 70 0.80 &{-F-}& .row G 71 0.64 &{-G-}& .leadoff .row &D15;H &D15;72 &D15;0.00 &D15;&{-H-}& "&-[&BT15;]-&" .row &D15;J &D15;74 &D15;0.00 &D15;&{-J-}& "&BM15;&~&~&~beams for downstemmed notes" .row &D15;K &D15;75 &D15;0.00 &D15;&{-K-}& "&BB15;" .leadon .row L 76 0.38 &{-L-}& "crotchet notehead" .row M 77 0.38 &{-M-}& "minim notehead" .row O 79 0.80 &{-O-}& .row P 80 1.40 &{-P-}& .row Q 81 0.64 &{-Q-}& .row R 82 0.38 &{-R-}& .row S 83 0.72 &{-S-}& .row T 84 0.38 &{-T-}& .row V 86 0.64 &{-V-}& .row W 87 0.38 &{-W-}& "semibreve" .row Y 89 0.38 &{-Y-}& .row [ 91 0.51 &{-[-}& "minim rest, with ledger" .row \ 92 0.38 &{-\-}& "`note' space" .row ] 93 0.51 &{-]-}& "semibreve rest, with ledger" .row ^ 94 0.46 &{-^-}& "double sharp" .row _ 95 0.53 &{-_-}& "for joining words" .row ` 96 0.70 &{-`-}& .row c 99 0.64 &{-c-}& .row d 100 0.817 &{-d-}& .row e 101 0.38 &{-e-}& .row f 102 0.47 &{-f-}& .row g 103 0.64 &{-g-}& .leadoff .row &D15;h &D15;104 &D15;0.00 &D15;&{-h-}& "&-[&BT15;]-&" .row &D15;j &D15;106 &D15;0.00 &D15;&{-j-}& "&BM15;&~&~&~beams for upstemmed notes" .row &D15;k &D15;107 &D15;0.00 &D15;&{-k-}& "&BB15;" .leadon .row m 109 0.88 &{-m-}& .row o 111 0.76 &{-o-}& .row p 112 0.69 &{-p-}& .row q 113 0.64 &{-q-}& .row r 114 0.38 &{-r-}& .row s 115 0.32 &{-s-}& .row t 116 0.38 &{-t-}& .row u 117 0.817 &{-u-}& .row w 119 0.38 &{-w-}& "semibreve" .row y 121 0.38 &{-y-}& .row z 122 0.42 &{-z-}& .row { 123 0.26 &{-{-}& "small semibreve rest" .row | 124 0.02 &{-|-}& "bar line" .row } 125 0.26 &{-}-}& "small minim rest" .row ~ 126 0.70 &{-~-}& .row "" 160 0.00 &{- -}& "stave segment" .row "" 178 0.75 &{-²-}& .row "" 179 0.75 &{-³-}& .row "" 180 0.75 &{-´-}& .row "" 181 0.75 &{-µ-}& .row "" 182 0.75 &{-¶-}& .row "" 183 0.75 &{-·-}& .row "" 184 0.75 &{-¸-}& .row "" 185 0.75 &{-¹-}& .row "" 186 0.75 &{-º-}& .row "" 187 0.75 &{-»-}& .row "" 188 0.75 &{-¼-}& .row "" 189 0.75 &{-½-}& .row "" 190 0.75 &{-¾-}& .leadoff .row &D15; &D15;200 &D15;0.30 &D15;&{-È-}& "&-[&BT15;]-&" .row &D15; &D15;201 &D15;0.30 &D15;&{-É-}& "&BM15;" .row &D15; &D15;202 &D15;0.30 &D15;&{-Ê-}& "&BM15;" .row &D15; &D15;203 &D15;0.30 &D15;&{-Ë-}& "&BM15;" .row &D15; &D15;204 &D15;0.30 &D15;&{-Ì-}& "&BM15;&~&~&~for fraction numerators" .row &D15; &D15;205 &D15;0.30 &D15;&{-Í-}& "&BM15;" .row &D15; &D15;206 &D15;0.30 &D15;&{-Î-}& "&BM15;" .row &D15; &D15;207 &D15;0.30 &D15;&{-Ï-}& "&BM15;" .row &D15; &D15;208 &D15;0.30 &D15;&{-Ð-}& "&BM15;" .row &D15; &D15;209 &D15;0.30 &D15;&{-Ñ-}& "&BB15; .row &D15; &D15;210 &D15;0.30 &D15;&{-Ò-}& "&-[&BT15;]-&" .row &D15; &D15;211 &D15;0.30 &D15;&{-Ó-}& "&BM15;" .row &D15; &D15;212 &D15;0.30 &D15;&{-Ô-}& "&BM15;" .row &D15; &D15;213 &D15;0.30 &D15;&{-Õ-}& "&BM15;" .row &D15; &D15;214 &D15;0.30 &D15;&{-Ö-}& "&BM15;&~&~&~for fraction denominators" .row &D15; &D15;215 &D15;0.30 &D15;&{-×-}& "&BM15;" .row &D15; &D15;216 &D15;0.30 &D15;&{-Ø-}& "&BM15;" .row &D15; &D15;217 &D15;0.30 &D15;&{-Ù-}& "&BM15;" .row &D15; &D15;218 &D15;0.30 &D15;&{-Ú-}& "&BM15;" .row &D15; &D15;219 &D15;0.30 &D15;&{-Û-}& "&BB15;" .leadon .row "" 222 0.75 &{-Þ-}& "for building fractions" .endtable .leadoff .rule . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .chapter "Syntax summary" CHAPsyntaxsummary .index "syntax summary" .index "summary of syntax" .section "Input line concatenation" A line that ends with &`&&&&&&`& is concatenated with its successor (with &`&&&&&&`& and the newline removed) before any other processing. .section "Preprocessing directives" These may occur at any point in an input file; each one must occupy a line on its own. .display &`*comment `&<&'rest of line'&> &`*define `&<&'macro name'&>&` `&<&'rest of line'&> &`*else`& &`*fi`& &`*if`& <&'condition'&> &`*if not `&<&'condition'&> &`*include `&"&'file name'&" .endd A macro name must be followed by parentheses, with optional default argument values, if it is to be used with arguments. .section "Macro calls" .display &`&&`&&''& &`&&`&&''&&`(`&&''&&`)`& .endd Macro calls may occur in macro arguments to any depth. Use &`&&)`& or &`&&(`& to include unmatched parentheses in a macro argument, and &`&&,`& for a comma at top level (not needed if in matched parentheses or quotes). .section "Input string repetition" The argument of a string repetition is processed as a macro argument. .display &`&&*`&&''&&`(`&&''&&`)`& .endd .section "Header directives" Those marked with an asterisk may appear only at the head of a PMW input file, not at the start of the second or subsequent movements. Those marked with a dagger affect only the movement in which they appear. .display &` Accadjusts `&<&'n'&>&` `&<&'n'&> ... <&'up to 8 numbers'&> &` Accspacing `&<&'n1'&>&` `&<&'n2'&>&` `&<&'n3'&>&` `&<&'n4'&>&` `&<&'n5'&> &`*B2pffont `&<&'fontword'&>&` `&<&'options'&>&` "`&<&'rules names'&>&`"`& &` Bar `&<&'n'&> &` Barlinesize `&<&'n'&> &` Barlinespace `&<&'n'&> &` Barlinestyle `&<&'n'&> &` Barnumberlevel `&<&'sign'&><&'n'&> &` Barnumbers `&<&'enclosure'&>&` `&<&'interval'&>&` `&<&'fontsize'&>&` `&<&'font'&> &` Beamendrests`& &` Beamflaglength `&<&'n'&> &` Beamthickness `&<&'n'&> &` Bottommargin `&<&'n'&> &` Brace `&<&'n'&>-<&'m'&> ... &` Bracestyle `&<&'n'&> &` Bracket `&<&'n'&>-<&'m'&> ... &` Breakbarlines `&<&'n1'&>&` `&<&'n2'&> ... &` Breakbarlinesx `&<&'n1'&>&` `&<&'n2'&> ... &` Breveledgerextra `&<&'n'&> &` Breverests`& &` Caesurastyle `&<&'n'&> &` Check`& &` Checkdoublebars`& &` Clefsize `&<&'n'&> &` Clefstyle `&<&'n'&> &` Clefwidths `&<&'n1'&> ... <&'n5'&> &` Codemultirests`& &` Copyzero `&<&'n'&>/<&'m'&> ... &` Cuegracesize `&<&'n'&> &` Cuesize `&<&'n'&> &` Dotspacefactor `&<&'n'&> &`†Doublenotes`& &` Draw `&<&'drawing definition'&>&` enddraw`& &`*Drawbarlines`& &`*Drawstavelines `&<&'n'&> (optional) &` Endlinesluradjust `&<&'n'&> &` Endlineslurstyle `&<&'n'&> &` Endlinetieadjust `&<&'n'&> &` Endlinetiestyle `&<&'n'&> &`*Eps`& &` Extenderlevel `&<&'n'&> &` Fbsize `&<&'n'&> &` Footing `&<&'fontsize'&>&` "`&<&'string'&>&`" `&<&'space'&> &` Footing draw `&<&'name'&>&` `&<&'space'&> &` Footnotesep `&<&'n'&> &` Footnotesize `&<&'n'&> &` Gracesize `&<&'n'&> &` Gracespacing `&<&'n'&>&` `&<&'m'&> &` Gracestyle `&<&'n'&> &` Hairpinlinewidth `&<&'n'&> &` Hairpinwidth `&<&'n'&> &` Halfflatstyle `&<&'n'&> &` Halfsharpstyle `&<&'n'&> &`†Halvenotes`& &` Heading `&<&'fontsize'&>&` "`&<&'string'&>&`" `&<&'space'&> &` Heading draw `&<&'name'&>&` `&<&'space'&> &` Hyphenstring `&&`"`&<&'string'&>&`"`& &` Hyphenthreshold `&<&'n'&> &`*IncPMWfont`& aka &`IncludePMWfont`& &` Join `&<&'n'&>-<&'m'&> ... &` Joindotted `&<&'n'&>-<&'m'&> ... &` Justify `&<&'edges'&> &`†Key `&<&'key signature'&> &` Keydoublebar`& &` Keysinglebar`& &` Keytranspose `&<&'key signature'&>&` `&<&'details'&> &` Keywarn`& &`*Landscape`& &` Lastfooting `&<&'fontsize'&>&` "`&<&'string'&>&`" `&<&'space'&> &` Lastfooting draw `&<&'name'&>&` `&<&'space'&> &`†Layout `&<&'n1'&>&` `&<&'n2'&> ... &` Ledgerstyle `&<&'n'&> &` Leftmargin `&<&'n'&> &` Linelength `&<&'n'&> &` Longrestfont `&<&'fontsize'&>&` `&<&'font'&> &`*Magnification `&<&'n'&> &` Makekey X`&<&'n'&>&` `&<&'key definition'&> &` Maxbeamslope `&<&'n'&> &`*Maxvertjustify `&<&'n'&> &` Midichannel `&<&'n'&>&` "`&<&'name or number'&>&`" `&<&'staves'&> &` Midifornotesoff`& &` Midistart `&<&'n'&>&` `&<&'n'&>&` `&<&'n'&> ... &` Miditempo `&<&'n'&>&` `&<&'n'&>/<&'m'&> ... &` Miditranspose `&<&'n'&>/<&'m'&> ... &` Midivolume `&<&'n'&>&` `&<&'n'&>/<&'m'&> ... &` Midkeyspacing `&<&'n'&> &` Midtimespacing `&<&'n'&> &`*Musicfont `&&`"`&<&'font name'&>&`"`& &` Nobeamendrests`& &` Nocheck`& &` Nocheckdoublebars`& &` Nocodemultirests`& &`*Nokerning`& &` Nokeywarn`& &` Nosluroverwarnings`& &` Nospreadunderlay`& &` Notespacing *`&<&'factor'&> &` Notespacing `&<&'n1'&> ... <&'n8'&> &`†Notime`& &` Notimebase`& &` Notimewarn`& &` Nounderlayextenders`& &`*Nowidechars`& &` Overlaydepth `&<&'n'&> &` Overlaysize `&<&'fontsize'&> &`*Page `&<&'n'&>&` `&<&'m'&> &` Pagefooting `&<&'fontsize'&>&` "`&<&'string'&>&`" `&<&'space'&> &` Pagefooting draw `&<&'name'&>&` `&<&'space'&> &` Pageheading `&<&'fontsize'&>&` "`&<&'string'&>&`" `&<&'space'&> &` Pageheading draw `&<&'name'&>&` `&<&'space'&> &`*Pagelength `&<&'n'&> &` Pmwversion `&<&'n'&> &` Printkey `&<&'key'&>&` `&<&'clef'&>&` "`&<&'string 1'&>&`" "`&<&'string 2'&>&`"`& &` Printtime `&<&'time'&>&` "`&<&'string 1'&>&`" "`&<&'string 2'&>&`"`& &` Rehearsalmarks `&<&'align'&>&` `&<&'style'&>&` `&<&'fontsize'&>&` `&<&'fontname'&> &` Repeatbarfont `&<&'fontsize'&>&` `&<&'font'&> &` Repeatstyle `&<&'n'&> &`*Righttoleft`& &` Selectstaves `&<&'n'&>-<&'m'&> ... &`*Sheetdepth `&<&'n'&> &`*Sheetsize A4 `&<&'or'&>&` A3`& &`*Sheetwidth `&<&'n'&> &` Shortenstems `&<&'n'&> &` Sluroverwarnings`& &` Smallcapsize `&<&'n'&> &`†Startbracketbar `&<&'n'&> &` Startlinespacing `&<&'c'&>&` `&<&'k'&>&` `&<&'t'&>&` `&<&'n'&> &`†Startnotime`& &` Stavesize(s) `&<&'n'&>/<&'m'&> ... &` Stavespacing `&<&'n'&>&` `&<&'n/b'&> ... &` Stavespacing `&<&'n'&>&` `&<&'n/a/b'&> ... &` Stemlengths `&<&'n1'&> ... <&'n6'&> &` Stemswap `&<&'direction'&> &` Stemswaplevel `&<&'n'&>/<&'m'&> ... &`*Stretchrule `&<&'n'&> &`†Suspend `&<&'n'&> ... &` Systemgap `&<&'n'&> &` Systemseparator `&<&'length'&> <&'width'&> <&'angle'&> <&'x-adjust'&> <&'y-adjust'&> &`*Textfont `&<&'fontword'&>&` "`&<&'font name'&>&`"`& &`*Textfont `&<&'fontword'&> include&` "`&<&'font name'&>&`"`& &` Textsizes `&<&'n'&> ... &` Thinbracket `&<&'n'&>-<&'m'&> ... &`†Time `&<&'time signature'&> &` Timebase`& &` Timefont `&<&'fontsize'&>&` `&<&'name'&> &` Timewarn`& &` Topmargin `&<&'n'&> &`†Transpose `&<&'n'&> &` Transposedacc force`& &` Transposedacc noforce`& &` Transposedkey `&<&'key 1'&>&` use `&<&'key 2'&> &` Trillstring `&&`"`&<&'string'&>&`"`& &` Tripletfont `&<&'fontsize'&>&` `&<&'name'&> &` Tripletlinewidth `&<&'n'&> &` Underlaydepth `&<&'n'&> &` Underlayextenders`& &` Underlaysize `&<&'fontsize'&> &` Underlaystyle `&<&'n'&> &`†Unfinished`& &` Vertaccsize `&<&'n'&> .endd .section "Note and rest components" The order of the items that go to make up one note is given below. Few notes require all possible components to be present and many are not relevant for rests. An upper case letter sets the initial note length of a minim, and a lower case letter is a crotchet, with &`+`&, &`-`&, &`=`&, and &`!`& characters available to adjust the length. Except for &`!`&, which may only follow an upper case letter, these can be freely intermixed. .itable none 0 0 2 100 left 250 left .row "accidental" "&`# ## $ $$ %`& .row "&~&~&~half sharp" "&`#-`& .row "&~&~&~half flat" "&`$-`& .row "&~&~&~invisible" "&`?`&" .row "&~&~&~over note" "&`o`&" .row "&~&~&~under note" "&`u`&" .row "&~&~&~transposed" "&`^# ^## ^$ ^$$ ^% ^- ^+`&" .row "&~&~&~bracketed" "&`) ]`&" .row "&~&~&~moved" "&`<`& &~or&~ &`<`&&'number'&" .row "note or rest letter" "&`a-g A-G q-t Q-T`&" .row "octave change" "&`'`& &~to raise,&~ &```& &~to lower" .row "note length flags" "&`- = =- ==`& &~divide length by 2, 4, 8, or 16" .row "" "&`+ ++`& &~multiply length by 2 or 4" .row "" "&`!`& &~note length is bar length" .row "move dot" "&`>`& &~or&~ &'number'&&`>`&" .row "dot(s)" "&`.`& &~or&~ &`..`& &~or&~ &`.+`&" .row "expression/options" "&`\`&&'expression and options indications'&&`\`&" .row "tie or short slur" "&`_`&" .row "&~&~&~above/below" "&`/a /b`&" .row "&~&~&~editorial" "&`/e`&" .row "&~&~&~dashed/dotted" "&`/i /ip`&" .row "glissando" "&`_/g`&" .row "full beam break" "&`;`&" .row "partial beam break" "&`,`&" .endtable There are two short cuts for note entry: .itable none 0 0 2 100 left 250 left .row "exact copy" "&`x`& or &`x`&<&'digit'&>" .row "pitch only copy" "&`p`& or &`P`&" .endtable The possible expression/option codes are: .itable none 0 0 2 48 left 300 left .row &`!`& "accent on stem side, trill or fermata below" .row &`:`& "augmentation dot other side if note on line" .row &`::`& "augmentation dot raised if note in space" .row &`'`& "`start of bar' accent" .row &`.`& "staccato" .row &`..`& "staccatissimo" .row &`-`& "accent" .row &`>`& "horizontal wedge accent" .row &`~`& "upper mordent" .row &`~|`& "lower mordent" .row &`~~`& "double upper mordent" .row &`~~|`& "double lower mordent" .row &`/`& "single tremolo" .row &`//`& "double tremolo" .row &`///`& "triple tremolo" .row &`)`& "notehead in round brackets" .row &`a`&<&'n'&> "accent <&'n'&>" .row &`ar`& "arpeggio" .row &`aru`& "arpeggio with up arrow" .row &`ard`& "arpeggio with down arrow" .row &`c`& "output on coupled stave" .row &`C`& "flip centring if only note/rest in bar" .row &`d`& "string down bow" .row &`f`& "fermata (pause) above note" .row &`f!`& "fermata (pause) below note" .row &`g`& "grace note" .row &`g/`& "crossed grace note" .row &`h`& "don't output on coupled stave" .row &`l`&<&'n'&> "rest level" .row &`m`&<&'flags'&> "masquerade" .row &`nc`& "circular notehead" .row &`nd`& "`direct' notehead" .row &`nh`& "harmonic (diamond) notehead" .row &`nn`& "normal notehead" .row &`no`& "notehead only, no stem" .row &`nx`& "cross notehead" .row &`nz`& "no notehead" .row &`o`& "indicate harmonic with small circle" .row &`sl`&<&'n'&> "extend stem length" .row &`sl-`&<&'n'&> "shorten stem length" .row &`sm`& "use small notehead" .row &`sp`& "spread chord" .row &`su`& "stem up" .row &`sd`& "stem down" .row &`sw`& "swap stem direction in beam" .row &`t`& "turn" .row &`t|`& "inverted turn" .row &`tr`& "trill" .row &`tr#`& "trill with sharp" .row &`tr$`& "trill with flat" .row &`tr%`& "trill with natural" .row &`u`& "string up bow" .row &`v`& "small, closed vertical wedge accent" .row &`V`& "large, open vertical wedge accent" .row &`x`& "cancel default expression" .endtable Accent numbers: .itable none 0 0 2 20 left 200 left .row 1 "staccato dot" .row 2 "horizontal bar" .row 3 "horizontal wedge" .row 4 "small, closed vertical wedge" .row 5 "large, open vertical wedge" .row 6 "string down bow" .row 7 "string up bow" .row 8 "ring" .row 9 "`start of bar' accent" .row 10 "staccatissimo" .endtable All accents and ornaments except tremolos can be moved in any direction by following the code with &`/u`&, &`/d`&, &`/l`&, or &`/r`& and a number. For this reason, the tremolo options must not directly follow an accent or ornament. Use a space to separate, or put the tremolo first. Tremolos themselves can be moved up and down, but not left or right. The notation looks confusing, but is consistent: for example, &`G\//u4\`& specifies a single tremolo that is moved up by 4 points. All accents, and the fermata, mordant, trill, and turn ornaments can be shown in parentheses or square brackets, by following the code with one of: .itable none 0 0 2 30 left 300 left .row &`/(`& "precede with an opening parenthesis" .row &`/[`& "precede with an opening square bracket" .row &`/)`& "follow with a closing parenthesis" .row &`/]`& "follow with a closing square bracket" .row &`/b`& "enclose in parentheses" .row &`/B`& "enclose in square brackets" .endtable .section "Special characters in stave data" These characters, along with text items, occur interspersed in the notes and rests: .itable none 0 0 2 30 left 300 left .row &D15;&`|`& "&D15;bar line" .row &D15;&`||`& "&D15;double bar line" .row &D15;&`|||`& "&D15;end-of-piece bar line" .row &D15;&`|?`& "&D15;invisible bar line" .row &D15;&`|=`& "&D15;bar line with beam carried over it" .row &D15;&`|`&<&'n'&> "&D15;bar line in style <&'n'&>" .row &D15;&`:`& "&D15;dotted bar line in middle of bar" .row &`(:`& "start repeated section" .row &`:)`& "end repeated section" .row &`{`& "start triplet" .row &`{`&<&'n'&> "start non-standard group" .row &`}`& "end non-standard group" .row &`//`& "caesura" .row &`>`& "diminuendo hairpin" .row &`<`& "crescendo hairpin" .endtable .section "Hairpin adjustment options" The &`/a`&, &`/b`&, &`/m`& and &`/w`& options may appear only at the start of a hairpin. The other options may appear at either end. If vertical movement is specified at the start of a hairpin, it applied to the whole hairpin. If specified at the end, it affects only the end. .itable none 0 0 2 60 left 300 left .row &`/a`&<&`n`&> "position above the stave (dimension optional)" .row &`/b`&<&`n`&> "position below the stave (dimension optional)" .row &`/bar`& "position at previous bar line" .row &`/d`&<&'n'&> "move down <&'n'&> points" .row &`/h`& "position halfway between notes" .row &`/l`&<&'n'&> "move left <&'n'&> points" .row &`/lc`&<&'n'&> "position left <&'n'&> crotchets" .row &`/m`& "position in midway between two staves" .row &`/r`&<&'n'&> "move right <&'n'&> points" .row &`/rc`&<&'n'&> "position right <&'n'&> crotchets" .row &`/slu`&<&`n`&> "split left up" .row &`/sld`&<&`n`&> "split left down" .row &`/sru`&<&`n`&> "split right up" .row &`/srd`&<&`n`&> "split right down" .row &`/u`&<&'n'&> "move up <&'n'&> points" .row &`/w`&<&`n`&> "set width of open end" .endtable .section "Stave text item options" These options may occur after any text item other than stave names, but for a rehearsal mark inside square brackets only those specifying movement are relevant, and &`/bar`&, &`/c`&, &`/cb`&, &`/e`&, &`/nc`&, &`/ne`&, and &`/ts`& are ignored on underlay and overlay strings. Other restrictions apply to follow-on strings (&R; &<>&). .itable none 0 0 2 60 left 300 left .row &`/a`& "position above the stave" .row &`/ao`& "position above, at the overlay level" .row &`/a`&<&'n'&> "position <&'n'&> points above the stave" .row &`/b`& "position below the stave" .row &`/bar`& "position at previous bar line" .row &`/box`& "enclose in a rectangular box (mitred)" .row &`/bu`& "position below, at the underlay level" .row &`/b`&<&'n'&> "position <&'n'&> points below the stave" .row &`/c`& "centre the string horizontally at its position" .row &`/cb`& "centre the string horizontally in the bar" .row &`/d`&<&'n'&> "move down <&'n'&> points" .row &`/e`& "align end of string, not start" .row &`/F`& "this is a follow-on string" .row &`/fb`& "this is figured bass" .row &`/fbu`& "this is figured bass, at underlay level" .row &`/h`& "position halfway between notes" .row &`/l`&<&'n'&> "move left <&'n'&> points" .row &`/lc`&<&'n'&> "position left <&'n'&> crotchets" .row &`/m`& "position below, halfway to the next stave" .row &`/nc`& "cancel a previous &`/c`&" .row &`/ne`& "cancel a previous &`/e`&" .row &`/ol`& "string is overlay" .row &`/r`&<&'n'&> "move right <&'n'&> points" .row &`/rbox`& "enclose in a rectangular box (rounded)" .row &`/rc`&<&'n'&> "position right <&'n'&> crotchets" .row &`/ring`& "enclose in a ring shape" .row &`/rot`&<&'n'&> "rotate <&'n'&> degrees" .row &`/s`&<&'n'&> "use settable font size <&'n'&> (1&--20)" .row &`/S`&<&'n'&> "use fixed font size <&'n'&> (1&--10)" .row &`/ts`& "position at time signature" .row &`/ul`& "string is underlay" .row &`/u`&<&'n'&> "move up <&'n'&> points" .endtable Settable font sizes are defined in the header by the &%textsizes%& directive. For underlay and overlay strings, additional strings may follow as options, to control the hyphens between syllables (&R; &<>&). .section "Stave name string options" These are the only options that are recognized for strings given in the &%[name]%& or &%[stave]%& directives. .itable none 0 0 2 48 left 300 left .row &`/c`& "centre align" .row &`/d`&<&'n'&> "move down <&'n'&> points" .row &`/e`& "right justify" .row &`/l`&<&'n'&> "move left <&'n'&> points" .row &`/m`& "position below, halfway to the next stave" .row &`/r`&<&'n'&> "move right <&'n'&> points" .row &`/s`&<&'n'&> "use settable font size <&'n'&> (1&--20)" .row &`/S`&<&'n'&> "use fixed font size <&'n'&> (1&--10)" .row &`/u`&<&'n'&> "move up <&'n'&> points" .row &`/v`& "rotate to run vertically" .row &`/"...`& "add another string at the same point" .endtable .section "Character string escapes" The escape sequences that specify accented and other special characters in text fonts are shown in the character list in chapter &<>&. What the remaining escape sequences insert is summarized here. .itable none 0 0 2 60 left 310 left .row &`\c]`& "© from the PostScript Symbol font" .row &`\p\`& "page number" .row &`\pe\`& "page number, if even" .row &`\po\`& "page number, if odd" .row &`\se\`& "skip to next &`\se\`& if page number even" .row &`\so\`& "skip to next &`\so\`& if page number odd" .row &`\r\`& "repeated bar number" .row &`\r2\`& "repeated bar number, except the first bar" .row &`\t\`& "transposition (number of semitones)" .row &`\t`&&'x'& "transpose chord name &'x'& (one of A&--G, optionally followed by &`#`& or &`$`&)" .row &`\@`& "start of in-string comment; ends at next &`\`&" .row " " .row &`\*b\`& "breve" .row &`\*s\`& "semibreve" .row &`\*m\`& "minim" .row &`\*c\`& "crotchet" .row &`\*Q\`& "quaver" .row &`\*q\`& "semiquaver" .endtable Any of the above can include a dot after the note letter for the dotted form of the note. .itable none 0 0 2 60 left 300 left .row &`\*#\`& "sharp" .row &`\*$\`& "flat" .row &`\*%\`& "natural" .row &`\*u\`& "moves up by 0.2 times the music font's size" .row &`\*d\`& "moves down by 0.2 times the music font's size" .row &`\*l\`& "moves left by 0.33 times the music font's size" .row &`\*r\`& "moves right by 0.55 times the music font's size" .row &`\*<\`& "moves left by 0.1 times the music font's size" .row &`\*>\`& "moves right by 0.1 times the music font's size" .endtable Musical escapes with a single asterisk use a font whose size is 9/10 that of the surrounding text. A double asterisk uses a full size font. .itable none 0 0 2 60 left 300 left .row &`\`&<&'n'&>&`\`& "character number <&'n'&> from the current font" .row &`\*`&<&'n'&>&`\`& "character number <&'n'&> from the 9/10 music font" .row &`\**`&<&'n'&>&`\`& "character number <&'n'&> from the full sized music font" .row &`\s`&<&'n'&>&`\`& "character number <&'n'&> from the Symbol font" .endtable The character number can be given as a decimal number, or as a hexadecimal number preceded by &`x`&, for example &`\*109\`& or &`\x20ac\`&. .itable none 0 0 2 60 left 300 left .row &`\rm\`& "change to roman type" .row &`\it\`& "change to italic type" .row &`\bf\`& "change to bold face type" .row &`\bi\`& "change to bold-italic type" .row &`\sc\`& "change to a small caps font size" .row &`\sy\`& "change to the symbol font" .row &`\mu\`& "change to the music font at 9/10 size" .row &`\mf\`& "change to the music font at full size" .row &`\xx1\`& "change to the first extra font" .row &~&~... .row &`\xx12\`& "change to the twelfth extra font" .endtable Extra fonts are defined in the header by the &%textfont%& directive. .section "Underlay strings" These characters are treated specially in underlay strings: .itable none 0 0 2 60 left 360 left .row &`-`& "end of syllable in mid-word" .row &`=`& "continue syllable over additional note" .row &`#`& "convert to space; doesn't terminate a word" .row &`^`& "centre only characters to the left of this or between two &`^`& characters" .endtable .section "Bracketed stave directives" These directives occur in square brackets interspersed in among the notes and rests: .itable none 0 0 2 160 left 250 left .row "&`[\!\]`&" "repeat accent movement" .row "&`[\.\]`&" "repeat staccato" .row "&`[\..\]`&" "repeat staccatissimo" .row "&`[\-\]`&" "repeat accent" .row "&`[\>\]`&" "repeat horizontal wedge accent" .row "&`[\v\]`&" "repeat small vertical wedge accent" .row "&`[\V\]`&" "repeat large vertical wedge accent" .row "&`[\'\]`&" "repeat `start of bar' accent" .row "&`[\d\]`&" "repeat string down bow" .row "&`[\u\]`&" "repeat string up bow" .row "&`[\o\]`&" "repeat harmonic ring" .row "&`[\a`&<&'n'&>&`\]`&" "repeat accent <&'n'&>" .row "&`[\/\]`&" "repeat single tremolo" .row "&`[\//\]`&" "repeat double tremolo" .row "&`[\///\]`&" "repeat triple tremolo" .row "&`[\\]`&" "no repeated marks" .row "&`[`&<&'n'&&`>]`&" "specify repeated input bars" .row "&`[1st]`&" "first time bar" .row "&`[2nd]`&" "second time bar" .row "&`[3rd]`&" "third time bar" .row "&`[`&<&'n'&>&`th]`&" "<&'n'&>th time bar" .row "&`[""`&&'text'&&`""/`&&'options'&&`]`&" "rehearsal mark" .row " " .row "&`[all]`&" "end 1st/2nd time bars" .row "&`[alto `&<&'octave'&>&`]`&" "select alto clef" .row "&`[assume `&<&'setting'&>&`]`&" "assume key, time, or clef" .row "&`[backup]`&" "backup to previous note in bar" .row "&`[baritone `&<&'octave'&>&`]`&" "select baritone clef" .row "&`[barlinestyle `&<&'n'&>&`]`&" "select bar line style for stave" .row "&`[barnumber`&<&'/options'&>&`]`&" "explicit bar number" .row "&`[barnumber off]`&" "suppress bar number" .row "&`[bass `&<&'octave'&>&`]`&" "select bass clef" .row "&`[beamacc]`&" "next beam is an accelerando beam" .row "&`[beammove `&<&'n'&>&`]`&" "move next beam vertically" .row "&`[beamrit]`&" "next beam is a ritardando beam" .row "&`[beamslope `&<&'n'&>&`]`&" "force slope of next beam" .row "&`[bottommargin `&<&'n'&>&`]`&" "bottom margin for this page" .row "&`[bowing above]`&" "bowing marks above" .row "&`[bowing below]`&" "bowing marks below" .row "&`[breakbarline]`&" "break one bar line on one stave" .row "&`[c]`&" "synonym for &`[noteheads circular]`&" .row "&`[cbaritone `&<&'octave'&>&`]`&" "select cbaritone clef" .row "&`[comma]`&" "comma pause" .row "&`[contrabass `&<&'octave'&>&`]`&" "select contrabass clef" .row "&`[copyzero `&<&'n'&>&`]`&" "move stave zero material" .row "&`[couple up]`&" "spread music to stave above" .row "&`[couple down]`&" "spread music to stave below" .row "&`[couple off]`&" "no coupling" .row "&`[cue]`&" "specify cue bar" .row "&`[deepbass `&<&'octave'&>&`]`&" "select deep bass clef" .row "&`[dots above]`&" "augmentation dots above" .row "&`[dots below]`&" "augmentation dots below" .row "&`[doublenotes]`&" "double note lengths" .row "&`[draw <&'name'&>]`&" "obey a drawing definition" .row "&`[el]`&" "synonym for &`[endline]`&" .row "&`[endcue]`&" "end cue notes before bar end" .row "&`[endline]`&" "end line" .row "&`[endslur]`&" "end long slur" .row "&`[endslur/=`&<&'char'&>&`]`&" "end tagged long slur" .row "&`[es]`&" "synonym for &`[endslur]`&" .row "&`[endstave]`&" "end of this stave" .row "&`[ensure `&<&'n'&>&`]`&" "ensure space between notes" .row "&`[fbfont `&<&'name'&>&`]`&" "set default figured bass font" .row "&`[fbtextsize `&<&'n'&>&`]`&" "default size for figured bass text" .row "&`[footnote ""`&&'string'&&`""]`&" "define footnote; see &%heading%& for extended arguments" .row "&`[h]`&" "synonym for &`[noteheads harmonic]`&" .row "&`[hairpins above]`&" "put hairpins above" .row "&`[hairpins below]`&" "put hairpins below" .row "&`[hairpins middle]`&" "centre hairpins between two staves" .row "&`[hairpinwidth `&<&'n'&>&`]`&" "set hairpinwidth for this stave" .row "&`[halvenotes]`&" "halve note lengths " .row "&`[hclef `&<&'octave'&>&`]`&" "select percussion H-clef" .row "&`[justify +`&<&'edge'&>&`]`&" "add to justification edges" .row "&`[justify -`&<&'edge'&>&`]`&" "take away a justification edge" .row "&`[key `&<&'key signature'&>&`]`&" "set key signature" .row "&`[line/`&<&'options'&>&`]`&" "line above/below notes" .row "&`[linegap/`&<&'options'&>&`]`&" "leave gap in line" .row "&`[mezzo `&<&'octave'&>&`]`&" "select mezzo-soprano clef" .row "&`[midichannel `&<&'n'&>&`]`&" "change MIDI channel" .row "&`[midipitch ""`&&'name'&&`""]`&" "change MIDI percussion pitch" .row "&`[miditranspose `&<&'n'&>&`]`&" "change MIDI transposition" .row "&`[midivoice ""`&&'name'&&`""]`&" "change MIDI voice" .row "&`[midivolume `&<&'n'&>&`]`&" "set relative MIDI volume" .row "&`[move `&<&'n'&>&`]`&" "move next item horizontally" .row "&`[move `&<&'n'&>&`,`&<&'m'&>&`]`&" "ditto horizontally && vertically" .row "&`[name ""`&&'string'&&`""`& ...&`]`&" "specify stave start text(s)" .row "&`[name `&<&'n'&>&`]`&" "select stave start text" .row "&`[newline]`&" "force new line of music" .row "&`[newmovement `&<&'option'&>&`]`&" "start new movement" .row "&`[newpage]`&" "force new page of music" .row "&`[nocheck]`&" "don't check this bar's length" .row "&`[noclef `&<&'octave'&>&`]`&" "select invisible treble clef" .row "&`[nocount]`&" "don't count this bar for numbering" .row "&`[noteheads `&<&'style'&>&`]`&" "select notehead shape" .row "&`[notes on]`&" "turn on notes" .row "&`[notes off]`&" "turn off notes" .row "&`[notespacing *`&<&'n'&>&`]`&" "adjust note spacing" .row "&`[notespacing `&<&'n'&>&` `&<&'n'&> ...&`]`&" "adjust note spacing" .row "&`[ns]`&" "synonym for &`[notespacing]`&" .row "&`[o]`&" "synonym for &`[noteheads normal]`&" .row "&`[octave `&<&'n'&>&`]`&" "set transposition octave" .row "&`[olevel `&<&'n'&>&`]`&" "force overlay level" .row "&`[olevel *]`&" "revert to automatic overlay level" .row "&`[olhere `&<&'n'&>&`]`&" "adjust overlay level for this system" .row "&`[oltextsize `&<&'n'&>&`]`&" "set text size for overlay" .row "&`[overdraw ...]`&" "as &`[draw]`& but done last" .row "&`[overlayfont `&<&'name'&>&`]`&" "set default overlay font" .row "&`[page `&<&'n'&>&`]`&" "increase page number to <&'n'&>" .row "&`[page +`&<&'n'&>&`]`&" "increase page number by <&'n'&>" .row "&`[printpitch `&<&'note'&>&`]`&" "force display pitch" .row "&`[reset]`&" "reset position to bar start" .row "&`[resume]`&" "resume stave" .row "&`[rlevel `&<&'n'&>&`]`&" "set rest level" .row "&`[rmove ...]`&" "as &`[move]`& but scale horizontally" .row "&`[rsmove ...]`&" "as &`[smove]`& but scale horizontally" .row "&`[rspace `&<&'n'&>&`]`&" "as &`[space]`& but scale horizontally" .row "&`[sgabove `&<&'n'&>&`]`&" "set system gap for previous system" .row "&`[sghere `&<&'n'&>&`]`&" "set system gap for this system" .row "&`[sgnext `&<&'n'&>&`]`&" "set system gap for next system" .row "&`[skip `&<&'n'&>&`]`&" "skip <&'n'&> bars" .row "&`[sl]`&" "synonym for &`[stemlength]`&" .row "&`[slur/`&<&'options'&>&`]`&" "start long slur" .row "&`[slurgap/`&<&'options'&>&`]`&" "leave gap in slur" .row "&`[smove ...]`&" "combined &`[move]`& and &`[space]`&" .row "&`[soprabass `&<&'octave'&>&`]`&" "select soprabass clef" .row "&`[soprano `&<&'octave'&>&`]`&" "select soprano clef" .row "&`[space `&<&'n'&>&`]`&" "insert space before next note" .row "&`[ssabove `&<&'n'&>&`]`&" "set ensured stave spacing for this system" .row "&`[sshere `&<&'n'&>&`]`&" "set stave spacing for this system" .row "&`[ssnext `&<&'n'&>&`]`&" "set stave spacing for next system" .row "&`[stave `&<&'n'&>&` ...]`&" "start new stave" .row "&`[stemlength `&<&'n'&>&`]`&" "set default stemlengh adjustment" .row "&`[stems `&<&'direction'&>&`]`&" "force/unforce stem direction" .row "&`[stems `&<&'alignment'&>&`]`&" "set/unset centralized stems" .row "&`[suspend]`&" "suspend stave at next system" .row "&`[tenor `&<&'octave'&>&`]`&" "select tenor clef" .row "&`[text `&<&'name'&>&`]`&" "select default text type" .row "&`[textfont `&<&'name'&>&`]`&" "set default text font" .row "&`[textsize `&<&'n'&>&`]`&" "set default text size" .row "&`[tick]`&" "tick pause" .row "&`[ties `&<&'direction'&>&`]`&" "force/unforce tie direction" .row "&`[time `&<&'time signature'&>&`]`&" "set time signature" .row "&`[time `&<&'sig1'&>&` -> `&<&'sig2'&>&`]`&" "scale to other signature" .row "&`[topmargin `&<&'n'&>&`]`&" "set top margin for current page" .row "&`[transpose `&<&'n'&>&`]`&" "set transposition" .row "&`[transposedacc force]`&" "show cautionary accidentals" .row "&`[transposedacc noforce]`&" "don't show cautionary accidentals" .row "&`[treble `&<&'octave'&>&`]`&" "select treble clef" .row "&`[trebledescant `&<&'octave'&>&`]`&" "select trebledescant clef" .row "&`[trebletenor `&<&'octave'&>&`]`&" "select trebletenor clef" .row "&`[trebletenorB `&<&'octave'&>&`]`&" "select trebletenorB clef" .row "&`[tremolo]`&" "tremolo between notes" .row "&`[tripletize off]`&" "disable tripletizing" .row "&`[tripletize on]`&" "treat certain groups as triplets (`&`on`&' is optional)" .row "&`[triplets off]`&" "don't show triplet indications" .row "&`[triplets on]`&" "show triplet indications" .row "&`[triplets `&<&'options'&>&`]`&" "control triplet format" .row "&`[ulevel `&<&'n'&>&`]`&" "force underlay level" .row "&`[ulevel *]`&" "revert to automatic underlay level" .row "&`[ulhere `&<&'n'&>&`]`&" "adjust underlay level for this system" .row "&`[ultextsize `&<&'n'&>&`]`&" "set text size for underlay" .row "&`[unbreakbarline]`&" "join one barline to next stave" .row "&`[underlayfont `&<&'name'&>&`]`&" "set default underlay font" .row "&`[x]`&" "synonym for &`[noteheads cross]`&" .row "&`[xline]`&" "crossing line" .row "&`[xslur `&<&'args'&>&`]`&" "crossing slur" .row "&`[z]`&" "synonym for &`[noteheads none]`&" .endtable .section "Slur options" .itable none 0 0 2 80 left 200 left .row &`/=`&<&'char'&> "specify tagged slur" .row &`/a`& "slur above (default)" .row &`/a`&<&'n'&> "above, at fixed position" .row &`/ao`& "above, at overlay level" .row &`/b`& "slur below" .row &`/b`&<&'n'&> "below, at fixed position" .row &`/bu`& "below, at underlay level" .row &`/e`& "editorial (crossed) slur" .row &`/h`& "force horizontal slur" .row &`/i`& "intermittent (dashed) slur" .row &`/ip`& "intermittent point (dotted) slur" .row &`/`&<&'n'&> "following options apply only to section <&'n'&>" .row " " .row &`/ll`&<&'n'&> "move the left end left by <&'n'&> points" .row &`/lr`&<&'n'&> "move the left end right by <&'n'&> points" .row &`/rl`&<&'n'&> "move the right end left by <&'n'&> points" .row &`/rr`&<&'n'&> "move the right end right by <&'n'&> points" .row " " .row &`/llc`&<&'n'&> "move the left end left by <&'n'&> crotchets" .row &`/lrc`&<&'n'&> "move the left end right by <&'n'&> crotchets" .row &`/rlc`&<&'n'&> "move the right end left by <&'n'&> crotchets" .row &`/rrc`&<&'n'&> "move the right end right by <&'n'&> crotchets" .row &`/cx`& "&`/rlc`& and &`/rrc`& are relative to next note" .row " " .row &`/u`&<&'n'&> "raise the entire slur by <&'n'&> points" .row &`/d`&<&'n'&> "lower the entire slur by <&'n'&> points" .row &`/lu`&<&'n'&> "raise the left end by <&'n'&> points" .row &`/ld`&<&'n'&> "lower the left end by <&'n'&> points" .row &`/ru`&<&'n'&> "raise the right end by <&'n'&> points" .row &`/rd`&<&'n'&> "lower the right end by <&'n'&> points" .row &`/ci`&<&'n'&> "move the centre in by <&'n'&> points" .row &`/co`&<&'n'&> "move the centre out by <&'n'&> points" .row " " .row &`/clu`&<&'n'&> "move left control point up <&'n'&> points" .row &`/cld`&<&'n'&> "move left control point down <&'n'&> points" .row &`/cll`&<&'n'&> "move left control point left <&'n'&> points" .row &`/clr`&<&'n'&> "move left control point right <&'n'&> points" .row &`/cru`&<&'n'&> "move right control point up <&'n'&> points" .row &`/crd`&<&'n'&> "move right control point down <&'n'&> points" .row &`/crl`&<&'n'&> "move right control point left <&'n'&> points" .row &`/crr`&<&'n'&> "move right control point right <&'n'&> points" .endtable Most of the options for slurs also apply to lines over groups of notes, as they are just a different kind of `slur' to PMW. The options for moving the Bézier curve control points are not relevant to lines, but &`/co`& and &`/ci`& have the effect of changing the length of the `jogs'. In addition, lines can take the following options: .itable none 0 0 2 80 left 200 left .row &`/ol`& "requests that the line be `open on the left'" .row &`/or`& "requests that the line be `open on the right'" .endtable .section "Default values" .index "default" "list of values" .itable none 0 0 2 150 left 200 left .row "Bar length check" "enabled" .row "Bar lines" "solid through system" .row "Beam flag length" "5" .row "Beam thickness" "1.8" .row "Bottom margin" "0" .row "Bracket/brace" "bracket whole system" .row "Breve rests" "not used" .row "Caesura style" "two strokes" .row "Clef" "treble" .row "Clef size" "1.0" .row "Dot space factor" "1.2" .row "Figured base size" "10 points" .row "First page number" "1" .row "Font family" "Times" .row "Footnote separation" "4 points" .row "Grace size" "7 points" .row "Grace spacing" "6 points" .row "Hairpin line width" "0.2 points" .row "Hairpin width" "7 points" .row "Heading type sizes" .row "&~&~&~first heading" "17, 12, 10, 8" .row "&~&~&~movement heading" "12, 10, 8" .row "Hyphen string" "one hyphen character" .row "Hyphen threshold" "50 points" .row "Justify" "top bottom left right" .row "Key" "C major" .row "Key warnings" "enabled" .row "Left margin" "computed for centring" .row "Line length" "480" .row "Long rest font size" "10" .row "Magnification" "1.0" .row "Note spacing" "30 30 22 16 12 10 10 10" .row "Note stem direction" "automatically chosen" .row "Note style" "with stems" .row "Overlay depth" "11 points" .row "Overlay size" "10 points" .row "Page length" "720" .row "Repeat bar font size" "10" .row "Repeat style" "standard" .row "Sheet depth" "900 points" .row "Sheet size" "A4" .row "Sheet width" "608 points" .row "Small cap size" "0.7" .row "Stave spacing" "44 points" .row "Stave style" "five-line" .row "System gap" "44 points" .row "Text size" "10 points" .row "Time signature" "4/4" .row "Time signatures" "shown" .row "Time signature warnings" "enabled" .row "Top margin" "10" .row "Trill string" "&{ˆ}&" .row "Triplet font" "roman" .row "Triplet size" "10 points" .row "Transposition" "none" .row "Underlay depth" "11 points" .row "Underlay size" "10 points" .endtable . //////////////////////////////////////////////////////////////////////////// . //////////////////////////////////////////////////////////////////////////// .appendix "Reading MusicXML files" "APPA" .index "MusicXML" "input files" The ability to read MusicXML input in addition to PMW's own input format was added in release 5.10. However, this is highly experimental and is currently very incomplete (and probably quite buggy). Please do not expect great things of it. There is a particular problem with MusicXML parts that use two or more staves. PMW can mostly handle a treble/bass clef pair if the notes are straightforward, but MusicXML examples exist which do weird things such as ending a slur on one stave before starting it on another after `backing up'. This particular case causes PMW to give an error, but in other situations the result is just crazy output. The MusicXML-reading code is an optional part of PMW. To use it you must add &`--enable-musicxml`& when running &`./configure`& before building PMW. When this is not done, MusicXML files are still recognized as such, but cannot be processed and so cause a hard error. There are two situations in which MusicXML files are recognized: .ilist If the first line of PMW's input file begins with &`>&) begins with &` .literal off . ///////////////////////////////////////////////////////////////////////////// . ///////////////////////////////////////////////////////////////////////////// .makeindex "Index" . ///////////////////////////////////////////////////////////////////////////// . ///////////////////////////////////////////////////////////////////////////// pmw-5.22/doc/Cygwin.txt0000644000222100022210000000545214541067540013115 0ustar ph10ph10 PMW with Microsoft Windows Neil Killeen, April 2008 ------------------------------ 1. Unix environment 1.1 Install the Cygwin (http://www.cygwin.com) Linux environment for windows (by downloading and running the Cygwin setup tool) Take note of the location where the Unix user home directory is located (under the "home" folder of the cygwin installation tree). 1.2 When you run the setup tool, suggest your first pass is the default packages selection 1.3 Run the setup tool again, this time selecting the following packages - gcc, make (Category "Devel") - ghostscript 2. Run cygwin 2.1 Use the desktop shortcut or Start menu 2.2 This will start a Unix terminal running the bash shell. Use standard Unix commands within it 2.3 The default location when this terminal starts is your Unix home directory (see 1.1) 3. Install pmw. 3.1 Use your Windows web browser to download the pmw tar ball (e.g. pmw.4.12.tar.gz) 3.2 Using the Unix terminal, create a directory for the pmw installation % cd ~ % mkdir pmw 3.3 Use the Windows file browser to move the downloaded tar ball into the Unix pmw directory you just created 3.4 Unpack pmw % cd ~/pmw % gunzip pmw-4.12.tar.gz % tar xvf pmw-4.12.tar % cd pmw-4.12 3.5 Follow the PMW Unix install instructions % ./configure % make % make install By default, pmw will be found in /usr/local 3.6 The binary will be called "pmw.exe" and it will be in your Unix PATH by default 4. Test the installation by trying to build one of the test source files in the pmw distribution tree % cd ~/pmw/pmw-4.12/testdist/infiles % pmw.exe -incPMWfont Test01 Note you must provide the -incPMWfont argument to get sensible output, which will be called Test01.ps (a postscript file) 5. Optionally convert postscript file to pdf 6.1 You may prefer to convert to pdf format rather than deal with postscript. 6.2 You can do this with the eps2pdf application in your Cygwin termninal. You can must install the Cygwin ghostscript package to make this application available. % ps2pdf Test01.ps 6. View pdf or postscript file. 6.1 Use the Windows file browser to navigate to the directory where the postscript or pdf file resides. 6.2 If the file is postscript, the Ghostview/Ghostscript application can be used to view the postscript file. You can download and install these (two separate Windows apps) from http://pages.cs.wisc.edu/~ghost 6.3 If the file is pdf, you can view this with Adobe Acrobat Reader or some other pdf viewer