#!/usr/bin/env ruby # encoding: ASCII-8BIT # # Created by Brent Rowland on 2007-08-26. # Copyright (c) 2007, Eidetic Software. All rights reserved. module EideticPDF VERSION = '1.0.0' module PdfK # :nodoc: FONT_WIDTHS = [ [ # 0 Helvetica 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 278, 278, 355, 556, 556, 889, 667, 191, # 30 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, # 40 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, # 50 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, # 60 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, # 70 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, # 80 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, # 90 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, # 100 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, # 110 500, 500, 500, 334, 260, 334, 584, 350, 558, 350, # 120 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, # 130 1000, 350, 611, 350, 350, 222, 222, 333, 333, 350, # 140 556, 1000, 333, 1000, 500, 333, 944, 350, 500, 667, # 150 278, 333, 556, 556, 556, 556, 260, 556, 333, 737, # 160 370, 556, 584, 333, 737, 333, 333, 584, 333, 333, # 170 333, 556, 537, 278, 333, 333, 365, 556, 834, 834, # 180 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, # 190 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, # 200 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, # 210 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, # 220 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, # 230 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, # 240 556, 556, 556, 500, 556, 500], # 250 [ # 1 Helvetica-Bold 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 278, 333, 474, 556, 556, 889, 722, 238, # 30 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, # 40 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, # 50 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, # 60 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, # 70 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, # 80 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, # 90 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, # 100 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, # 110 556, 556, 500, 389, 280, 389, 584, 350, 558, 350, # 120 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, # 130 1000, 350, 611, 350, 350, 278, 278, 500, 500, 350, # 140 556, 1000, 333, 1000, 556, 333, 944, 350, 500, 667, # 150 278, 333, 556, 556, 556, 556, 280, 556, 333, 737, # 160 370, 556, 584, 333, 737, 333, 333, 584, 333, 333, # 170 333, 611, 556, 278, 333, 333, 365, 556, 834, 834, # 180 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, # 190 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, # 200 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, # 210 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, # 220 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, # 230 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, # 240 611, 611, 611, 556, 611, 556], # 250 [ # 2 Helvetica-Oblique 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 278, 278, 355, 556, 556, 889, 667, 191, # 30 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, # 40 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, # 50 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, # 60 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, # 70 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, # 80 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, # 90 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, # 100 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, # 110 500, 500, 500, 334, 260, 334, 584, 350, 558, 350, # 120 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, # 130 1000, 350, 611, 350, 350, 222, 222, 333, 333, 350, # 140 556, 1000, 333, 1000, 500, 333, 944, 350, 500, 667, # 150 278, 333, 556, 556, 556, 556, 260, 556, 333, 737, # 160 370, 556, 584, 333, 737, 333, 333, 584, 333, 333, # 170 333, 556, 537, 278, 333, 333, 365, 556, 834, 834, # 180 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, # 190 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, # 200 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, # 210 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, # 220 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, # 230 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, # 240 556, 556, 556, 500, 556, 500], # 250 [ # 3 Helvetica-BoldOblique 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 278, 333, 474, 556, 556, 889, 722, 238, # 30 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, # 40 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, # 50 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, # 60 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, # 70 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, # 80 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, # 90 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, # 100 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, # 110 556, 556, 500, 389, 280, 389, 584, 350, 558, 350, # 120 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, # 130 1000, 350, 611, 350, 350, 278, 278, 500, 500, 350, # 140 556, 1000, 333, 1000, 556, 333, 944, 350, 500, 667, # 150 278, 333, 556, 556, 556, 556, 280, 556, 333, 737, # 160 370, 556, 584, 333, 737, 333, 333, 584, 333, 333, # 170 333, 611, 556, 278, 333, 333, 365, 556, 834, 834, # 180 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, # 190 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, # 200 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, # 210 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, # 220 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, # 230 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, # 240 611, 611, 611, 556, 611, 556], # 250 [ # 4 Times-Roman 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 250, 333, 408, 500, 500, 833, 778, 180, # 30 333, 333, 500, 564, 250, 333, 250, 278, 500, 500, # 40 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, # 50 564, 564, 564, 444, 921, 722, 667, 667, 722, 611, # 60 556, 722, 722, 333, 389, 722, 611, 889, 722, 722, # 70 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, # 80 611, 333, 278, 333, 469, 500, 333, 444, 500, 444, # 90 500, 444, 333, 500, 500, 278, 278, 500, 278, 778, # 100 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, # 110 500, 500, 444, 480, 200, 480, 541, 350, 500, 350, # 120 333, 500, 444, 1000, 500, 500, 333, 1000, 556, 333, # 130 889, 350, 611, 350, 350, 333, 333, 444, 444, 350, # 140 500, 1000, 333, 980, 389, 333, 722, 350, 444, 722, # 150 250, 333, 500, 500, 500, 500, 200, 500, 333, 760, # 160 276, 500, 564, 333, 760, 333, 333, 564, 300, 300, # 170 333, 500, 453, 250, 333, 300, 310, 500, 750, 750, # 180 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, # 190 611, 611, 611, 611, 333, 333, 333, 333, 722, 722, # 200 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, # 210 722, 722, 556, 500, 444, 444, 444, 444, 444, 444, # 220 667, 444, 444, 444, 444, 444, 278, 278, 278, 278, # 230 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, # 240 500, 500, 500, 500, 500, 500], # 250 [ # 5 Times-Bold 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 250, 333, 555, 500, 500, 1000, 833, 278, # 30 333, 333, 500, 570, 250, 333, 250, 278, 500, 500, # 40 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, # 50 570, 570, 570, 500, 930, 722, 667, 722, 722, 667, # 60 611, 778, 778, 389, 500, 778, 667, 944, 722, 778, # 70 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, # 80 667, 333, 278, 333, 581, 500, 333, 500, 556, 444, # 90 556, 444, 333, 500, 556, 278, 333, 556, 278, 833, # 100 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, # 110 500, 500, 444, 394, 220, 394, 520, 350, 500, 350, # 120 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, # 130 1000, 350, 667, 350, 350, 333, 333, 500, 500, 350, # 140 500, 1000, 333, 1000, 389, 333, 722, 350, 444, 722, # 150 250, 333, 500, 500, 500, 500, 220, 500, 333, 747, # 160 300, 500, 570, 333, 747, 333, 333, 570, 300, 300, # 170 333, 556, 540, 250, 333, 300, 330, 500, 750, 750, # 180 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, # 190 667, 667, 667, 667, 389, 389, 389, 389, 722, 722, # 200 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, # 210 722, 722, 611, 556, 500, 500, 500, 500, 500, 500, # 220 722, 444, 444, 444, 444, 444, 278, 278, 278, 278, # 230 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, # 240 556, 556, 556, 500, 556, 500], # 250 [ # 6 Times-Italic 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 250, 333, 420, 500, 500, 833, 778, 214, # 30 333, 333, 500, 675, 250, 333, 250, 278, 500, 500, # 40 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, # 50 675, 675, 675, 500, 920, 611, 611, 667, 722, 611, # 60 611, 722, 722, 333, 444, 667, 556, 833, 667, 722, # 70 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, # 80 556, 389, 278, 389, 422, 500, 333, 500, 500, 444, # 90 500, 444, 278, 500, 500, 278, 278, 444, 278, 722, # 100 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, # 110 444, 444, 389, 400, 275, 400, 541, 350, 500, 350, # 120 333, 500, 556, 889, 500, 500, 333, 1000, 500, 333, # 130 944, 350, 556, 350, 350, 333, 333, 556, 556, 350, # 140 500, 889, 333, 980, 389, 333, 667, 350, 389, 556, # 150 250, 389, 500, 500, 500, 500, 275, 500, 333, 760, # 160 276, 500, 675, 333, 760, 333, 333, 675, 300, 300, # 170 333, 500, 523, 250, 333, 300, 310, 500, 750, 750, # 180 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, # 190 611, 611, 611, 611, 333, 333, 333, 333, 722, 667, # 200 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, # 210 722, 556, 611, 500, 500, 500, 500, 500, 500, 500, # 220 667, 444, 444, 444, 444, 444, 278, 278, 278, 278, # 230 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, # 240 500, 500, 500, 444, 500, 444], # 250 [ # 7 Times-BoldItalic 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 250, 389, 555, 500, 500, 833, 778, 278, # 30 333, 333, 500, 570, 250, 333, 250, 278, 500, 500, # 40 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, # 50 570, 570, 570, 500, 832, 667, 667, 667, 722, 667, # 60 667, 722, 778, 389, 500, 667, 611, 889, 722, 722, # 70 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, # 80 611, 333, 278, 333, 570, 500, 333, 500, 500, 444, # 90 500, 444, 333, 500, 556, 278, 278, 500, 278, 778, # 100 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, # 110 500, 444, 389, 348, 220, 348, 570, 350, 500, 350, # 120 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, # 130 944, 350, 611, 350, 350, 333, 333, 500, 500, 350, # 140 500, 1000, 333, 1000, 389, 333, 722, 350, 389, 611, # 150 250, 389, 500, 500, 500, 500, 220, 500, 333, 747, # 160 266, 500, 606, 333, 747, 333, 333, 570, 300, 300, # 170 333, 576, 500, 250, 333, 300, 300, 500, 750, 750, # 180 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, # 190 667, 667, 667, 667, 389, 389, 389, 389, 722, 722, # 200 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, # 210 722, 611, 611, 500, 500, 500, 500, 500, 500, 500, # 220 722, 444, 444, 444, 444, 444, 278, 278, 278, 278, # 230 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, # 240 556, 556, 556, 444, 500, 444], # 250 [ # 8 Courier 600, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 600, 600, 600, 600, 600, 600, 600, 600, # 30 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 40 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 50 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 60 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 70 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 80 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 90 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 100 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 110 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 120 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 130 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 140 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 150 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 160 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 170 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 180 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 190 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 200 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 210 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 220 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 230 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 240 600, 600, 600, 600, 600, 600], # 250 [ # 9 Courier-Bold 600, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 600, 600, 600, 600, 600, 600, 600, 600, # 30 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 40 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 50 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 60 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 70 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 80 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 90 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 100 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 110 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 120 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 130 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 140 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 150 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 160 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 170 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 180 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 190 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 200 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 210 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 220 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 230 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 240 600, 600, 600, 600, 600, 600], # 250 [ # 10 Courier-Oblique } 600, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 600, 600, 600, 600, 600, 600, 600, 600, # 30 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 40 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 50 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 60 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 70 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 80 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 90 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 100 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 110 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 120 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 130 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 140 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 150 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 160 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 170 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 180 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 190 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 200 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 210 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 220 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 230 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 240 600, 600, 600, 600, 600, 600], # 250 [ # 11 Courier-BoldOblique } 600, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 600, 600, 600, 600, 600, 600, 600, 600, # 30 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 40 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 50 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 60 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 70 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 80 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 90 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 100 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 110 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 120 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 130 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 140 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 150 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 160 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 170 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 180 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 190 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 200 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 210 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 220 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 230 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, # 240 600, 600, 600, 600, 600, 600], # 250 [ # 12 Symbol --- This is in StandardEncoding 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 250, 333, 713, 500, 549, 833, 778, 439, # 30 333, 333, 500, 549, 250, 549, 250, 278, 500, 500, # 40 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, # 50 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, # 60 763, 603, 722, 333, 631, 722, 686, 889, 722, 722, # 70 768, 741, 556, 592, 611, 690, 439, 768, 645, 795, # 80 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, # 90 494, 439, 521, 411, 603, 329, 603, 549, 549, 576, # 100 521, 549, 549, 521, 549, 603, 439, 576, 713, 686, # 110 493, 686, 494, 480, 200, 480, 549, 0, 0, 0, # 120 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 150 0, 620, 247, 549, 167, 713, 500, 753, 753, 753, # 160 753, 1042, 987, 603, 987, 603, 400, 549, 411, 549, # 170 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, # 180 1000, 658, 823, 686, 795, 987, 768, 768, 823, 768, # 190 768, 713, 713, 713, 713, 713, 713, 713, 768, 713, # 200 790, 790, 890, 823, 549, 250, 713, 603, 603, 1042, # 210 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, # 220 384, 384, 384, 384, 384, 384, 494, 494, 494, 494, # 230 0, 329, 274, 686, 686, 686, 384, 384, 384, 384, # 240 384, 384, 494, 494, 494, 0], # 250 [ # 13 ZapfDingbats --- This is in StandardEncoding 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 278, 974, 961, 974, 980, 719, 789, 790, # 30 791, 690, 960, 939, 549, 855, 911, 933, 911, 945, # 40 974, 755, 846, 762, 761, 571, 677, 763, 760, 759, # 50 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, # 60 793, 794, 816, 823, 789, 841, 823, 833, 816, 831, # 70 923, 744, 723, 749, 790, 792, 695, 776, 768, 792, # 80 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, # 90 687, 696, 689, 786, 787, 713, 791, 785, 791, 873, # 100 761, 762, 762, 759, 759, 892, 892, 788, 784, 438, # 110 138, 277, 415, 392, 392, 668, 668, 0, 0, 0, # 120 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 150 0, 732, 544, 544, 910, 667, 760, 760, 776, 595, # 160 694, 626, 788, 788, 788, 788, 788, 788, 788, 788, # 170 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, # 180 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, # 190 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, # 200 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918, # 210 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, # 220 931, 463, 883, 836, 836, 867, 867, 696, 696, 874, # 230 0, 874, 760, 946, 771, 865, 771, 888, 967, 888, # 240 831, 873, 927, 970, 918, 0], # 250 [ # 14 AvantGarde-Book 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 277, 295, 309, 554, 554, 775, 757, 198, # 30 369, 369, 425, 606, 277, 332, 277, 437, 554, 554, # 40 554, 554, 554, 554, 554, 554, 554, 554, 277, 277, # 50 606, 606, 606, 591, 867, 740, 574, 813, 744, 536, # 60 485, 872, 683, 226, 482, 591, 462, 919, 740, 869, # 70 592, 871, 607, 498, 426, 655, 702, 960, 609, 592, # 80 480, 351, 605, 351, 606, 500, 378, 683, 682, 647, # 90 685, 650, 314, 673, 610, 200, 203, 502, 200, 938, # 100 610, 655, 682, 682, 301, 388, 339, 608, 554, 831, # 110 480, 536, 425, 351, 672, 351, 606, 606, 558, 606, # 120 354, 554, 502, 1000, 553, 553, 502, 1174, 498, 251, # 130 1194, 606, 480, 606, 606, 351, 351, 502, 484, 606, # 140 500, 1000, 439, 1000, 388, 251, 1137, 606, 425, 592, # 150 277, 295, 554, 554, 554, 554, 672, 615, 369, 747, # 160 369, 425, 606, 332, 747, 485, 332, 606, 332, 332, # 170 375, 608, 564, 277, 324, 332, 369, 425, 831, 831, # 180 831, 591, 740, 740, 740, 740, 740, 740, 992, 813, # 190 536, 536, 536, 536, 226, 226, 226, 226, 790, 740, # 200 869, 869, 869, 869, 869, 606, 868, 655, 655, 655, # 210 655, 592, 592, 554, 683, 683, 683, 683, 683, 683, # 220 1157, 647, 650, 650, 650, 650, 200, 200, 200, 200, # 230 655, 610, 655, 655, 655, 655, 655, 606, 653, 608, # 240 608, 608, 608, 536, 682, 536], # 250 [ # 15 AvantGarde-BookOblique 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 277, 295, 309, 554, 554, 775, 757, 198, # 30 369, 369, 425, 606, 277, 332, 277, 437, 554, 554, # 40 554, 554, 554, 554, 554, 554, 554, 554, 277, 277, # 50 606, 606, 606, 591, 867, 740, 574, 813, 744, 536, # 60 485, 872, 683, 226, 482, 591, 462, 919, 740, 869, # 70 592, 871, 607, 498, 426, 655, 702, 960, 609, 592, # 80 480, 351, 605, 351, 606, 500, 378, 683, 682, 647, # 90 685, 650, 314, 673, 610, 200, 203, 502, 200, 938, # 100 610, 655, 682, 682, 301, 388, 339, 608, 554, 831, # 110 480, 536, 425, 351, 672, 351, 606, 606, 558, 606, # 120 354, 554, 502, 1000, 553, 553, 502, 1174, 498, 251, # 130 1194, 606, 480, 606, 606, 351, 351, 502, 484, 606, # 140 500, 1000, 439, 1000, 388, 251, 1137, 606, 425, 592, # 150 277, 295, 554, 554, 554, 554, 672, 615, 369, 747, # 160 369, 425, 606, 332, 747, 485, 332, 606, 332, 332, # 170 375, 608, 564, 277, 324, 332, 369, 425, 831, 831, # 180 831, 591, 740, 740, 740, 740, 740, 740, 992, 813, # 190 536, 536, 536, 536, 226, 226, 226, 226, 790, 740, # 200 869, 869, 869, 869, 869, 606, 868, 655, 655, 655, # 210 655, 592, 592, 554, 683, 683, 683, 683, 683, 683, # 220 1157, 647, 650, 650, 650, 650, 200, 200, 200, 200, # 230 655, 610, 655, 655, 655, 655, 655, 606, 653, 608, # 240 608, 608, 608, 536, 682, 536], # 250 [ # 16 AvantGarde-Demi 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 280, 280, 360, 560, 560, 860, 680, 220, # 30 380, 380, 440, 600, 280, 420, 280, 460, 560, 560, # 40 560, 560, 560, 560, 560, 560, 560, 560, 280, 280, # 50 600, 600, 600, 560, 740, 740, 580, 780, 700, 520, # 60 480, 840, 680, 280, 480, 620, 440, 900, 740, 840, # 70 560, 840, 580, 520, 420, 640, 700, 900, 680, 620, # 80 500, 320, 640, 320, 600, 500, 420, 660, 660, 640, # 90 660, 640, 280, 660, 600, 240, 260, 580, 240, 940, # 100 600, 640, 660, 660, 320, 440, 300, 600, 560, 800, # 110 560, 580, 460, 340, 600, 340, 600, 600, 558, 600, # 120 280, 560, 480, 1000, 560, 560, 540, 1280, 520, 240, # 130 1060, 600, 500, 600, 600, 280, 280, 480, 480, 600, # 140 500, 1000, 480, 1000, 440, 240, 1080, 600, 460, 620, # 150 280, 280, 560, 560, 560, 560, 600, 560, 500, 740, # 160 360, 460, 600, 420, 740, 420, 360, 600, 336, 336, # 170 420, 576, 600, 280, 340, 336, 360, 460, 840, 840, # 180 840, 560, 740, 740, 740, 740, 740, 740, 900, 780, # 190 520, 520, 520, 520, 280, 280, 280, 280, 742, 740, # 200 840, 840, 840, 840, 840, 600, 840, 640, 640, 640, # 210 640, 620, 560, 600, 660, 660, 660, 660, 660, 660, # 220 1080, 640, 640, 640, 640, 640, 240, 240, 240, 240, # 230 640, 600, 640, 640, 640, 640, 640, 600, 660, 600, # 240 600, 600, 600, 580, 660, 580], # 250 [ # 17 AvantGarde-DemiOblique 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 280, 280, 360, 560, 560, 860, 680, 220, # 30 380, 380, 440, 600, 280, 420, 280, 460, 560, 560, # 40 560, 560, 560, 560, 560, 560, 560, 560, 280, 280, # 50 600, 600, 600, 560, 740, 740, 580, 780, 700, 520, # 60 480, 840, 680, 280, 480, 620, 440, 900, 740, 840, # 70 560, 840, 580, 520, 420, 640, 700, 900, 680, 620, # 80 500, 320, 640, 320, 600, 500, 420, 660, 660, 640, # 90 660, 640, 280, 660, 600, 240, 260, 580, 240, 940, # 100 600, 640, 660, 660, 320, 440, 300, 600, 560, 800, # 110 560, 580, 460, 340, 600, 340, 600, 600, 558, 600, # 120 280, 560, 480, 1000, 560, 560, 540, 1280, 520, 240, # 130 1060, 600, 500, 600, 600, 280, 280, 480, 480, 600, # 140 500, 1000, 480, 1000, 440, 240, 1080, 600, 460, 620, # 150 280, 280, 560, 560, 560, 560, 600, 560, 500, 740, # 160 360, 460, 600, 420, 740, 420, 360, 600, 336, 336, # 170 420, 576, 600, 280, 340, 336, 360, 460, 840, 840, # 180 840, 560, 740, 740, 740, 740, 740, 740, 900, 780, # 190 520, 520, 520, 520, 280, 280, 280, 280, 742, 740, # 200 840, 840, 840, 840, 840, 600, 840, 640, 640, 640, # 210 640, 620, 560, 600, 660, 660, 660, 660, 660, 660, # 220 1080, 640, 640, 640, 640, 640, 240, 240, 240, 240, # 230 640, 600, 640, 640, 640, 640, 640, 600, 660, 600, # 240 600, 600, 600, 580, 660, 580], # 250 [ # 18 Bookman-Demi } 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 340, 360, 420, 660, 660, 940, 800, 240, # 30 320, 320, 460, 600, 340, 360, 340, 600, 660, 660, # 40 660, 660, 660, 660, 660, 660, 660, 660, 340, 340, # 50 600, 600, 600, 660, 820, 720, 720, 740, 780, 720, # 60 680, 780, 820, 400, 640, 800, 640, 940, 740, 800, # 70 660, 800, 780, 660, 700, 740, 720, 940, 780, 700, # 80 640, 300, 600, 300, 600, 500, 400, 580, 600, 580, # 90 640, 580, 380, 580, 680, 360, 340, 660, 340, 1000, # 100 680, 620, 640, 620, 460, 520, 460, 660, 600, 800, # 110 600, 620, 560, 320, 600, 320, 600, 460, 558, 460, # 120 320, 660, 540, 1000, 440, 380, 500, 1360, 660, 220, # 130 1220, 460, 640, 460, 460, 320, 320, 540, 540, 460, # 140 500, 1000, 480, 980, 520, 220, 940, 460, 560, 700, # 150 340, 360, 660, 660, 660, 660, 600, 600, 500, 740, # 160 400, 400, 600, 360, 740, 460, 340, 600, 396, 396, # 170 400, 660, 800, 340, 360, 396, 400, 400, 990, 990, # 180 990, 660, 720, 720, 720, 720, 720, 720, 1140, 740, # 190 720, 720, 720, 720, 400, 400, 400, 400, 780, 740, # 200 800, 800, 800, 800, 800, 600, 800, 740, 740, 740, # 210 740, 700, 660, 660, 580, 580, 580, 580, 580, 580, # 220 880, 580, 580, 580, 580, 580, 360, 360, 360, 360, # 230 620, 680, 620, 620, 620, 620, 620, 600, 620, 660, # 240 660, 660, 660, 620, 640, 620], # 250 [ # 19 Bookman-DemiItalic } 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 340, 320, 380, 680, 680, 880, 980, 180, # 30 260, 260, 460, 600, 340, 280, 340, 360, 680, 680, # 40 680, 680, 680, 680, 680, 680, 680, 680, 340, 340, # 50 620, 600, 620, 620, 780, 720, 720, 700, 760, 720, # 60 660, 760, 800, 380, 620, 780, 640, 860, 740, 760, # 70 640, 760, 740, 700, 700, 740, 660, 1000, 740, 660, # 80 680, 260, 580, 260, 620, 500, 380, 680, 600, 560, # 90 680, 560, 420, 620, 700, 380, 320, 700, 380, 960, # 100 680, 600, 660, 620, 500, 540, 440, 680, 540, 860, # 110 620, 600, 560, 300, 620, 300, 620, 360, 558, 360, # 120 300, 680, 520, 1000, 420, 420, 480, 1360, 700, 220, # 130 1180, 360, 680, 360, 360, 320, 320, 520, 520, 360, # 140 500, 1000, 480, 940, 540, 220, 920, 360, 560, 660, # 150 340, 320, 680, 680, 680, 680, 620, 620, 520, 780, # 160 440, 380, 620, 280, 780, 480, 360, 600, 408, 408, # 170 340, 680, 680, 340, 360, 408, 440, 380, 1020, 1020, # 180 1020, 620, 720, 720, 720, 720, 720, 720, 1140, 700, # 190 720, 720, 720, 720, 380, 380, 380, 380, 760, 740, # 200 760, 760, 760, 760, 760, 600, 760, 740, 740, 740, # 210 740, 660, 640, 660, 680, 680, 680, 680, 680, 680, # 220 880, 560, 560, 560, 560, 560, 380, 380, 380, 380, # 230 600, 680, 600, 600, 600, 600, 600, 600, 600, 680, # 240 680, 680, 680, 600, 660, 600], # 250 [ # 20 Bookman-Light 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 320, 300, 380, 620, 620, 900, 800, 220, # 30 300, 300, 440, 600, 320, 400, 320, 600, 620, 620, # 40 620, 620, 620, 620, 620, 620, 620, 620, 320, 320, # 50 600, 600, 600, 540, 820, 680, 740, 740, 800, 720, # 60 640, 800, 800, 340, 600, 720, 600, 920, 740, 800, # 70 620, 820, 720, 660, 620, 780, 700, 960, 720, 640, # 80 640, 300, 600, 300, 600, 500, 340, 580, 620, 520, # 90 620, 520, 320, 540, 660, 300, 300, 620, 300, 940, # 100 660, 560, 620, 580, 440, 520, 380, 680, 520, 780, # 110 560, 540, 480, 280, 600, 280, 600, 460, 558, 460, # 120 220, 620, 400, 1000, 540, 540, 420, 1280, 660, 240, # 130 1240, 460, 640, 460, 460, 220, 220, 400, 400, 460, # 140 500, 1000, 440, 980, 520, 240, 900, 460, 480, 640, # 150 320, 300, 620, 620, 620, 620, 600, 520, 420, 740, # 160 420, 360, 600, 400, 740, 440, 320, 600, 372, 372, # 170 340, 680, 600, 320, 320, 372, 420, 360, 930, 930, # 180 930, 540, 680, 680, 680, 680, 680, 680, 1260, 740, # 190 720, 720, 720, 720, 340, 340, 340, 340, 800, 740, # 200 800, 800, 800, 800, 800, 600, 800, 780, 780, 780, # 210 780, 640, 620, 660, 580, 580, 580, 580, 580, 580, # 220 860, 520, 520, 520, 520, 520, 300, 300, 300, 300, # 230 560, 660, 560, 560, 560, 560, 560, 600, 560, 680, # 240 680, 680, 680, 540, 620, 540], # 250 [ # 21 Bookman-LightItalic 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 300, 320, 360, 620, 620, 800, 820, 200, # 30 280, 280, 440, 600, 300, 320, 300, 600, 620, 620, # 40 620, 620, 620, 620, 620, 620, 620, 620, 300, 300, # 50 600, 600, 600, 540, 780, 700, 720, 720, 740, 680, # 60 620, 760, 800, 320, 560, 720, 580, 860, 720, 760, # 70 600, 780, 700, 640, 600, 720, 680, 960, 700, 660, # 80 580, 260, 600, 260, 600, 500, 340, 620, 600, 480, # 90 640, 540, 340, 560, 620, 280, 280, 600, 280, 880, # 100 620, 540, 600, 560, 400, 540, 340, 620, 540, 880, # 110 540, 600, 520, 360, 600, 380, 600, 460, 558, 460, # 120 320, 620, 480, 1000, 620, 620, 440, 1180, 640, 180, # 130 1180, 460, 580, 460, 460, 280, 280, 440, 440, 460, # 140 500, 1000, 440, 980, 540, 180, 900, 460, 520, 660, # 150 300, 320, 620, 620, 620, 620, 600, 620, 420, 740, # 160 440, 300, 600, 320, 740, 440, 300, 600, 372, 372, # 170 320, 620, 620, 300, 320, 372, 400, 300, 930, 930, # 180 930, 540, 700, 700, 700, 700, 700, 700, 1220, 720, # 190 680, 680, 680, 680, 320, 320, 320, 320, 740, 720, # 200 760, 760, 760, 760, 760, 600, 760, 720, 720, 720, # 210 720, 660, 600, 620, 620, 620, 620, 620, 620, 620, # 220 880, 480, 540, 540, 540, 540, 280, 280, 280, 280, # 230 540, 620, 540, 540, 540, 540, 540, 600, 540, 620, # 240 620, 620, 620, 600, 600, 600], # 250 [ # 22 Helvetica-Narrow 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 228, 228, 291, 456, 456, 729, 547, 157, # 30 273, 273, 319, 479, 228, 273, 228, 228, 456, 456, # 40 456, 456, 456, 456, 456, 456, 456, 456, 228, 228, # 50 479, 479, 479, 456, 832, 547, 547, 592, 592, 547, # 60 501, 638, 592, 228, 410, 547, 456, 683, 592, 638, # 70 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, # 80 501, 228, 228, 228, 385, 456, 273, 456, 456, 410, # 90 456, 456, 228, 456, 456, 182, 182, 410, 182, 683, # 100 456, 456, 456, 456, 273, 410, 228, 456, 410, 592, # 110 410, 410, 410, 274, 213, 274, 479, 287, 558, 287, # 120 182, 456, 273, 820, 456, 456, 273, 820, 547, 273, # 130 820, 287, 501, 287, 287, 182, 182, 273, 273, 287, # 140 456, 820, 273, 820, 410, 273, 774, 287, 410, 547, # 150 228, 273, 456, 456, 456, 456, 213, 456, 273, 604, # 160 303, 456, 479, 273, 604, 273, 273, 479, 273, 273, # 170 273, 456, 440, 228, 273, 273, 299, 456, 684, 684, # 180 684, 501, 547, 547, 547, 547, 547, 547, 820, 592, # 190 547, 547, 547, 547, 228, 228, 228, 228, 592, 592, # 200 638, 638, 638, 638, 638, 479, 638, 592, 592, 592, # 210 592, 547, 547, 501, 456, 456, 456, 456, 456, 456, # 220 729, 410, 456, 456, 456, 456, 228, 228, 228, 228, # 230 456, 456, 456, 456, 456, 456, 456, 479, 501, 456, # 240 456, 456, 456, 410, 456, 410], # 250 [ # 23 Helvetica-Narrow-Oblique 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 228, 228, 291, 456, 456, 729, 547, 157, # 30 273, 273, 319, 479, 228, 273, 228, 228, 456, 456, # 40 456, 456, 456, 456, 456, 456, 456, 456, 228, 228, # 50 479, 479, 479, 456, 832, 547, 547, 592, 592, 547, # 60 501, 638, 592, 228, 410, 547, 456, 683, 592, 638, # 70 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, # 80 501, 228, 228, 228, 385, 456, 273, 456, 456, 410, # 90 456, 456, 228, 456, 456, 182, 182, 410, 182, 683, # 100 456, 456, 456, 456, 273, 410, 228, 456, 410, 592, # 110 410, 410, 410, 274, 213, 274, 479, 287, 558, 287, # 120 182, 456, 273, 820, 456, 456, 273, 820, 547, 273, # 130 820, 287, 501, 287, 287, 182, 182, 273, 273, 287, # 140 456, 820, 273, 820, 410, 273, 774, 287, 410, 547, # 150 228, 273, 456, 456, 456, 456, 213, 456, 273, 604, # 160 303, 456, 479, 273, 604, 273, 273, 479, 273, 273, # 170 273, 456, 440, 228, 273, 273, 299, 456, 684, 684, # 180 684, 501, 547, 547, 547, 547, 547, 547, 820, 592, # 190 547, 547, 547, 547, 228, 228, 228, 228, 592, 592, # 200 638, 638, 638, 638, 638, 479, 638, 592, 592, 592, # 210 592, 547, 547, 501, 456, 456, 456, 456, 456, 456, # 220 729, 410, 456, 456, 456, 456, 228, 228, 228, 228, # 230 456, 456, 456, 456, 456, 456, 456, 479, 501, 456, # 240 456, 456, 456, 410, 456, 410], # 250 [ # 24 Helvetica-Narrow-Bold 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 228, 273, 389, 456, 456, 729, 592, 195, # 30 273, 273, 319, 479, 228, 273, 228, 228, 456, 456, # 40 456, 456, 456, 456, 456, 456, 456, 456, 273, 273, # 50 479, 479, 479, 501, 800, 592, 592, 592, 592, 547, # 60 501, 638, 592, 228, 456, 592, 501, 683, 592, 638, # 70 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, # 80 501, 273, 228, 273, 479, 456, 273, 456, 501, 456, # 90 501, 456, 273, 501, 501, 228, 228, 456, 228, 729, # 100 501, 501, 501, 501, 319, 456, 273, 501, 456, 638, # 110 456, 456, 410, 319, 230, 319, 479, 287, 558, 287, # 120 228, 456, 410, 820, 456, 456, 273, 820, 547, 273, # 130 820, 287, 501, 287, 287, 228, 228, 410, 410, 287, # 140 456, 820, 273, 820, 456, 273, 774, 287, 410, 547, # 150 228, 273, 456, 456, 456, 456, 230, 456, 273, 604, # 160 303, 456, 479, 273, 604, 273, 273, 479, 273, 273, # 170 273, 501, 456, 228, 273, 273, 299, 456, 684, 684, # 180 684, 501, 592, 592, 592, 592, 592, 592, 820, 592, # 190 547, 547, 547, 547, 228, 228, 228, 228, 592, 592, # 200 638, 638, 638, 638, 638, 479, 638, 592, 592, 592, # 210 592, 547, 547, 501, 456, 456, 456, 456, 456, 456, # 220 729, 456, 456, 456, 456, 456, 228, 228, 228, 228, # 230 501, 501, 501, 501, 501, 501, 501, 479, 501, 501, # 240 501, 501, 501, 456, 501, 456], # 250 [ # 25 Helvetica-Narrow-BoldOblique 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 228, 273, 389, 456, 456, 729, 592, 195, # 30 273, 273, 319, 479, 228, 273, 228, 228, 456, 456, # 40 456, 456, 456, 456, 456, 456, 456, 456, 273, 273, # 50 479, 479, 479, 501, 800, 592, 592, 592, 592, 547, # 60 501, 638, 592, 228, 456, 592, 501, 683, 592, 638, # 70 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, # 80 501, 273, 228, 273, 479, 456, 273, 456, 501, 456, # 90 501, 456, 273, 501, 501, 228, 228, 456, 228, 729, # 100 501, 501, 501, 501, 319, 456, 273, 501, 456, 638, # 110 456, 456, 410, 319, 230, 319, 479, 287, 558, 287, # 120 228, 456, 410, 820, 456, 456, 273, 820, 547, 273, # 130 820, 287, 501, 287, 287, 228, 228, 410, 410, 287, # 140 456, 820, 273, 820, 456, 273, 774, 287, 410, 547, # 150 228, 273, 456, 456, 456, 456, 230, 456, 273, 604, # 160 303, 456, 479, 273, 604, 273, 273, 479, 273, 273, # 170 273, 501, 456, 228, 273, 273, 299, 456, 684, 684, # 180 684, 501, 592, 592, 592, 592, 592, 592, 820, 592, # 190 547, 547, 547, 547, 228, 228, 228, 228, 592, 592, # 200 638, 638, 638, 638, 638, 479, 638, 592, 592, 592, # 210 592, 547, 547, 501, 456, 456, 456, 456, 456, 456, # 220 729, 456, 456, 456, 456, 456, 228, 228, 228, 228, # 230 501, 501, 501, 501, 501, 501, 501, 479, 501, 501, # 240 501, 501, 501, 456, 501, 456], # 250 [ # 26 NewCenturySchlbk-Roman 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 278, 296, 389, 556, 556, 833, 815, 204, # 30 333, 333, 500, 606, 278, 333, 278, 278, 556, 556, # 40 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, # 50 606, 606, 606, 444, 737, 722, 722, 722, 778, 722, # 60 667, 778, 833, 407, 556, 778, 667, 944, 815, 778, # 70 667, 778, 722, 630, 667, 815, 722, 981, 704, 704, # 80 611, 333, 606, 333, 606, 500, 333, 556, 556, 444, # 90 574, 500, 333, 537, 611, 315, 296, 593, 315, 889, # 100 611, 500, 574, 556, 444, 463, 389, 611, 537, 778, # 110 537, 537, 481, 333, 606, 333, 606, 606, 558, 606, # 120 204, 556, 389, 1000, 500, 500, 333, 1000, 630, 259, # 130 1000, 606, 611, 606, 606, 204, 204, 389, 389, 606, # 140 556, 1000, 333, 1000, 463, 259, 833, 606, 481, 704, # 150 278, 296, 556, 556, 556, 556, 606, 500, 333, 737, # 160 334, 426, 606, 333, 737, 333, 333, 606, 333, 333, # 170 333, 611, 606, 278, 333, 333, 300, 426, 834, 834, # 180 834, 444, 722, 722, 722, 722, 722, 722, 1000, 722, # 190 722, 722, 722, 722, 407, 407, 407, 407, 778, 815, # 200 778, 778, 778, 778, 778, 606, 778, 815, 815, 815, # 210 815, 704, 667, 574, 556, 556, 556, 556, 556, 556, # 220 796, 444, 500, 500, 500, 500, 315, 315, 315, 315, # 230 500, 611, 500, 500, 500, 500, 500, 606, 500, 611, # 240 611, 611, 611, 537, 574, 537], # 250 [ # 27 NewCenturySchlbk-Italic 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 278, 333, 400, 556, 556, 833, 852, 278, # 30 333, 333, 500, 606, 278, 333, 278, 606, 556, 556, # 40 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, # 50 606, 606, 606, 444, 747, 704, 722, 722, 778, 722, # 60 667, 778, 833, 407, 611, 741, 667, 944, 815, 778, # 70 667, 778, 741, 667, 685, 815, 704, 926, 704, 685, # 80 667, 333, 606, 333, 606, 500, 333, 574, 556, 444, # 90 611, 444, 333, 537, 611, 333, 315, 556, 333, 889, # 100 611, 500, 574, 556, 444, 444, 352, 611, 519, 778, # 110 500, 500, 463, 333, 606, 333, 606, 606, 558, 606, # 120 204, 556, 389, 1000, 500, 500, 333, 1000, 667, 333, # 130 981, 606, 667, 606, 606, 204, 204, 389, 389, 606, # 140 500, 1000, 333, 950, 444, 333, 778, 606, 463, 685, # 150 278, 333, 556, 556, 556, 556, 606, 500, 333, 747, # 160 422, 426, 606, 333, 747, 333, 333, 606, 333, 333, # 170 333, 611, 650, 278, 333, 333, 372, 426, 834, 834, # 180 834, 444, 704, 704, 704, 704, 704, 704, 870, 722, # 190 722, 722, 722, 722, 407, 407, 407, 407, 778, 815, # 200 778, 778, 778, 778, 778, 606, 778, 815, 815, 815, # 210 815, 685, 667, 556, 574, 574, 574, 574, 574, 574, # 220 722, 444, 444, 444, 444, 444, 333, 333, 333, 333, # 230 500, 611, 500, 500, 500, 500, 500, 606, 500, 611, # 240 611, 611, 611, 500, 574, 500], # 250 [ # 28 NewCenturySchlbk-Bold 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 287, 296, 333, 574, 574, 833, 852, 241, # 30 389, 389, 500, 606, 278, 333, 278, 278, 574, 574, # 40 574, 574, 574, 574, 574, 574, 574, 574, 278, 278, # 50 606, 606, 606, 500, 747, 759, 778, 778, 833, 759, # 60 722, 833, 870, 444, 648, 815, 722, 981, 833, 833, # 70 759, 833, 815, 667, 722, 833, 759, 981, 722, 722, # 80 667, 389, 606, 389, 606, 500, 333, 611, 648, 556, # 90 667, 574, 389, 611, 685, 370, 352, 667, 352, 963, # 100 685, 611, 667, 648, 519, 500, 426, 685, 611, 889, # 110 611, 611, 537, 389, 606, 389, 606, 606, 558, 606, # 120 241, 574, 481, 1000, 500, 500, 333, 1000, 667, 333, # 130 1000, 606, 667, 606, 606, 241, 241, 481, 481, 606, # 140 500, 1000, 333, 1000, 500, 333, 907, 606, 537, 722, # 150 287, 296, 574, 574, 574, 574, 606, 500, 333, 747, # 160 367, 500, 606, 333, 747, 333, 333, 606, 344, 344, # 170 333, 685, 747, 278, 333, 344, 367, 500, 861, 861, # 180 861, 500, 759, 759, 759, 759, 759, 759, 981, 778, # 190 759, 759, 759, 759, 444, 444, 444, 444, 833, 833, # 200 833, 833, 833, 833, 833, 606, 833, 833, 833, 833, # 210 833, 722, 759, 611, 611, 611, 611, 611, 611, 611, # 220 870, 556, 574, 574, 574, 574, 370, 370, 370, 370, # 230 611, 685, 611, 611, 611, 611, 611, 606, 611, 685, # 240 685, 685, 685, 611, 667, 611], # 250 [ # 29 NewCenturySchlbk-BoldItalic 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 287, 333, 400, 574, 574, 889, 889, 287, # 30 407, 407, 500, 606, 287, 333, 287, 278, 574, 574, # 40 574, 574, 574, 574, 574, 574, 574, 574, 287, 287, # 50 606, 606, 606, 481, 747, 741, 759, 759, 833, 741, # 60 704, 815, 870, 444, 667, 778, 704, 944, 852, 833, # 70 741, 833, 796, 685, 722, 833, 741, 944, 741, 704, # 80 704, 407, 606, 407, 606, 500, 333, 667, 611, 537, # 90 667, 519, 389, 611, 685, 389, 370, 648, 389, 944, # 100 685, 574, 648, 630, 519, 481, 407, 685, 556, 833, # 110 574, 519, 519, 407, 606, 407, 606, 606, 558, 606, # 120 259, 574, 481, 1000, 500, 500, 333, 1167, 685, 278, # 130 963, 606, 704, 606, 606, 259, 259, 481, 481, 606, # 140 500, 1000, 333, 950, 481, 278, 852, 606, 519, 704, # 150 287, 333, 574, 574, 574, 574, 606, 500, 333, 747, # 160 412, 481, 606, 333, 747, 333, 333, 606, 344, 344, # 170 333, 685, 650, 287, 333, 344, 356, 481, 861, 861, # 180 861, 481, 741, 741, 741, 741, 741, 741, 889, 759, # 190 741, 741, 741, 741, 444, 444, 444, 444, 833, 852, # 200 833, 833, 833, 833, 833, 606, 833, 833, 833, 833, # 210 833, 704, 741, 574, 667, 667, 667, 667, 667, 667, # 220 815, 537, 519, 519, 519, 519, 389, 389, 389, 389, # 230 574, 685, 574, 574, 574, 574, 574, 606, 574, 685, # 240 685, 685, 685, 519, 648, 519], # 250 [ # 30 Palatino-Roman 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 250, 278, 371, 500, 500, 840, 778, 208, # 30 333, 333, 389, 606, 250, 333, 250, 606, 500, 500, # 40 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, # 50 606, 606, 606, 444, 747, 778, 611, 709, 774, 611, # 60 556, 763, 832, 337, 333, 726, 611, 946, 831, 786, # 70 604, 786, 668, 525, 613, 778, 722, 1000, 667, 667, # 80 667, 333, 606, 333, 606, 500, 333, 500, 553, 444, # 90 611, 479, 333, 556, 582, 291, 234, 556, 291, 883, # 100 582, 546, 601, 560, 395, 424, 326, 603, 565, 834, # 110 516, 556, 500, 333, 606, 333, 606, 606, 558, 606, # 120 278, 500, 500, 1000, 500, 500, 333, 1144, 525, 331, # 130 998, 606, 667, 606, 606, 278, 278, 500, 500, 606, # 140 500, 1000, 333, 979, 424, 331, 827, 606, 500, 667, # 150 250, 278, 500, 500, 500, 500, 606, 500, 333, 747, # 160 333, 500, 606, 333, 747, 333, 333, 606, 300, 300, # 170 333, 603, 628, 250, 333, 300, 333, 500, 750, 750, # 180 750, 444, 778, 778, 778, 778, 778, 778, 944, 709, # 190 611, 611, 611, 611, 337, 337, 337, 337, 774, 831, # 200 786, 786, 786, 786, 786, 606, 833, 778, 778, 778, # 210 778, 667, 604, 556, 500, 500, 500, 500, 500, 500, # 220 758, 444, 479, 479, 479, 479, 287, 287, 287, 287, # 230 546, 582, 546, 546, 546, 546, 546, 606, 556, 603, # 240 603, 603, 603, 556, 601, 556], # 250 [ # 31 Palatino-Italic 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 250, 333, 500, 500, 500, 889, 778, 333, # 30 333, 333, 389, 606, 250, 333, 250, 296, 500, 500, # 40 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, # 50 606, 606, 606, 500, 747, 722, 611, 667, 778, 611, # 60 556, 722, 778, 333, 333, 667, 556, 944, 778, 778, # 70 611, 778, 667, 556, 611, 778, 722, 944, 722, 667, # 80 667, 333, 606, 333, 606, 500, 333, 444, 463, 407, # 90 500, 389, 278, 500, 500, 278, 278, 444, 278, 778, # 100 556, 444, 500, 463, 389, 389, 333, 556, 500, 722, # 110 500, 500, 444, 333, 606, 333, 606, 500, 558, 500, # 120 278, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, # 130 1028, 500, 667, 500, 500, 278, 278, 500, 500, 500, # 140 500, 1000, 333, 1000, 389, 333, 669, 500, 444, 667, # 150 250, 333, 500, 500, 500, 500, 606, 500, 333, 747, # 160 333, 500, 606, 333, 747, 333, 333, 606, 300, 300, # 170 333, 556, 500, 250, 333, 300, 333, 500, 750, 750, # 180 750, 500, 722, 722, 722, 722, 722, 722, 941, 667, # 190 611, 611, 611, 611, 333, 333, 333, 333, 778, 778, # 200 778, 778, 778, 778, 778, 606, 778, 778, 778, 778, # 210 778, 667, 611, 500, 444, 444, 444, 444, 444, 444, # 220 638, 407, 389, 389, 389, 389, 278, 278, 278, 278, # 230 444, 556, 444, 444, 444, 444, 444, 606, 444, 556, # 240 556, 556, 556, 500, 500, 500], # 250 [ # 32 Palatino-Bold 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 250, 278, 402, 500, 500, 889, 833, 227, # 30 333, 333, 444, 606, 250, 333, 250, 296, 500, 500, # 40 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, # 50 606, 606, 606, 444, 747, 778, 667, 722, 833, 611, # 60 556, 833, 833, 389, 389, 778, 611, 1000, 833, 833, # 70 611, 833, 722, 611, 667, 778, 778, 1000, 667, 667, # 80 667, 333, 606, 333, 606, 500, 333, 500, 611, 444, # 90 611, 500, 389, 556, 611, 333, 333, 611, 333, 889, # 100 611, 556, 611, 611, 389, 444, 333, 611, 556, 833, # 110 500, 556, 500, 310, 606, 310, 606, 606, 558, 606, # 120 333, 500, 500, 1000, 500, 500, 333, 1000, 611, 389, # 130 1000, 606, 667, 606, 606, 278, 278, 500, 500, 606, # 140 500, 1000, 333, 998, 444, 389, 833, 606, 500, 667, # 150 250, 278, 500, 500, 500, 500, 606, 500, 333, 747, # 160 438, 500, 606, 333, 747, 333, 333, 606, 300, 300, # 170 333, 611, 641, 250, 333, 300, 488, 500, 750, 750, # 180 750, 444, 778, 778, 778, 778, 778, 778, 1000, 722, # 190 611, 611, 611, 611, 389, 389, 389, 389, 833, 833, # 200 833, 833, 833, 833, 833, 606, 833, 778, 778, 778, # 210 778, 667, 611, 611, 500, 500, 500, 500, 500, 500, # 220 778, 444, 500, 500, 500, 500, 333, 333, 333, 333, # 230 556, 611, 556, 556, 556, 556, 556, 606, 556, 611, # 240 611, 611, 611, 556, 611, 556], # 250 [ # 33 Palatino-BoldItalic 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 250, 333, 500, 500, 500, 889, 833, 250, # 30 333, 333, 444, 606, 250, 389, 250, 315, 500, 500, # 40 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, # 50 606, 606, 606, 444, 833, 722, 667, 685, 778, 611, # 60 556, 778, 778, 389, 389, 722, 611, 944, 778, 833, # 70 667, 833, 722, 556, 611, 778, 667, 1000, 722, 611, # 80 667, 333, 606, 333, 606, 500, 333, 556, 537, 444, # 90 556, 444, 333, 500, 556, 333, 333, 556, 333, 833, # 100 556, 556, 556, 537, 389, 444, 389, 556, 556, 833, # 110 500, 556, 500, 333, 606, 333, 606, 606, 558, 606, # 120 250, 500, 500, 1000, 556, 556, 333, 1000, 556, 333, # 130 944, 606, 667, 606, 606, 278, 278, 500, 500, 606, # 140 500, 1000, 333, 1000, 444, 333, 778, 606, 500, 611, # 150 250, 333, 500, 500, 500, 500, 606, 556, 333, 747, # 160 333, 500, 606, 389, 747, 333, 556, 606, 300, 300, # 170 333, 556, 556, 250, 333, 300, 333, 500, 750, 750, # 180 750, 444, 722, 722, 722, 722, 722, 722, 944, 685, # 190 611, 611, 611, 611, 389, 389, 389, 389, 778, 778, # 200 833, 833, 833, 833, 833, 606, 833, 778, 778, 778, # 210 778, 611, 667, 556, 556, 556, 556, 556, 556, 556, # 220 738, 444, 444, 444, 444, 444, 333, 333, 333, 333, # 230 556, 556, 556, 556, 556, 556, 556, 606, 556, 556, # 240 556, 556, 556, 556, 556, 556], # 250 [ # 34 ZapfChancery-MediumItalic 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 220, 280, 220, 440, 440, 680, 780, 160, # 30 260, 220, 420, 520, 220, 280, 220, 340, 440, 440, # 40 440, 440, 440, 440, 440, 440, 440, 440, 260, 240, # 50 520, 520, 520, 380, 700, 620, 600, 520, 700, 620, # 60 580, 620, 680, 380, 400, 660, 580, 840, 700, 600, # 70 540, 600, 600, 460, 500, 740, 640, 880, 560, 560, # 80 620, 240, 480, 320, 520, 500, 220, 420, 420, 340, # 90 440, 340, 320, 400, 440, 240, 220, 440, 240, 620, # 100 460, 400, 440, 400, 300, 320, 320, 460, 440, 680, # 110 420, 400, 440, 240, 520, 240, 520, 600, 558, 600, # 120 180, 440, 280, 1000, 460, 480, 340, 960, 460, 240, # 130 820, 600, 620, 600, 600, 240, 240, 340, 360, 600, # 140 500, 1000, 440, 1000, 320, 260, 560, 600, 440, 560, # 150 220, 280, 440, 440, 440, 440, 520, 420, 360, 740, # 160 260, 340, 520, 280, 740, 440, 300, 520, 264, 264, # 170 300, 460, 500, 220, 300, 264, 260, 380, 660, 660, # 180 660, 400, 620, 620, 620, 620, 620, 620, 740, 520, # 190 620, 620, 620, 620, 380, 380, 380, 380, 700, 700, # 200 600, 600, 600, 600, 600, 520, 660, 740, 740, 740, # 210 740, 560, 540, 420, 420, 420, 420, 420, 420, 420, # 220 540, 340, 340, 340, 340, 340, 240, 240, 240, 240, # 230 400, 460, 400, 400, 400, 400, 400, 520, 440, 460, # 240 460, 460, 460, 400, 440, 400], # 250 [ # 35 Helvetica-Condensed 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 250, 333, 250, 500, 500, 833, 667, 250, # 30 333, 333, 500, 500, 250, 333, 250, 278, 500, 500, # 40 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, # 50 500, 500, 500, 500, 800, 556, 556, 556, 611, 500, # 60 444, 611, 611, 278, 444, 556, 500, 778, 611, 611, # 70 556, 611, 611, 556, 500, 611, 556, 833, 556, 556, # 80 500, 333, 250, 333, 500, 500, 333, 444, 500, 444, # 90 500, 444, 278, 500, 500, 222, 222, 444, 222, 778, # 100 500, 500, 500, 500, 333, 444, 278, 500, 444, 667, # 110 444, 444, 389, 274, 250, 274, 500, 333, 558, 333, # 120 222, 500, 389, 1000, 500, 500, 333, 1111, 556, 278, # 130 833, 333, 500, 333, 333, 222, 222, 389, 389, 333, # 140 500, 1000, 333, 750, 444, 278, 722, 333, 389, 556, # 150 250, 333, 500, 500, 500, 500, 250, 500, 333, 800, # 160 300, 500, 500, 333, 800, 333, 250, 500, 300, 300, # 170 333, 500, 440, 250, 333, 300, 300, 500, 750, 750, # 180 750, 500, 556, 556, 556, 556, 556, 556, 833, 556, # 190 500, 500, 500, 500, 278, 278, 278, 278, 611, 611, # 200 611, 611, 611, 611, 611, 500, 611, 611, 611, 611, # 210 611, 556, 556, 500, 444, 444, 444, 444, 444, 444, # 220 667, 444, 444, 444, 444, 444, 222, 222, 222, 222, # 230 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, # 240 500, 500, 500, 444, 500, 444], # 250 [ # 36 Helvetica-Condensed-Bold 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 250, 333, 333, 500, 500, 833, 667, 250, # 30 333, 333, 500, 500, 333, 333, 333, 278, 500, 500, # 40 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, # 50 500, 500, 500, 500, 833, 556, 556, 556, 611, 500, # 60 500, 611, 611, 278, 444, 556, 500, 778, 611, 611, # 70 556, 611, 611, 556, 500, 611, 556, 833, 556, 556, # 80 500, 333, 250, 333, 500, 500, 333, 500, 500, 444, # 90 500, 500, 278, 500, 500, 278, 278, 444, 278, 778, # 100 500, 500, 500, 500, 333, 444, 278, 500, 444, 667, # 110 444, 444, 389, 274, 250, 274, 500, 420, 558, 420, # 120 278, 500, 500, 1000, 500, 500, 333, 1111, 556, 278, # 130 833, 420, 500, 420, 420, 278, 278, 500, 500, 420, # 140 500, 1000, 333, 860, 444, 278, 722, 420, 389, 556, # 150 250, 333, 500, 500, 500, 500, 250, 500, 333, 830, # 160 300, 500, 500, 333, 830, 333, 333, 500, 300, 300, # 170 333, 500, 550, 333, 333, 300, 300, 500, 750, 750, # 180 750, 500, 556, 556, 556, 556, 556, 556, 778, 556, # 190 500, 500, 500, 500, 278, 278, 278, 278, 611, 611, # 200 611, 611, 611, 611, 611, 500, 611, 611, 611, 611, # 210 611, 556, 556, 500, 500, 500, 500, 500, 500, 500, # 220 722, 444, 500, 500, 500, 500, 278, 278, 278, 278, # 230 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, # 240 500, 500, 500, 444, 500, 444], # 250 [ # 37 Helvetica-Condensed-Oblique 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 250, 333, 250, 500, 500, 833, 667, 250, # 30 333, 333, 500, 500, 250, 333, 250, 278, 500, 500, # 40 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, # 50 500, 500, 500, 500, 800, 556, 556, 556, 611, 500, # 60 444, 611, 611, 278, 444, 556, 500, 778, 611, 611, # 70 556, 611, 611, 556, 500, 611, 556, 833, 556, 556, # 80 500, 333, 250, 333, 500, 500, 333, 444, 500, 444, # 90 500, 444, 278, 500, 500, 222, 222, 444, 222, 778, # 100 500, 500, 500, 500, 333, 444, 278, 500, 444, 667, # 110 444, 444, 389, 274, 250, 274, 500, 333, 558, 333, # 120 222, 500, 389, 1000, 500, 500, 333, 1111, 556, 278, # 130 833, 333, 500, 333, 333, 222, 222, 389, 389, 333, # 140 500, 1000, 333, 750, 444, 278, 722, 333, 389, 556, # 150 250, 333, 500, 500, 500, 500, 250, 500, 333, 800, # 160 300, 500, 500, 333, 800, 333, 250, 500, 300, 300, # 170 333, 500, 440, 250, 333, 300, 300, 500, 750, 750, # 180 750, 500, 556, 556, 556, 556, 556, 556, 833, 556, # 190 500, 500, 500, 500, 278, 278, 278, 278, 611, 611, # 200 611, 611, 611, 611, 611, 500, 611, 611, 611, 611, # 210 611, 556, 556, 500, 444, 444, 444, 444, 444, 444, # 220 667, 444, 444, 444, 444, 444, 222, 222, 222, 222, # 230 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, # 240 500, 500, 500, 444, 500, 444], # 250 [ # 38 Helvetica-Condensed-BoldObl 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 20 0, 0, 250, 333, 333, 500, 500, 833, 667, 250, # 30 333, 333, 500, 500, 333, 333, 333, 278, 500, 500, # 40 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, # 50 500, 500, 500, 500, 833, 556, 556, 556, 611, 500, # 60 500, 611, 611, 278, 444, 556, 500, 778, 611, 611, # 70 556, 611, 611, 556, 500, 611, 556, 833, 556, 556, # 80 500, 333, 250, 333, 500, 500, 333, 500, 500, 444, # 90 500, 500, 278, 500, 500, 278, 278, 444, 278, 778, # 100 500, 500, 500, 500, 333, 444, 278, 500, 444, 667, # 110 444, 444, 389, 274, 250, 274, 500, 420, 558, 420, # 120 278, 500, 500, 1000, 500, 500, 333, 1111, 556, 278, # 130 833, 420, 500, 420, 420, 278, 278, 500, 500, 420, # 140 500, 1000, 333, 860, 444, 278, 722, 420, 389, 556, # 150 250, 333, 500, 500, 500, 500, 250, 500, 333, 830, # 160 300, 500, 500, 333, 830, 333, 333, 500, 300, 300, # 170 333, 500, 550, 333, 333, 300, 300, 500, 750, 750, # 180 750, 500, 556, 556, 556, 556, 556, 556, 778, 556, # 190 500, 500, 500, 500, 278, 278, 278, 278, 611, 611, # 200 611, 611, 611, 611, 611, 500, 611, 611, 611, 611, # 210 611, 556, 556, 500, 500, 500, 500, 500, 500, 500, # 220 722, 444, 500, 500, 500, 500, 278, 278, 278, 278, # 230 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, # 240 500, 500, 500, 444, 500, 444] # 250 ] FONT_ASCENDERS = [ 718, 718, 718, 718, 683, 676, 683, 699, 629, 626, 629, 626, 718, 718, 740, 740, 740, 740, 725, 732, 717, 717, 718, 718, 718, 718, 737, 737, 737, 737, 726, 733, 720, 726, 714, 750, 750, 750, 750, # Japanese 875, # 41 HeiseiKakuGo-W5 857, # 42 HeiseiMin-W3 # Korean 880, # 43 HYGoThic-Medium 880, # 44 HYSMyeongJo-Medium # Chinese Traditional 880, # 45 MHei-Medium 880, # 46 MSung-Light # Chinese Simplified 880 # 47 STSong-Light ] FONT_CAP_HEIGHTS = [ 718, 718, 718, 718, 662, 676, 653, 669, 562, 562, 562, 562, 718, 718, 740, 740, 740, 740, 681, 681, 681, 681, 718, 718, 718, 718, 722, 722, 722, 722, 692, 692, 681, 681, 708, 750, 750, 750, 750, # Japanese 718, # 41 HeiseiKakuGo-W5 718, # 42 HeiseiMin-W3 # Korean 880, # 43 HYGoThic-Medium 880, # 44 HYSMyeongJo-Medium # Chinese Traditional 880, # 45 MHei-Medium 880, # 46 MSung-Light # Chinese Simplified 880 # 47 STSong-Light ] FONT_DESCENDERS = [ -207, -207, -207, -207, -217, -205, -205, -205, -157, -142, -157, -142, -207, -207, -192, -192, -185, -185, -212, -213, -228, -212, -207, -207, -207, -207, -205, -205, -205, -205, -281, -276, -258, -271, -314, -188, -189, -188, -189, # Japanese -125, # 41 HeiseiKakuGo-W5 -143, # 42 HeiseiMin-W3 # Korean -120, # 43 HYGoThic-Medium -120, # 44 HYSMyeongJo-Medium # Chinese Traditional -120, # 45 MHei-Medium -120, # 46 MSung-Light # Chinese Simplified -120 # 47 STSong-Light ] FONT_FLAGS = [ 32, # Helvetica 0, # Helvetica-Bold 96, # Helvetica-Oblique 0, # Helvetica-BoldOblique 0, # Times-Roman 0, # Times-Bold 0, # Times-Italic 0, # Times-BoldItalic 0, # Courier 0, # Courier-Bold 0, # Courier-Oblique 0, # Courier-BoldOblique 0, # Symbol 0, # ZapfDingbats # ------------- values above don't matter 32, # AvantGarde-Book 96, # AvantGarde-BookOblique 262176, # AvantGarde-Demi 262240, # AvantGarde-DemiOblique 262178, # Bookman-Demi 262242, # Bookman-DemiItalic 34, # Bookman-Light 98, # Bookman-LightItalic 32, # Helvetica-Narrow 96, # Helvetica-Narrow-Oblique 262176, # Helvetica-Narrow-Bold 262240, # Helvetica-Narrow-BoldOblique 34, # NewCenturySchlbk-Roman 98, # NewCenturySchlbk-Italic 262178, # NewCenturySchlbk-Bold 262242, # NewCenturySchlbk-BoldItalic 34, # Palatino-Roman 98, # Palatino-Italic 262178, # Palatino-Bold 262242, # Palatino-BoldItalic 98, # ZapfChancery-MediumItalic 32, # Helvetica-Condensed 262176, # Helvetica-Condensed-Bold 96, # Helvetica-Condensed-Oblique 262240, # Helvetica-Condensed-BoldObl # Japanese 4, # 41 HeiseiKakuGo-W5 (4) 6, # 42 HeiseiMin-W3 (6) # Korean 4, # 43 HYGoThic-Medium (39) 6, # 44 HYSMyeongJo-Medium # Chinese Traditional 4, # 45 MHei-Medium 6, # 46 MSung-Light # Chinese Simplified 6 # 47 STSong-Light ] FONT_BBOXES = [ [ -166, -225, 1000, 931 ], [ -170, -228, 1003, 962 ], [ -170, -225, 1116, 931 ], [ -174, -228, 1114, 962 ], [ -168, -218, 1000, 898 ], [ -168, -218, 1000, 935 ], [ -169, -217, 1010, 883 ], [ -200, -218, 996, 921 ], [ -28, -250, 628, 805 ], [ -113, -250, 749, 801 ], [ -28, -250, 742, 805 ], [ -56, -250, 868, 801 ], [ -180, -293, 1090, 1010 ], # Symbol [ -1, -143, 981, 820 ], # ZapfDingbats [ -113, -222, 1148, 955 ], [ -113, -222, 1279, 955 ], [ -123, -251, 1222, 1021 ], [ -123, -251, 1256, 1021 ], [ -194, -250, 1346, 934 ], [ -231, -250, 1333, 941 ], [ -188, -251, 1266, 908 ], [ -228, -250, 1269, 883 ], [ -136, -225, 820, 931 ], [ -139, -225, 915, 931 ], [ -139, -228, 822, 962 ], [ -143, -228, 913, 962 ], [ -195, -250, 1000, 965 ], [ -166, -250, 994, 958 ], [ -165, -250, 1000, 988 ], [ -205, -250, 1147, 991 ], [ -166, -283, 1021, 927 ], [ -170, -276, 1010, 918 ], [ -152, -266, 1000, 924 ], [ -170, -271, 1073, 926 ], [ -181, -314, 1065, 831 ], [ -174, -224, 1071, 990 ], [ -169, -228, 1091, 971 ], [ -174, -224, 1118, 990 ], [ -169, -228, 1141, 971 ], # Japanese [ -92, -250, 1010, 922 ], # 41 HeiseiKakuGo-W5 [-250, -125, 1000, 875] [ -123, -257, 1001, 910 ], # 42 HeiseiMin-W3 [-250, -143, 1000, 857 ] # Korean [ -6, -145, 1003, 880 ], # 43 HYGoThic-Medium [-150, -120, 1100, 880 ] [ 0, -148, 1001, 880 ], # 44 HYSMyeongJo-Medium [ -150, -120, 1100, 880] # Chinese Traditional [ -45, -250, 1015, 887 ], # 45 MHei-Medium [ -160, -249, 1015, 888 ], # 46 MSung-Light # Chinese Simplified [ -25, -254, 1000, 880 ] # 47 STSong-Light ] FONT_ITALIC_ANGLES = [ 0, 0, -12, -12, 0, 0, -15.5, -15, 0, 0, -12, -12, 0, # Symbol 0, # ZapfDingbats 0, -10.5, 0, -10.5, 0, -10, 0, -10, 0, -12, 0, -12, 0, -16, 0, -16, 0, -10, 0, -10, -14, 0, 0, -12, -12, # Japanese 0, # 41 HeiseiKakuGo-W5 0, # 42 HeiseiMin-W3 # Korean 0, # 43 HYGoThic-Medium 0, # 44 HYSMyeongJo-Medium # Chinese Traditional 0, # 45 MHei-Medium 0, # 46 MSung-Light # Chinese Simplified 0 # 47 STSong-Light ] # (Required) The width of vertical stems in characters. FONT_STEM_VS = [ 0, # Helvetica 0, # Helvetica-Bold 0, # Helvetica-Oblique 0, # Helvetica-BoldOblique 0, # Times-Roman 0, # Times-Bold 0, # Times-Italic 0, # Times-BoldItalic 0, # Courier 0, # Courier-Bold 0, # Courier-Oblique 0, # Courier-BoldOblique 0, # Symbol 0, # ZapfDingbats # ------------- values above don't matter 70, # AvantGarde-Book 70, # AvantGarde-BookOblique 133, # AvantGarde-Demi 133, # AvantGarde-DemiOblique 167, # Bookman-Demi 172, # Bookman-DemiItalic 96, # Bookman-Light 96, # Bookman-LightItalic 88, # Helvetica-Narrow 88, # Helvetica-Narrow-Oblique 140, # Helvetica-Narrow-Bold 140, # Helvetica-Narrow-BoldOblique 92, # NewCenturySchlbk-Roman 80, # NewCenturySchlbk-Italic 154, # NewCenturySchlbk-Bold 150, # NewCenturySchlbk-BoldItalic 84, # Palatino-Roman 84, # Palatino-Italic 122, # Palatino-Bold 122, # Palatino-BoldItalic 70, # ZapfChancery-MediumItalic 79, # Helvetica-Condensed 130, # Helvetica-Condensed-Bold 79, # Helvetica-Condensed-Oblique 130, # Helvetica-Condensed-BoldObl # Japanese 93, # 41 HeiseiKakuGo-W5 93, # 42 HeiseiMin-W3 # Korean 93, # 43 HYGoThic-Medium 93, # 44 HYSMyeongJo-Medium # Chinese Traditional 93, # 45 MHei-Medium 93, # 46 MSung-Light # Chinese Simplified 93 # 47 STSong-Light ] FONT_X_HEIGHTS = [ 523, 532, 523, 532, 450, 461, 441, 462, 426, 439, 426, 439, 0, # Symbol 0, # ZapfDingbats 547, 547, 555, 555, 502, 515, 484, 494, 523, 523, 532, 532, 464, 466, 475, 477, 469, 482, 471, 469, 438, 556, 564, 556, 564, # Japanese 500, # 41 HeiseiKakuGo-W5 500, # 42 HeiseiMin-W3 # Korean 616, # 43 HYGoThic-Medium 616, # 44 HYSMyeongJo-Medium # Chinese Traditional 616, # 45 MHei-Medium 616, # 46 MSung-Light # Chinese Simplified 616 # 47 STSong-Light ] # Stuff for CIDFontType2 only FONT_MISSING_WIDTHS = [ 0, # 0 Helvetica 0, # 1 Helvetica-Bold 0, # 2 Helvetica-Oblique 0, # 3 Helvetica-BoldOblique 0, # 4 Times-Roman 0, # 5 Times-Bold 0, # 6 Times-Italic 0, # 7 Times-BoldItalic 0, # 8 Courier 0, # 9 Courier-Bold 0, # 10 Courier-Oblique 0, # 11 Courier-BoldOblique 0, # 12 Symbol 0, # 13 ZapfDingbats 0, # 14 AvantGarde-Book 0, # 15 AvantGarde-BookOblique 0, # 16 AvantGarde-Demi 0, # 17 AvantGarde-DemiOblique 0, # 18 Bookman-Demi 0, # 19 Bookman-DemiItalic 0, # 20 Bookman-Light 0, # 21 Bookman-LightItalic 0, # 22 Helvetica-Narrow 0, # 23 Helvetica-Narrow-Oblique 0, # 24 Helvetica-Narrow-Bold 0, # 25 Helvetica-Narrow-BoldOblique 0, # 26 NewCenturySchlbk-Roman 0, # 27 NewCenturySchlbk-Italic 0, # 28 NewCenturySchlbk-Bold 0, # 29 NewCenturySchlbk-BoldItalic 0, # 30 Palatino-Roman 0, # 31 Palatino-Italic 0, # 32 Palatino-Bold 0, # 33 Palatino-BoldItalic 0, # 34 ZapfChancery-MediumItalic 0, # 35 Helvetica-Condensed 0, # 36 Helvetica-Condensed-Bold 0, # 37 Helvetica-Condensed-Oblique 0, # 38 Helvetica-Condensed-BoldObl # Japanese 500, # 41 HeiseiKakuGo-W5 500, # 42 HeiseiMin-W3 # Korean 500, # 43 HYGoThic-Medium 500, # 44 HYSMyeongJo-Medium # Chinese Traditional 500, # 45 MHei-Medium 500, # 46 MSung-Light # Chinese Simplified 500 # 47 STSong-Light ] FONT_STEM_HS = [ 0, # 0 Helvetica 0, # 1 Helvetica-Bold 0, # 2 Helvetica-Oblique 0, # 3 Helvetica-BoldOblique 0, # 4 Times-Roman 0, # 5 Times-Bold 0, # 6 Times-Italic 0, # 7 Times-BoldItalic 0, # 8 Courier 0, # 9 Courier-Bold 0, # 10 Courier-Oblique 0, # 11 Courier-BoldOblique 0, # 12 Symbol 0, # 13 ZapfDingbats 0, # 14 AvantGarde-Book 0, # 15 AvantGarde-BookOblique 0, # 16 AvantGarde-Demi 0, # 17 AvantGarde-DemiOblique 0, # 18 Bookman-Demi 0, # 19 Bookman-DemiItalic 0, # 20 Bookman-Light 0, # 21 Bookman-LightItalic 0, # 22 Helvetica-Narrow 0, # 23 Helvetica-Narrow-Oblique 0, # 24 Helvetica-Narrow-Bold 0, # 25 Helvetica-Narrow-BoldOblique 0, # 26 NewCenturySchlbk-Roman 0, # 27 NewCenturySchlbk-Italic 0, # 28 NewCenturySchlbk-Bold 0, # 29 NewCenturySchlbk-BoldItalic 0, # 30 Palatino-Roman 0, # 31 Palatino-Italic 0, # 32 Palatino-Bold 0, # 33 Palatino-BoldItalic 0, # 34 ZapfChancery-MediumItalic 0, # 35 Helvetica-Condensed 0, # 36 Helvetica-Condensed-Bold 0, # 37 Helvetica-Condensed-Oblique 0, # 38 Helvetica-Condensed-BoldObl # Japanese 93, # 41 HeiseiKakuGo-W5 31, # 42 HeiseiMin-W3 # Korean 93, # 43 HYGoThic-Medium 93, # 44 HYSMyeongJo-Medium # Chinese Traditional 93, # 45 MHei-Medium 93, # 46 MSung-Light # Chinese Simplified 93 # 47 STSong-Light ] FONT_LEADINGS = [ 0, # 0 Helvetica 0, # 1 Helvetica-Bold 0, # 2 Helvetica-Oblique 0, # 3 Helvetica-BoldOblique 0, # 4 Times-Roman 0, # 5 Times-Bold 0, # 6 Times-Italic 0, # 7 Times-BoldItalic 0, # 8 Courier 0, # 9 Courier-Bold 0, # 10 Courier-Oblique 0, # 11 Courier-BoldOblique 0, # 12 Symbol 0, # 13 ZapfDingbats 0, # 14 AvantGarde-Book 0, # 15 AvantGarde-BookOblique 0, # 16 AvantGarde-Demi 0, # 17 AvantGarde-DemiOblique 0, # 18 Bookman-Demi 0, # 19 Bookman-DemiItalic 0, # 20 Bookman-Light 0, # 21 Bookman-LightItalic 0, # 22 Helvetica-Narrow 0, # 23 Helvetica-Narrow-Oblique 0, # 24 Helvetica-Narrow-Bold 0, # 25 Helvetica-Narrow-BoldOblique 0, # 26 NewCenturySchlbk-Roman 0, # 27 NewCenturySchlbk-Italic 0, # 28 NewCenturySchlbk-Bold 0, # 29 NewCenturySchlbk-BoldItalic 0, # 30 Palatino-Roman 0, # 31 Palatino-Italic 0, # 32 Palatino-Bold 0, # 33 Palatino-BoldItalic 0, # 34 ZapfChancery-MediumItalic 0, # 35 Helvetica-Condensed 0, # 36 Helvetica-Condensed-Bold 0, # 37 Helvetica-Condensed-Oblique 0, # 38 Helvetica-Condensed-BoldObl # Japanese 250, # 41 HeiseiKakuGo-W5 250, # 42 HeiseiMin-W3 # Korean 250, # 43 HYGoThic-Medium 250, # 44 HYSMyeongJo-Medium # Chinese Traditional 250, # 45 MHei-Medium 250, # 46 MSung-Light # Chinese Simplified 250 # 47 STSong-Light ] FONT_MAX_WIDTHS = [ 0, # 0 Helvetica 0, # 1 Helvetica-Bold 0, # 2 Helvetica-Oblique 0, # 3 Helvetica-BoldOblique 0, # 4 Times-Roman 0, # 5 Times-Bold 0, # 6 Times-Italic 0, # 7 Times-BoldItalic 0, # 8 Courier 0, # 9 Courier-Bold 0, # 10 Courier-Oblique 0, # 11 Courier-BoldOblique 0, # 12 Symbol 0, # 13 ZapfDingbats 0, # 14 AvantGarde-Book 0, # 15 AvantGarde-BookOblique 0, # 16 AvantGarde-Demi 0, # 17 AvantGarde-DemiOblique 0, # 18 Bookman-Demi 0, # 19 Bookman-DemiItalic 0, # 20 Bookman-Light 0, # 21 Bookman-LightItalic 0, # 22 Helvetica-Narrow 0, # 23 Helvetica-Narrow-Oblique 0, # 24 Helvetica-Narrow-Bold 0, # 25 Helvetica-Narrow-BoldOblique 0, # 26 NewCenturySchlbk-Roman 0, # 27 NewCenturySchlbk-Italic 0, # 28 NewCenturySchlbk-Bold 0, # 29 NewCenturySchlbk-BoldItalic 0, # 30 Palatino-Roman 0, # 31 Palatino-Italic 0, # 32 Palatino-Bold 0, # 33 Palatino-BoldItalic 0, # 34 ZapfChancery-MediumItalic 0, # 35 Helvetica-Condensed 0, # 36 Helvetica-Condensed-Bold 0, # 37 Helvetica-Condensed-Oblique 0, # 38 Helvetica-Condensed-BoldObl # Japanese 1000, # 41 HeiseiKakuGo-W5 1000, # 42 HeiseiMin-W3 # Korean 1000, # 43 HYGoThic-Medium 1000, # 44 HYSMyeongJo-Medium # Chinese Traditional 1000, # 45 MHei-Medium 1000, # 46 MSung-Light # Chinese Simplified 1000 # 47 STSong-Light ] FONT_AVG_WIDTHS = [ 0, # 0 Helvetica 0, # 1 Helvetica-Bold 0, # 2 Helvetica-Oblique 0, # 3 Helvetica-BoldOblique 0, # 4 Times-Roman 0, # 5 Times-Bold 0, # 6 Times-Italic 0, # 7 Times-BoldItalic 0, # 8 Courier 0, # 9 Courier-Bold 0, # 10 Courier-Oblique 0, # 11 Courier-BoldOblique 0, # 12 Symbol 0, # 13 ZapfDingbats 0, # 14 AvantGarde-Book 0, # 15 AvantGarde-BookOblique 0, # 16 AvantGarde-Demi 0, # 17 AvantGarde-DemiOblique 0, # 18 Bookman-Demi 0, # 19 Bookman-DemiItalic 0, # 20 Bookman-Light 0, # 21 Bookman-LightItalic 0, # 22 Helvetica-Narrow 0, # 23 Helvetica-Narrow-Oblique 0, # 24 Helvetica-Narrow-Bold 0, # 25 Helvetica-Narrow-BoldOblique 0, # 26 NewCenturySchlbk-Roman 0, # 27 NewCenturySchlbk-Italic 0, # 28 NewCenturySchlbk-Bold 0, # 29 NewCenturySchlbk-BoldItalic 0, # 30 Palatino-Roman 0, # 31 Palatino-Italic 0, # 32 Palatino-Bold 0, # 33 Palatino-BoldItalic 0, # 34 ZapfChancery-MediumItalic 0, # 35 Helvetica-Condensed 0, # 36 Helvetica-Condensed-Bold 0, # 37 Helvetica-Condensed-Oblique 0, # 38 Helvetica-Condensed-BoldObl # Japanese 689, # 41 HeiseiKakuGo-W5 702, # 42 HeiseiMin-W3 # Korean 1000, # 43 HYGoThic-Medium 1000, # 44 HYSMyeongJo-Medium # Chinese Traditional 1000, # 45 MHei-Medium 1000, # 46 MSung-Light # Chinese Simplified 1000 # 47 STSong-Light ] UNDERLINE_POSITION = -100 UNDERLINE_THICKNESS = 50 # for /W array in /DescendantFonts spec CID_FONT_WIDTHS = [ '', # 0 Helvetica '', # 1 Helvetica-Bold '', # 2 Helvetica-Oblique '', # 3 Helvetica-BoldOblique '', # 4 Times-Roman '', # 5 Times-Bold '', # 6 Times-Italic '', # 7 Times-BoldItalic '', # 8 Courier '', # 9 Courier-Bold '', # 10 Courier-Oblique '', # 11 Courier-BoldOblique '', # 12 Symbol '', # 13 ZapfDingbats '', # 14 AvantGarde-Book '', # 15 AvantGarde-BookOblique '', # 16 AvantGarde-Demi '', # 17 AvantGarde-DemiOblique '', # 18 Bookman-Demi '', # 19 Bookman-DemiItalic '', # 20 Bookman-Light '', # 21 Bookman-LightItalic '', # 22 Helvetica-Narrow '', # 23 Helvetica-Narrow-Oblique '', # 24 Helvetica-Narrow-Bold '', # 25 Helvetica-Narrow-BoldOblique '', # 26 NewCenturySchlbk-Roman '', # 27 NewCenturySchlbk-Italic '', # 28 NewCenturySchlbk-Bold '', # 29 NewCenturySchlbk-BoldItalic '', # 30 Palatino-Roman '', # 31 Palatino-Italic '', # 32 Palatino-Bold '', # 33 Palatino-BoldItalic '', # 34 ZapfChancery-MediumItalic '', # 35 Helvetica-Condensed '', # 36 Helvetica-Condensed-Bold '', # 37 Helvetica-Condensed-Oblique '', # 38 Helvetica-Condensed-BoldObl # Japanese '[ 1 95 500 231 632 500 ]', # 41 HeiseiKakuGo-W5 - OK '[ 1 95 500 231 632 500 ]', # 42 HeiseiMin-W3 - OK # Korean '[ 1 95 500 8094 8190 500 ]', # 43 HYGoThic-Medium - OK '[ 1 95 500 8094 8190 500 ]', # 44 HYSMyeongJo-Medium - OK # Chinese Traditional '[ 1 95 500 13648 13742 500 ]', # 45 MHei-Medium - OK '[ 1 95 500 13648 13742 500 ]', # 46 MSung-Light - OK # Chinese Simplified '[ 1 95 500 814 939 500 7712 [ 500 ] 7716 [ 500 ] ]' # 47 STSong-Light - OK ] # for /CIDSystemInfo << >> CID_SYS_INFO = [ '', # 0 Helvetica '', # 1 Helvetica-Bold '', # 2 Helvetica-Oblique '', # 3 Helvetica-BoldOblique '', # 4 Times-Roman '', # 5 Times-Bold '', # 6 Times-Italic '', # 7 Times-BoldItalic '', # 8 Courier '', # 9 Courier-Bold '', # 10 Courier-Oblique '', # 11 Courier-BoldOblique '', # 12 Symbol '', # 13 ZapfDingbats '', # 14 AvantGarde-Book '', # 15 AvantGarde-BookOblique '', # 16 AvantGarde-Demi '', # 17 AvantGarde-DemiOblique '', # 18 Bookman-Demi '', # 19 Bookman-DemiItalic '', # 20 Bookman-Light '', # 21 Bookman-LightItalic '', # 22 Helvetica-Narrow '', # 23 Helvetica-Narrow-Oblique '', # 24 Helvetica-Narrow-Bold '', # 25 Helvetica-Narrow-BoldOblique '', # 26 NewCenturySchlbk-Roman '', # 27 NewCenturySchlbk-Italic '', # 28 NewCenturySchlbk-Bold '', # 29 NewCenturySchlbk-BoldItalic '', # 30 Palatino-Roman '', # 31 Palatino-Italic '', # 32 Palatino-Bold '', # 33 Palatino-BoldItalic '', # 34 ZapfChancery-MediumItalic '', # 35 Helvetica-Condensed '', # 36 Helvetica-Condensed-Bold '', # 37 Helvetica-Condensed-Oblique '', # 38 Helvetica-Condensed-BoldObl # Japanese '/Registry (Adobe) /Ordering (Japan1) /Supplement 2', # 41 HeiseiKakuGo-W5 '/Registry (Adobe) /Ordering (Japan1) /Supplement 2', # 42 HeiseiMin-W3 # Korean '/Registry (Adobe) /Ordering (Korea1) /Supplement 1', # 43 HYGoThic-Medium '/Registry (Adobe) /Ordering (Korea1) /Supplement 1', # 44 HYSMyeongJo-Medium # Chinese Traditional '/Registry (Adobe) /Ordering (CNS1) /Supplement 0', # 45 MHei-Medium '/Registry (Adobe) /Ordering (CNS1) /Supplement 0', # 46 MSung-Light # Chinese Simplified '/Registry (Adobe) /Ordering (GB1) /Supplement 2' # 47 STSong-Light ] # Currently contains only /Panose <....> for font descripter in CJK fonts FONT_STYLE_LIST = [ '', # 0 Helvetica '', # 1 Helvetica-Bold '', # 2 Helvetica-Oblique '', # 3 Helvetica-BoldOblique '', # 4 Times-Roman '', # 5 Times-Bold '', # 6 Times-Italic '', # 7 Times-BoldItalic '', # 8 Courier '', # 9 Courier-Bold '', # 10 Courier-Oblique '', # 11 Courier-BoldOblique '', # 12 Symbol '', # 13 ZapfDingbats '', # 14 AvantGarde-Book '', # 15 AvantGarde-BookOblique '', # 16 AvantGarde-Demi '', # 17 AvantGarde-DemiOblique '', # 18 Bookman-Demi '', # 19 Bookman-DemiItalic '', # 20 Bookman-Light '', # 21 Bookman-LightItalic '', # 22 Helvetica-Narrow '', # 23 Helvetica-Narrow-Oblique '', # 24 Helvetica-Narrow-Bold '', # 25 Helvetica-Narrow-BoldOblique '', # 26 NewCenturySchlbk-Roman '', # 27 NewCenturySchlbk-Italic '', # 28 NewCenturySchlbk-Bold '', # 29 NewCenturySchlbk-BoldItalic '', # 30 Palatino-Roman '', # 31 Palatino-Italic '', # 32 Palatino-Bold '', # 33 Palatino-BoldItalic '', # 34 ZapfChancery-MediumItalic '', # 35 Helvetica-Condensed '', # 36 Helvetica-Condensed-Bold '', # 37 Helvetica-Condensed-Oblique '', # 38 Helvetica-Condensed-BoldObl # Panose will affect font substitution on platforms with native OS fonts, # and seems to override font names specifying the Acrobat Resource's CID fonts. # For example, on Windows 95-J, MSGothic and MSMincho will substitutes the fonts, # and if the /Panose below are reversed between HeiseiKakuGo and HeiseiMin, # the subsituted MS... fonts get reversed. } # Japanese '/Panose <0801020b0600000000000000>', # 41 HeiseiKakuGo-W5 '/Panose <010502020400000000000000>', # 42 HeiseiMin-W3 # Korean '/Panose <0801020b0600000000000000>', # 43 HYGoThic-Medium <010502020609000000000000> '/Panose <010502020400000000000000>', # 44 HYSMyeongJo-Medium # Chinese Traditional '/Panose <0801020b0600000000000000>', # 45 MHei-Medium '/Panose <010502020400000000000000>', # 46 MSung-Light # Chinese Simplified '/Panose <010502020400000000000000>' # 47 STSong-Light ] GLYPHS = { 0x0041 => 'A', 0x00C6 => 'AE', 0x01FC => 'AEacute', 0xF7E6 => 'AEsmall', 0x00C1 => 'Aacute', 0xF7E1 => 'Aacutesmall', 0x0102 => 'Abreve', 0x00C2 => 'Acircumflex', 0xF7E2 => 'Acircumflexsmall', 0xF6C9 => 'Acute', 0xF7B4 => 'Acutesmall', 0x00C4 => 'Adieresis', 0xF7E4 => 'Adieresissmall', 0x00C0 => 'Agrave', 0xF7E0 => 'Agravesmall', 0x0391 => 'Alpha', 0x0386 => 'Alphatonos', 0x0100 => 'Amacron', 0x0104 => 'Aogonek', 0x00C5 => 'Aring', 0x01FA => 'Aringacute', 0xF7E5 => 'Aringsmall', 0xF761 => 'Asmall', 0x00C3 => 'Atilde', 0xF7E3 => 'Atildesmall', 0x0042 => 'B', 0x0392 => 'Beta', 0xF6F4 => 'Brevesmall', 0xF762 => 'Bsmall', 0x0043 => 'C', 0x0106 => 'Cacute', 0xF6CA => 'Caron', 0xF6F5 => 'Caronsmall', 0x010C => 'Ccaron', 0x00C7 => 'Ccedilla', 0xF7E7 => 'Ccedillasmall', 0x0108 => 'Ccircumflex', 0x010A => 'Cdotaccent', 0xF7B8 => 'Cedillasmall', 0x03A7 => 'Chi', 0xF6F6 => 'Circumflexsmall', 0xF763 => 'Csmall', 0x0044 => 'D', 0x010E => 'Dcaron', 0x0110 => 'Dcroat', 0x2206 => 'Delta', 0x0394 => 'Delta', 0xF6CB => 'Dieresis', 0xF6CC => 'DieresisAcute', 0xF6CD => 'DieresisGrave', 0xF7A8 => 'Dieresissmall', 0xF6F7 => 'Dotaccentsmall', 0xF764 => 'Dsmall', 0x0045 => 'E', 0x00C9 => 'Eacute', 0xF7E9 => 'Eacutesmall', 0x0114 => 'Ebreve', 0x011A => 'Ecaron', 0x00CA => 'Ecircumflex', 0xF7EA => 'Ecircumflexsmall', 0x00CB => 'Edieresis', 0xF7EB => 'Edieresissmall', 0x0116 => 'Edotaccent', 0x00C8 => 'Egrave', 0xF7E8 => 'Egravesmall', 0x0112 => 'Emacron', 0x014A => 'Eng', 0x0118 => 'Eogonek', 0x0395 => 'Epsilon', 0x0388 => 'Epsilontonos', 0xF765 => 'Esmall', 0x0397 => 'Eta', 0x0389 => 'Etatonos', 0x00D0 => 'Eth', 0xF7F0 => 'Ethsmall', 0x20AC => 'Euro', 0x0046 => 'F', 0xF766 => 'Fsmall', 0x0047 => 'G', 0x0393 => 'Gamma', 0x011E => 'Gbreve', 0x01E6 => 'Gcaron', 0x011C => 'Gcircumflex', 0x0122 => 'Gcommaaccent', 0x0120 => 'Gdotaccent', 0xF6CE => 'Grave', 0xF760 => 'Gravesmall', 0xF767 => 'Gsmall', 0x0048 => 'H', 0x25CF => 'H18533', 0x25AA => 'H18543', 0x25AB => 'H18551', 0x25A1 => 'H22073', 0x0126 => 'Hbar', 0x0124 => 'Hcircumflex', 0xF768 => 'Hsmall', 0xF6CF => 'Hungarumlaut', 0xF6F8 => 'Hungarumlautsmall', 0x0049 => 'I', 0x0132 => 'IJ', 0x00CD => 'Iacute', 0xF7ED => 'Iacutesmall', 0x012C => 'Ibreve', 0x00CE => 'Icircumflex', 0xF7EE => 'Icircumflexsmall', 0x00CF => 'Idieresis', 0xF7EF => 'Idieresissmall', 0x0130 => 'Idotaccent', 0x2111 => 'Ifraktur', 0x00CC => 'Igrave', 0xF7EC => 'Igravesmall', 0x012A => 'Imacron', 0x012E => 'Iogonek', 0x0399 => 'Iota', 0x03AA => 'Iotadieresis', 0x038A => 'Iotatonos', 0xF769 => 'Ismall', 0x0128 => 'Itilde', 0x004A => 'J', 0x0134 => 'Jcircumflex', 0xF76A => 'Jsmall', 0x004B => 'K', 0x039A => 'Kappa', 0x0136 => 'Kcommaaccent', 0xF76B => 'Ksmall', 0x004C => 'L', 0xF6BF => 'LL', 0x0139 => 'Lacute', 0x039B => 'Lambda', 0x013D => 'Lcaron', 0x013B => 'Lcommaaccent', 0x013F => 'Ldot', 0x0141 => 'Lslash', 0xF6F9 => 'Lslashsmall', 0xF76C => 'Lsmall', 0x004D => 'M', 0xF6D0 => 'Macron', 0xF7AF => 'Macronsmall', 0xF76D => 'Msmall', 0x039C => 'Mu', 0x004E => 'N', 0x0143 => 'Nacute', 0x0147 => 'Ncaron', 0x0145 => 'Ncommaaccent', 0xF76E => 'Nsmall', 0x00D1 => 'Ntilde', 0xF7F1 => 'Ntildesmall', 0x039D => 'Nu', 0x004F => 'O', 0x0152 => 'OE', 0xF6FA => 'OEsmall', 0x00D3 => 'Oacute', 0xF7F3 => 'Oacutesmall', 0x014E => 'Obreve', 0x00D4 => 'Ocircumflex', 0xF7F4 => 'Ocircumflexsmall', 0x00D6 => 'Odieresis', 0xF7F6 => 'Odieresissmall', 0xF6FB => 'Ogoneksmall', 0x00D2 => 'Ograve', 0xF7F2 => 'Ogravesmall', 0x01A0 => 'Ohorn', # 0x0150 => 'Ohungarumlaut', 0x014C => 'Omacron', 0x0150 => 'Otilde', 0x014C => 'Omacron', 0x2126 => 'Omega', 0x03A9 => 'Omega', 0x038F => 'Omegatonos', 0x039F => 'Omicron', 0x038C => 'Omicrontonos', 0x00D8 => 'Oslash', 0x01FE => 'Oslashacute', 0xF7F8 => 'Oslashsmall', 0xF76F => 'Osmall', 0x00D5 => 'Otilde', 0xF7F5 => 'Otildesmall', 0x0050 => 'P', 0x03A6 => 'Phi', 0x03A0 => 'Pi', 0x03A8 => 'Psi', 0xF770 => 'Psmall', 0x0051 => 'Q', 0xF771 => 'Qsmall', 0x0052 => 'R', 0x0154 => 'Racute', 0x0158 => 'Rcaron', 0x0156 => 'Rcommaaccent', 0x211C => 'Rfraktur', 0x03A1 => 'Rho', 0xF6FC => 'Ringsmall', 0xF772 => 'Rsmall', 0x0053 => 'S', 0x250C => 'SF010000', 0x2514 => 'SF020000', 0x2510 => 'SF030000', 0x2518 => 'SF040000', 0x253C => 'SF050000', 0x252C => 'SF060000', 0x2534 => 'SF070000', 0x251C => 'SF080000', 0x2524 => 'SF090000', 0x2500 => 'SF100000', 0x2502 => 'SF110000', 0x2561 => 'SF190000', 0x2562 => 'SF200000', 0x2556 => 'SF210000', 0x2555 => 'SF220000', 0x2563 => 'SF230000', 0x2551 => 'SF240000', 0x2557 => 'SF250000', 0x255D => 'SF260000', 0x255C => 'SF270000', 0x255B => 'SF280000', 0x255E => 'SF360000', 0x255F => 'SF370000', 0x255A => 'SF380000', 0x2554 => 'SF390000', 0x2569 => 'SF400000', 0x2566 => 'SF410000', 0x2560 => 'SF420000', 0x2550 => 'SF430000', 0x256C => 'SF440000', 0x2567 => 'SF450000', 0x2568 => 'SF460000', 0x2564 => 'SF470000', 0x2565 => 'SF480000', 0x2559 => 'SF490000', 0x2558 => 'SF500000', 0x2552 => 'SF510000', 0x2553 => 'SF520000', 0x256B => 'SF530000', 0x256A => 'SF540000', 0x015A => 'Sacute', 0x0160 => 'Scaron', 0xF6FD => 'Scaronsmall', 0x015E => 'Scedilla', 0xF6C1 => 'Scedilla', 0x015C => 'Scircumflex', 0x0218 => 'Scommaaccent', 0x03A3 => 'Sigma', 0xF773 => 'Ssmall', 0x0054 => 'T', 0x03A4 => 'Tau', 0x0166 => 'Tbar', 0x0164 => 'Tcaron', 0x0162 => 'Tcommaaccent', 0x021A => 'Tcommaaccent', 0x0398 => 'Theta', 0x00DE => 'Thorn', 0xF7FE => 'Thornsmall', 0xF6FE => 'Tildesmall', 0xF774 => 'Tsmall', 0x0055 => 'U', 0x00DA => 'Uacute', 0xF7FA => 'Uacutesmall', 0x016C => 'Ubreve', 0x00DB => 'Ucircumflex', 0xF7FB => 'Ucircumflexsmall', 0x00DC => 'Udieresis', 0xF7FC => 'Udieresissmall', 0x00D9 => 'Ugrave', 0xF7F9 => 'Ugravesmall', 0x01AF => 'Uhorn', # 0x0170 => 'Uhungarumlaut', 0x016A => 'Umacron', 0x0170 => 'Ucircumflex', 0x016A => 'Umacron', 0x0172 => 'Uogonek', 0x03A5 => 'Upsilon', 0x03D2 => 'Upsilon1', 0x03AB => 'Upsilondieresis', 0x038E => 'Upsilontonos', 0x016E => 'Uring', 0xF775 => 'Usmall', 0x0168 => 'Utilde', 0x0056 => 'V', 0xF776 => 'Vsmall', 0x0057 => 'W', 0x1E82 => 'Wacute', 0x0174 => 'Wcircumflex', 0x1E84 => 'Wdieresis', 0x1E80 => 'Wgrave', 0xF777 => 'Wsmall', 0x0058 => 'X', 0x039E => 'Xi', 0xF778 => 'Xsmall', 0x0059 => 'Y', 0x00DD => 'Yacute', 0xF7FD => 'Yacutesmall', 0x0176 => 'Ycircumflex', 0x0178 => 'Ydieresis', 0xF7FF => 'Ydieresissmall', 0x1EF2 => 'Ygrave', 0xF779 => 'Ysmall', 0x005A => 'Z', 0x0179 => 'Zacute', 0x017D => 'Zcaron', 0xF6FF => 'Zcaronsmall', 0x017B => 'Zdotaccent', 0x0396 => 'Zeta', 0xF77A => 'Zsmall', 0x0061 => 'a', 0x00E1 => 'aacute', 0x0103 => 'abreve', 0x00E2 => 'acircumflex', 0x00B4 => 'acute', 0x0301 => 'acutecomb', 0x00E4 => 'adieresis', 0x00E6 => 'ae', 0x01FD => 'aeacute', 0x2015 => 'afii00208', 0x0410 => 'afii10017', 0x0411 => 'afii10018', 0x0412 => 'afii10019', 0x0413 => 'afii10020', 0x0414 => 'afii10021', 0x0415 => 'afii10022', 0x0401 => 'afii10023', 0x0416 => 'afii10024', 0x0417 => 'afii10025', 0x0418 => 'afii10026', 0x0419 => 'afii10027', 0x041A => 'afii10028', 0x041B => 'afii10029', 0x041C => 'afii10030', 0x041D => 'afii10031', 0x041E => 'afii10032', 0x041F => 'afii10033', 0x0420 => 'afii10034', 0x0421 => 'afii10035', 0x0422 => 'afii10036', 0x0423 => 'afii10037', 0x0424 => 'afii10038', 0x0425 => 'afii10039', 0x0426 => 'afii10040', 0x0427 => 'afii10041', 0x0428 => 'afii10042', 0x0429 => 'afii10043', 0x042A => 'afii10044', 0x042B => 'afii10045', 0x042C => 'afii10046', 0x042D => 'afii10047', 0x042E => 'afii10048', 0x042F => 'afii10049', 0x0490 => 'afii10050', 0x0402 => 'afii10051', 0x0403 => 'afii10052', 0x0404 => 'afii10053', 0x0405 => 'afii10054', 0x0406 => 'afii10055', 0x0407 => 'afii10056', 0x0408 => 'afii10057', 0x0409 => 'afii10058', 0x040A => 'afii10059', 0x040B => 'afii10060', 0x040C => 'afii10061', 0x040E => 'afii10062', 0xF6C4 => 'afii10063', 0xF6C5 => 'afii10064', 0x0430 => 'afii10065', 0x0431 => 'afii10066', 0x0432 => 'afii10067', 0x0433 => 'afii10068', 0x0434 => 'afii10069', 0x0435 => 'afii10070', 0x0451 => 'afii10071', 0x0436 => 'afii10072', 0x0437 => 'afii10073', 0x0438 => 'afii10074', 0x0439 => 'afii10075', 0x043A => 'afii10076', 0x043B => 'afii10077', 0x043C => 'afii10078', 0x043D => 'afii10079', 0x043E => 'afii10080', 0x043F => 'afii10081', 0x0440 => 'afii10082', 0x0441 => 'afii10083', 0x0442 => 'afii10084', 0x0443 => 'afii10085', 0x0444 => 'afii10086', 0x0445 => 'afii10087', 0x0446 => 'afii10088', 0x0447 => 'afii10089', 0x0448 => 'afii10090', 0x0449 => 'afii10091', 0x044A => 'afii10092', 0x044B => 'afii10093', 0x044C => 'afii10094', 0x044D => 'afii10095', 0x044E => 'afii10096', 0x044F => 'afii10097', 0x0491 => 'afii10098', 0x0452 => 'afii10099', 0x0453 => 'afii10100', 0x0454 => 'afii10101', 0x0455 => 'afii10102', 0x0456 => 'afii10103', 0x0457 => 'afii10104', 0x0458 => 'afii10105', 0x0459 => 'afii10106', 0x045A => 'afii10107', 0x045B => 'afii10108', 0x045C => 'afii10109', 0x045E => 'afii10110', 0x040F => 'afii10145', 0x0462 => 'afii10146', 0x0472 => 'afii10147', 0x0474 => 'afii10148', 0xF6C6 => 'afii10192', 0x045F => 'afii10193', 0x0463 => 'afii10194', 0x0473 => 'afii10195', 0x0475 => 'afii10196', 0xF6C7 => 'afii10831', 0xF6C8 => 'afii10832', 0x04D9 => 'afii10846', 0x200E => 'afii299', 0x200F => 'afii300', 0x200D => 'afii301', 0x066A => 'afii57381', 0x060C => 'afii57388', 0x0660 => 'afii57392', 0x0661 => 'afii57393', 0x0662 => 'afii57394', 0x0663 => 'afii57395', 0x0664 => 'afii57396', 0x0665 => 'afii57397', 0x0666 => 'afii57398', 0x0667 => 'afii57399', 0x0668 => 'afii57400', 0x0669 => 'afii57401', 0x061B => 'afii57403', 0x061F => 'afii57407', 0x0621 => 'afii57409', 0x0622 => 'afii57410', 0x0623 => 'afii57411', 0x0624 => 'afii57412', 0x0625 => 'afii57413', 0x0626 => 'afii57414', 0x0627 => 'afii57415', 0x0628 => 'afii57416', 0x0629 => 'afii57417', 0x062A => 'afii57418', 0x062B => 'afii57419', 0x062C => 'afii57420', 0x062D => 'afii57421', 0x062E => 'afii57422', 0x062F => 'afii57423', 0x0630 => 'afii57424', 0x0631 => 'afii57425', 0x0632 => 'afii57426', 0x0633 => 'afii57427', 0x0634 => 'afii57428', 0x0635 => 'afii57429', 0x0636 => 'afii57430', 0x0637 => 'afii57431', 0x0638 => 'afii57432', 0x0639 => 'afii57433', 0x063A => 'afii57434', 0x0640 => 'afii57440', 0x0641 => 'afii57441', 0x0642 => 'afii57442', 0x0643 => 'afii57443', 0x0644 => 'afii57444', 0x0645 => 'afii57445', 0x0646 => 'afii57446', 0x0648 => 'afii57448', 0x0649 => 'afii57449', 0x064A => 'afii57450', 0x064B => 'afii57451', 0x064C => 'afii57452', 0x064D => 'afii57453', 0x064E => 'afii57454', 0x064F => 'afii57455', 0x0650 => 'afii57456', 0x0651 => 'afii57457', 0x0652 => 'afii57458', 0x0647 => 'afii57470', 0x06A4 => 'afii57505', 0x067E => 'afii57506', 0x0686 => 'afii57507', 0x0698 => 'afii57508', 0x06AF => 'afii57509', 0x0679 => 'afii57511', 0x0688 => 'afii57512', 0x0691 => 'afii57513', 0x06BA => 'afii57514', 0x06D2 => 'afii57519', 0x06D5 => 'afii57534', 0x20AA => 'afii57636', 0x05BE => 'afii57645', 0x05C3 => 'afii57658', 0x05D0 => 'afii57664', 0x05D1 => 'afii57665', 0x05D2 => 'afii57666', 0x05D3 => 'afii57667', 0x05D4 => 'afii57668', 0x05D5 => 'afii57669', 0x05D6 => 'afii57670', 0x05D7 => 'afii57671', 0x05D8 => 'afii57672', 0x05D9 => 'afii57673', 0x05DA => 'afii57674', 0x05DB => 'afii57675', 0x05DC => 'afii57676', 0x05DD => 'afii57677', 0x05DE => 'afii57678', 0x05DF => 'afii57679', 0x05E0 => 'afii57680', 0x05E1 => 'afii57681', 0x05E2 => 'afii57682', 0x05E3 => 'afii57683', 0x05E4 => 'afii57684', 0x05E5 => 'afii57685', 0x05E6 => 'afii57686', 0x05E7 => 'afii57687', 0x05E8 => 'afii57688', 0x05E9 => 'afii57689', 0x05EA => 'afii57690', 0xFB2A => 'afii57694', 0xFB2B => 'afii57695', 0xFB4B => 'afii57700', 0xFB1F => 'afii57705', 0x05F0 => 'afii57716', 0x05F1 => 'afii57717', 0x05F2 => 'afii57718', 0xFB35 => 'afii57723', 0x05B4 => 'afii57793', 0x05B5 => 'afii57794', 0x05B6 => 'afii57795', 0x05BB => 'afii57796', 0x05B8 => 'afii57797', 0x05B7 => 'afii57798', 0x05B0 => 'afii57799', 0x05B2 => 'afii57800', 0x05B1 => 'afii57801', 0x05B3 => 'afii57802', 0x05C2 => 'afii57803', 0x05C1 => 'afii57804', 0x05B9 => 'afii57806', 0x05BC => 'afii57807', 0x05BD => 'afii57839', 0x05BF => 'afii57841', 0x05C0 => 'afii57842', 0x02BC => 'afii57929', 0x2105 => 'afii61248', 0x2113 => 'afii61289', 0x2116 => 'afii61352', 0x202C => 'afii61573', 0x202D => 'afii61574', 0x202E => 'afii61575', 0x200C => 'afii61664', 0x066D => 'afii63167', 0x02BD => 'afii64937', 0x00E0 => 'agrave', 0x2135 => 'aleph', 0x03B1 => 'alpha', 0x03AC => 'alphatonos', 0x0101 => 'amacron', 0x0026 => 'ampersand', 0xF726 => 'ampersandsmall', 0x2220 => 'angle', 0x2329 => 'angleleft', 0x232A => 'angleright', 0x0387 => 'anoteleia', 0x0105 => 'aogonek', 0x2248 => 'approxequal', 0x00E5 => 'aring', 0x01FB => 'aringacute', 0x2194 => 'arrowboth', 0x21D4 => 'arrowdblboth', 0x21D3 => 'arrowdbldown', 0x21D0 => 'arrowdblleft', 0x21D2 => 'arrowdblright', 0x21D1 => 'arrowdblup', 0x2193 => 'arrowdown', 0xF8E7 => 'arrowhorizex', 0x2190 => 'arrowleft', 0x2192 => 'arrowright', 0x2191 => 'arrowup', 0x2195 => 'arrowupdn', 0x21A8 => 'arrowupdnbse', 0xF8E6 => 'arrowvertex', 0x005E => 'asciicircum', 0x007E => 'asciitilde', 0x002A => 'asterisk', 0x2217 => 'asteriskmath', 0xF6E9 => 'asuperior', 0x0040 => 'at', 0x00E3 => 'atilde', 0x0062 => 'b', 0x005C => 'backslash', 0x007C => 'bar', 0x03B2 => 'beta', 0x2588 => 'block', 0xF8F4 => 'braceex', 0x007B => 'braceleft', 0xF8F3 => 'braceleftbt', 0xF8F2 => 'braceleftmid', 0xF8F1 => 'bracelefttp', 0x007D => 'braceright', 0xF8FE => 'bracerightbt', 0xF8FD => 'bracerightmid', 0xF8FC => 'bracerighttp', 0x005B => 'bracketleft', 0xF8F0 => 'bracketleftbt', 0xF8EF => 'bracketleftex', 0xF8EE => 'bracketlefttp', 0x005D => 'bracketright', 0xF8FB => 'bracketrightbt', 0xF8FA => 'bracketrightex', 0xF8F9 => 'bracketrighttp', 0x02D8 => 'breve', 0x00A6 => 'brokenbar', 0xF6EA => 'bsuperior', 0x2022 => 'bullet', 0x0063 => 'c', 0x0107 => 'cacute', 0x02C7 => 'caron', 0x21B5 => 'carriagereturn', 0x010D => 'ccaron', 0x00E7 => 'ccedilla', 0x0109 => 'ccircumflex', 0x010B => 'cdotaccent', 0x00B8 => 'cedilla', 0x00A2 => 'cent', 0xF6DF => 'centinferior', 0xF7A2 => 'centoldstyle', 0xF6E0 => 'centsuperior', 0x03C7 => 'chi', 0x25CB => 'circle', 0x2297 => 'circlemultiply', 0x2295 => 'circleplus', 0x02C6 => 'circumflex', 0x2663 => 'club', 0x003A => 'colon', 0x20A1 => 'colonmonetary', 0x002C => 'comma', 0xF6C3 => 'commaaccent', 0xF6E1 => 'commainferior', 0xF6E2 => 'commasuperior', 0x2245 => 'congruent', 0x00A9 => 'copyright', 0xF8E9 => 'copyrightsans', 0xF6D9 => 'copyrightserif', 0x00A4 => 'currency', 0xF6D1 => 'cyrBreve', 0xF6D2 => 'cyrFlex', 0xF6D4 => 'cyrbreve', 0xF6D5 => 'cyrflex', 0x0064 => 'd', 0x2020 => 'dagger', 0x2021 => 'daggerdbl', 0xF6D3 => 'dblGrave', 0xF6D6 => 'dblgrave', 0x010F => 'dcaron', 0x0111 => 'dcroat', 0x00B0 => 'degree', 0x03B4 => 'delta', 0x2666 => 'diamond', 0x00A8 => 'dieresis', 0xF6D7 => 'dieresisacute', 0xF6D8 => 'dieresisgrave', 0x0385 => 'dieresistonos', 0x00F7 => 'divide', 0x2593 => 'dkshade', 0x2584 => 'dnblock', 0x0024 => 'dollar', 0xF6E3 => 'dollarinferior', 0xF724 => 'dollaroldstyle', 0xF6E4 => 'dollarsuperior', 0x20AB => 'dong', 0x02D9 => 'dotaccent', 0x0323 => 'dotbelowcomb', 0x0131 => 'dotlessi', 0xF6BE => 'dotlessj', 0x22C5 => 'dotmath', 0xF6EB => 'dsuperior', 0x0065 => 'e', 0x00E9 => 'eacute', 0x0115 => 'ebreve', 0x011B => 'ecaron', 0x00EA => 'ecircumflex', 0x00EB => 'edieresis', 0x0117 => 'edotaccent', 0x00E8 => 'egrave', 0x0038 => 'eight', 0x2088 => 'eightinferior', 0xF738 => 'eightoldstyle', 0x2078 => 'eightsuperior', 0x2208 => 'element', 0x2026 => 'ellipsis', 0x0113 => 'emacron', 0x2014 => 'emdash', 0x2205 => 'emptyset', 0x2013 => 'endash', 0x014B => 'eng', 0x0119 => 'eogonek', 0x03B5 => 'epsilon', 0x03AD => 'epsilontonos', 0x003D => 'equal', 0x2261 => 'equivalence', 0x212E => 'estimated', 0xF6EC => 'esuperior', 0x03B7 => 'eta', 0x03AE => 'etatonos', 0x00F0 => 'eth', 0x0021 => 'exclam', 0x203C => 'exclamdbl', 0x00A1 => 'exclamdown', 0xF7A1 => 'exclamdownsmall', 0xF721 => 'exclamsmall', 0x2203 => 'existential', 0x0066 => 'f', 0x2640 => 'female', 0xFB00 => 'ff', 0xFB03 => 'ffi', 0xFB04 => 'ffl', 0xFB01 => 'fi', 0x2012 => 'figuredash', 0x25A0 => 'filledbox', 0x25AC => 'filledrect', 0x0035 => 'five', 0x215D => 'fiveeighths', 0x2085 => 'fiveinferior', 0xF735 => 'fiveoldstyle', 0x2075 => 'fivesuperior', 0xFB02 => 'fl', 0x0192 => 'florin', 0x0034 => 'four', 0x2084 => 'fourinferior', 0xF734 => 'fouroldstyle', 0x2074 => 'foursuperior', 0x2044 => 'fraction', 0x2215 => 'fraction', 0x20A3 => 'franc', 0x0067 => 'g', 0x03B3 => 'gamma', 0x011F => 'gbreve', 0x01E7 => 'gcaron', 0x011D => 'gcircumflex', 0x0123 => 'gcommaaccent', 0x0121 => 'gdotaccent', 0x00DF => 'germandbls', 0x2207 => 'gradient', 0x0060 => 'grave', 0x0300 => 'gravecomb', 0x003E => 'greater', 0x2265 => 'greaterequal', 0x00AB => 'guillemotleft', 0x00BB => 'guillemotright', 0x2039 => 'guilsinglleft', 0x203A => 'guilsinglright', 0x0068 => 'h', 0x0127 => 'hbar', 0x0125 => 'hcircumflex', 0x2665 => 'heart', 0x0309 => 'hookabovecomb', 0x2302 => 'house', 0x02DD => 'hungarumlaut', 0x002D => 'hyphen', 0x00AD => 'hyphen', 0xF6E5 => 'hypheninferior', 0xF6E6 => 'hyphensuperior', 0x0069 => 'i', 0x00ED => 'iacute', 0x012D => 'ibreve', 0x00EE => 'icircumflex', 0x00EF => 'idieresis', 0x00EC => 'igrave', 0x0133 => 'ij', 0x012B => 'imacron', 0x221E => 'infinity', 0x222B => 'integral', 0x2321 => 'integralbt', 0xF8F5 => 'integralex', 0x2320 => 'integraltp', 0x2229 => 'intersection', 0x25D8 => 'invbullet', 0x25D9 => 'invcircle', 0x263B => 'invsmileface', 0x012F => 'iogonek', 0x03B9 => 'iota', 0x03CA => 'iotadieresis', 0x0390 => 'iotadieresistonos', 0x03AF => 'iotatonos', 0xF6ED => 'isuperior', 0x0129 => 'itilde', 0x006A => 'j', 0x0135 => 'jcircumflex', 0x006B => 'k', 0x03BA => 'kappa', 0x0137 => 'kcommaaccent', 0x0138 => 'kgreenlandic', 0x006C => 'l', 0x013A => 'lacute', 0x03BB => 'lambda', 0x013E => 'lcaron', 0x013C => 'lcommaaccent', 0x0140 => 'ldot', 0x003C => 'less', 0x2264 => 'lessequal', 0x258C => 'lfblock', 0x20A4 => 'lira', 0xF6C0 => 'll', 0x2227 => 'logicaland', 0x00AC => 'logicalnot', 0x2228 => 'logicalor', 0x017F => 'longs', 0x25CA => 'lozenge', 0x0142 => 'lslash', 0xF6EE => 'lsuperior', 0x2591 => 'ltshade', 0x006D => 'm', 0x00AF => 'macron', 0x02C9 => 'macron', 0x2642 => 'male', 0x2212 => 'minus', 0x2032 => 'minute', 0xF6EF => 'msuperior', 0x00B5 => 'mu', 0x03BC => 'mu', 0x00D7 => 'multiply', 0x266A => 'musicalnote', 0x266B => 'musicalnotedbl', 0x006E => 'n', 0x0144 => 'nacute', 0x0149 => 'napostrophe', 0x0148 => 'ncaron', 0x0146 => 'ncommaaccent', 0x0039 => 'nine', 0x2089 => 'nineinferior', 0xF739 => 'nineoldstyle', 0x2079 => 'ninesuperior', 0x2209 => 'notelement', 0x2260 => 'notequal', 0x2284 => 'notsubset', 0x207F => 'nsuperior', 0x00F1 => 'ntilde', 0x03BD => 'nu', 0x0023 => 'numbersign', 0x006F => 'o', 0x00F3 => 'oacute', 0x014F => 'obreve', 0x00F4 => 'ocircumflex', 0x00F6 => 'odieresis', 0x0153 => 'oe', 0x02DB => 'ogonek', 0x00F2 => 'ograve', 0x01A1 => 'ohorn', # 0x0151 => 'ohungarumlaut', 0x014D => 'omacron', 0x0151 => 'otilde', 0x014D => 'omacron', 0x03C9 => 'omega', 0x03D6 => 'omega1', 0x03CE => 'omegatonos', 0x03BF => 'omicron', 0x03CC => 'omicrontonos', 0x0031 => 'one', 0x2024 => 'onedotenleader', 0x215B => 'oneeighth', 0xF6DC => 'onefitted', 0x00BD => 'onehalf', 0x2081 => 'oneinferior', 0xF731 => 'oneoldstyle', 0x00BC => 'onequarter', 0x00B9 => 'onesuperior', 0x2153 => 'onethird', 0x25E6 => 'openbullet', 0x00AA => 'ordfeminine', 0x00BA => 'ordmasculine', 0x221F => 'orthogonal', 0x00F8 => 'oslash', 0x01FF => 'oslashacute', 0xF6F0 => 'osuperior', 0x00F5 => 'otilde', 0x0070 => 'p', 0x00B6 => 'paragraph', 0x0028 => 'parenleft', 0xF8ED => 'parenleftbt', 0xF8EC => 'parenleftex', 0x208D => 'parenleftinferior', 0x207D => 'parenleftsuperior', 0xF8EB => 'parenlefttp', 0x0029 => 'parenright', 0xF8F8 => 'parenrightbt', 0xF8F7 => 'parenrightex', 0x208E => 'parenrightinferior', 0x207E => 'parenrightsuperior', 0xF8F6 => 'parenrighttp', 0x2202 => 'partialdiff', 0x0025 => 'percent', 0x002E => 'period', 0x00B7 => 'periodcentered', 0x2219 => 'periodcentered', 0xF6E7 => 'periodinferior', 0xF6E8 => 'periodsuperior', 0x22A5 => 'perpendicular', 0x2030 => 'perthousand', 0x20A7 => 'peseta', 0x03C6 => 'phi', 0x03D5 => 'phi1', 0x03C0 => 'pi', 0x002B => 'plus', 0x00B1 => 'plusminus', 0x211E => 'prescription', 0x220F => 'product', 0x2282 => 'propersubset', 0x2283 => 'propersuperset', 0x221D => 'proportional', 0x03C8 => 'psi', 0x0071 => 'q', 0x003F => 'question', 0x00BF => 'questiondown', 0xF7BF => 'questiondownsmall', 0xF73F => 'questionsmall', 0x0022 => 'quotedbl', 0x201E => 'quotedblbase', 0x201C => 'quotedblleft', 0x201D => 'quotedblright', 0x2018 => 'quoteleft', 0x201B => 'quotereversed', 0x2019 => 'quoteright', 0x201A => 'quotesinglbase', 0x0027 => 'quotesingle', 0x0072 => 'r', 0x0155 => 'racute', 0x221A => 'radical', 0xF8E5 => 'radicalex', 0x0159 => 'rcaron', 0x0157 => 'rcommaaccent', 0x2286 => 'reflexsubset', 0x2287 => 'reflexsuperset', 0x00AE => 'registered', 0xF8E8 => 'registersans', 0xF6DA => 'registerserif', 0x2310 => 'revlogicalnot', 0x03C1 => 'rho', 0x02DA => 'ring', 0xF6F1 => 'rsuperior', 0x2590 => 'rtblock', 0xF6DD => 'rupiah', 0x0073 => 's', 0x015B => 'sacute', 0x0161 => 'scaron', 0x015F => 'scedilla', 0xF6C2 => 'scedilla', 0x015D => 'scircumflex', 0x0219 => 'scommaaccent', 0x2033 => 'second', 0x00A7 => 'section', 0x003B => 'semicolon', 0x0037 => 'seven', 0x215E => 'seveneighths', 0x2087 => 'seveninferior', 0xF737 => 'sevenoldstyle', 0x2077 => 'sevensuperior', 0x2592 => 'shade', 0x03C3 => 'sigma', 0x03C2 => 'sigma1', 0x223C => 'similar', 0x0036 => 'six', 0x2086 => 'sixinferior', 0xF736 => 'sixoldstyle', 0x2076 => 'sixsuperior', 0x002F => 'slash', 0x263A => 'smileface', 0x0020 => 'space', 0x00A0 => 'space', 0x2660 => 'spade', 0xF6F2 => 'ssuperior', 0x00A3 => 'sterling', 0x220B => 'suchthat', 0x2211 => 'summation', 0x263C => 'sun', 0x0074 => 't', 0x03C4 => 'tau', 0x0167 => 'tbar', 0x0165 => 'tcaron', 0x0163 => 'tcommaaccent', 0x021B => 'tcommaaccent', 0x2234 => 'therefore', 0x03B8 => 'theta', 0x03D1 => 'theta1', 0x00FE => 'thorn', 0x0033 => 'three', 0x215C => 'threeeighths', 0x2083 => 'threeinferior', 0xF733 => 'threeoldstyle', 0x00BE => 'threequarters', 0xF6DE => 'threequartersemdash', 0x00B3 => 'threesuperior', 0x02DC => 'tilde', 0x0303 => 'tildecomb', 0x0384 => 'tonos', 0x2122 => 'trademark', 0xF8EA => 'trademarksans', 0xF6DB => 'trademarkserif', 0x25BC => 'triagdn', 0x25C4 => 'triaglf', 0x25BA => 'triagrt', 0x25B2 => 'triagup', 0xF6F3 => 'tsuperior', 0x0032 => 'two', 0x2025 => 'twodotenleader', 0x2082 => 'twoinferior', 0xF732 => 'twooldstyle', 0x00B2 => 'twosuperior', 0x2154 => 'twothirds', 0x0075 => 'u', 0x00FA => 'uacute', 0x016D => 'ubreve', 0x00FB => 'ucircumflex', 0x00FC => 'udieresis', 0x00F9 => 'ugrave', 0x0171 => 'uhungarumlaut', 0x01B0 => 'uhorn', 0x0171 => 'ucircumflex', 0x016B => 'umacron', 0x005F => 'underscore', 0x2017 => 'underscoredbl', 0x222A => 'union', 0x2200 => 'universal', 0x0173 => 'uogonek', 0x2580 => 'upblock', 0x03C5 => 'upsilon', 0x03CB => 'upsilondieresis', 0x03B0 => 'upsilondieresistonos', 0x03CD => 'upsilontonos', 0x016F => 'uring', 0x0169 => 'utilde', 0x0076 => 'v', 0x0077 => 'w', 0x1E83 => 'wacute', 0x0175 => 'wcircumflex', 0x1E85 => 'wdieresis', 0x2118 => 'weierstrass', 0x1E81 => 'wgrave', 0x0078 => 'x', 0x03BE => 'xi', 0x0079 => 'y', 0x00FD => 'yacute', 0x0177 => 'ycircumflex', 0x00FF => 'ydieresis', 0x00A5 => 'yen', 0x1EF3 => 'ygrave', 0x007A => 'z', 0x017A => 'zacute', 0x017E => 'zcaron', 0x017C => 'zdotaccent', 0x0030 => 'zero', 0x2080 => 'zeroinferior', 0xF730 => 'zerooldstyle', 0x2070 => 'zerosuperior', 0x03B6 => 'zeta' } CODEPOINTS = GLYPHS.invert FONT_NAMES = [ 'Helvetica', 'Helvetica-Bold', 'Helvetica-Oblique', 'Helvetica-BoldOblique', 'Times-Roman', 'Times-Bold', 'Times-Italic', 'Times-BoldItalic', 'Courier', 'Courier-Bold', 'Courier-Oblique', 'Courier-BoldOblique', 'Symbol', 'ZapfDingbats', 'AvantGarde-Book', 'AvantGarde-BookOblique', 'AvantGarde-Demi', 'AvantGarde-DemiOblique', 'Bookman-Demi', 'Bookman-DemiItalic', 'Bookman-Light', 'Bookman-LightItalic', 'Helvetica-Narrow', 'Helvetica-Narrow-Oblique', 'Helvetica-Narrow-Bold', 'Helvetica-Narrow-BoldOblique', 'NewCenturySchlbk-Roman', 'NewCenturySchlbk-Italic', 'NewCenturySchlbk-Bold', 'NewCenturySchlbk-BoldItalic', 'Palatino-Roman', 'Palatino-Italic', 'Palatino-Bold', 'Palatino-BoldItalic', 'ZapfChancery-MediumItalic', 'Helvetica-Condensed', 'Helvetica-Condensed-Bold', 'Helvetica-Condensed-Oblique', 'Helvetica-Condensed-BoldObl' ] NAMED_COLORS = { 'AliceBlue' => 0xF0F8FF, 'AntiqueWhite' => 0xFAEBD7, 'Aqua' => 0x00FFFF, 'Aquamarine' => 0x7FFFD4, 'Azure' => 0xF0FFFF, 'Beige' => 0xF5F5DC, 'Bisque' => 0xFFE4C4, 'Black' => 0x000000, 'BlanchedAlmond' => 0xFFEBCD, 'Blue' => 0x0000FF, 'BlueViolet' => 0x8A2BE2, 'Brown' => 0xA52A2A, 'BurlyWood' => 0xDEB887, 'CadetBlue' => 0x5F9EA0, 'Chartreuse' => 0x7FFF00, 'Chocolate' => 0xD2691E, 'Coral' => 0xFF7F50, 'CornflowerBlue' => 0x6495ED, 'Cornsilk' => 0xFFF8DC, 'Crimson' => 0xDC143C, 'Cyan' => 0x00FFFF, 'DarkBlue' => 0x00008B, 'DarkCyan' => 0x008B8B, 'DarkGoldenRod' => 0xB8860B, 'DarkGray' => 0xA9A9A9, 'DarkGrey' => 0xA9A9A9, 'DarkGreen' => 0x006400, 'DarkKhaki' => 0xBDB76B, 'DarkMagenta' => 0x8B008B, 'DarkOliveGreen' => 0x556B2F, 'DarkOrange' => 0xFF8C00, 'DarkOrchid' => 0x9932CC, 'DarkRed' => 0x8B0000, 'DarkSalmon' => 0xE9967A, 'DarkSeaGreen' => 0x8FBC8F, 'DarkSlateBlue' => 0x483D8B, 'DarkSlateGray' => 0x2F4F4F, 'DarkSlateGrey' => 0x2F4F4F, 'DarkTurquoise' => 0x00CED1, 'DarkViolet' => 0x9400D3, 'DeepPink' => 0xFF1493, 'DeepSkyBlue' => 0x00BFFF, 'DimGray' => 0x696969, 'DimGrey' => 0x696969, 'DodgerBlue' => 0x1E90FF, 'FireBrick' => 0xB22222, 'FloralWhite' => 0xFFFAF0, 'ForestGreen' => 0x228B22, 'Fuchsia' => 0xFF00FF, 'Gainsboro' => 0xDCDCDC, 'GhostWhite' => 0xF8F8FF, 'Gold' => 0xFFD700, 'GoldenRod' => 0xDAA520, 'Gray' => 0x808080, 'Grey' => 0x808080, 'Green' => 0x008000, 'GreenYellow' => 0xADFF2F, 'HoneyDew' => 0xF0FFF0, 'HotPink' => 0xFF69B4, 'IndianRed' => 0xCD5C5C, 'Indigo' => 0x4B0082, 'Ivory' => 0xFFFFF0, 'Khaki' => 0xF0E68C, 'Lavender' => 0xE6E6FA, 'LavenderBlush' => 0xFFF0F5, 'LawnGreen' => 0x7CFC00, 'LemonChiffon' => 0xFFFACD, 'LightBlue' => 0xADD8E6, 'LightCoral' => 0xF08080, 'LightCyan' => 0xE0FFFF, 'LightGoldenRodYellow' => 0xFAFAD2, 'LightGray' => 0xD3D3D3, 'LightGrey' => 0xD3D3D3, 'LightGreen' => 0x90EE90, 'LightPink' => 0xFFB6C1, 'LightSalmon' => 0xFFA07A, 'LightSeaGreen' => 0x20B2AA, 'LightSkyBlue' => 0x87CEFA, 'LightSlateGray' => 0x778899, 'LightSlateGrey' => 0x778899, 'LightSteelBlue' => 0xB0C4DE, 'LightYellow' => 0xFFFFE0, 'Lime' => 0x00FF00, 'LimeGreen' => 0x32CD32, 'Linen' => 0xFAF0E6, 'Magenta' => 0xFF00FF, 'Maroon' => 0x800000, 'MediumAquaMarine' => 0x66CDAA, 'MediumBlue' => 0x0000CD, 'MediumOrchid' => 0xBA55D3, 'MediumPurple' => 0x9370D8, 'MediumSeaGreen' => 0x3CB371, 'MediumSlateBlue' => 0x7B68EE, 'MediumSpringGreen' => 0x00FA9A, 'MediumTurquoise' => 0x48D1CC, 'MediumVioletRed' => 0xC71585, 'MidnightBlue' => 0x191970, 'MintCream' => 0xF5FFFA, 'MistyRose' => 0xFFE4E1, 'Moccasin' => 0xFFE4B5, 'NavajoWhite' => 0xFFDEAD, 'Navy' => 0x000080, 'OldLace' => 0xFDF5E6, 'Olive' => 0x808000, 'OliveDrab' => 0x6B8E23, 'Orange' => 0xFFA500, 'OrangeRed' => 0xFF4500, 'Orchid' => 0xDA70D6, 'PaleGoldenRod' => 0xEEE8AA, 'PaleGreen' => 0x98FB98, 'PaleTurquoise' => 0xAFEEEE, 'PaleVioletRed' => 0xD87093, 'PapayaWhip' => 0xFFEFD5, 'PeachPuff' => 0xFFDAB9, 'Peru' => 0xCD853F, 'Pink' => 0xFFC0CB, 'Plum' => 0xDDA0DD, 'PowderBlue' => 0xB0E0E6, 'Purple' => 0x800080, 'Red' => 0xFF0000, 'RosyBrown' => 0xBC8F8F, 'RoyalBlue' => 0x4169E1, 'SaddleBrown' => 0x8B4513, 'Salmon' => 0xFA8072, 'SandyBrown' => 0xF4A460, 'SeaGreen' => 0x2E8B57, 'SeaShell' => 0xFFF5EE, 'Sienna' => 0xA0522D, 'Silver' => 0xC0C0C0, 'SkyBlue' => 0x87CEEB, 'SlateBlue' => 0x6A5ACD, 'SlateGray' => 0x708090, 'SlateGrey' => 0x708090, 'Snow' => 0xFFFAFA, 'SpringGreen' => 0x00FF7F, 'SteelBlue' => 0x4682B4, 'Tan' => 0xD2B48C, 'Teal' => 0x008080, 'Thistle' => 0xD8BFD8, 'Tomato' => 0xFF6347, 'Turquoise' => 0x40E0D0, 'Violet' => 0xEE82EE, 'Wheat' => 0xF5DEB3, 'White' => 0xFFFFFF, 'WhiteSmoke' => 0xF5F5F5, 'Yellow' => 0xFFFF00, 'YellowGreen' => 0x9ACD32 } STANDARD_ENCODINGS = ['WinAnsiEncoding','StandardEncoding','MacRomanEncoding','MacExpertEncoding'] # GlyphList = File.join(File.dirname(__FILE__), 'glyphlist.txt') # if File.exist?(GlyphList) # GLYPHS.clear # File.foreach(GlyphList) do |line| # if line =~ /^(\w+);(\w{4})$/ # codepoint = $2.to_i(16) # GLYPHS[codepoint] = $1 unless GLYPHS[codepoint] # end # end # end FontMetrics = Struct.new(:needs_descriptor, :widths, :ascent, :descent, :flags, :b_box, :missing_width, :stem_v, :stem_h, :italic_angle, :cap_height, :x_height, :leading, :max_width, :avg_width, :underline_position, :underline_thickness, :differences) def font_index(font_name) FONT_NAMES.index(font_name) end def font_metrics(font_name) index = font_index(font_name) raise Exception.new("Unknown font #{font_name}.") unless index needs_descriptor = index >= 14 FontMetrics.new(needs_descriptor, FONT_WIDTHS[index], FONT_ASCENDERS[index], FONT_DESCENDERS[index], FONT_FLAGS[index], FONT_BBOXES[index], FONT_MISSING_WIDTHS[index], FONT_STEM_VS[index], FONT_STEM_HS[index], FONT_ITALIC_ANGLES[index], FONT_CAP_HEIGHTS[index], FONT_X_HEIGHTS[index], FONT_LEADINGS[index], FONT_MAX_WIDTHS[index], FONT_AVG_WIDTHS[index], UNDERLINE_POSITION, UNDERLINE_THICKNESS) end def glyph_name(codepoint) return nil if codepoint.nil? or codepoint < 0x20 GLYPHS[codepoint] || 'question' end module_function :font_index, :font_metrics, :glyph_name end end