fast_excel 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.dockerignore +2 -0
- data/.gitignore +7 -0
- data/.travis.yml +44 -0
- data/CHANGELOG.md +41 -1
- data/Dockerfile.test +16 -0
- data/Gemfile +5 -2
- data/Gemfile.lock +30 -23
- data/LICENSE +21 -0
- data/Makefile +13 -0
- data/README.md +177 -40
- data/Rakefile +16 -0
- data/appveyor.yml +25 -0
- data/benchmarks/1k_rows.rb +17 -4
- data/benchmarks/20k_rows.rb +4 -0
- data/benchmarks/auto_width.rb +37 -0
- data/benchmarks/init.rb +14 -2
- data/benchmarks/memory.rb +8 -0
- data/benchmarks/profiler.rb +27 -0
- data/benchmarks/write_value.rb +62 -0
- data/examples/example.rb +3 -4
- data/examples/example_align.rb +23 -0
- data/examples/example_auto_width.rb +26 -0
- data/examples/example_colors.rb +37 -0
- data/examples/example_filters.rb +36 -0
- data/examples/example_formula.rb +1 -5
- data/examples/example_hyperlink.rb +20 -0
- data/examples/example_image.rb +1 -1
- data/examples/example_styles.rb +27 -0
- data/examples/logo.png +0 -0
- data/ext/fast_excel/extconf.rb +3 -0
- data/ext/fast_excel/text_width_ext.c +460 -0
- data/fast_excel.gemspec +2 -3
- data/letters.html +114 -0
- data/lib/fast_excel.rb +455 -78
- data/lib/fast_excel/binding.rb +31 -21
- data/lib/fast_excel/binding/chart.rb +20 -1
- data/lib/fast_excel/binding/format.rb +11 -4
- data/lib/fast_excel/binding/workbook.rb +10 -2
- data/lib/fast_excel/binding/worksheet.rb +44 -27
- data/libxlsxwriter/.gitignore +1 -0
- data/libxlsxwriter/.indent.pro +8 -0
- data/libxlsxwriter/.travis.yml +12 -0
- data/libxlsxwriter/CMakeLists.txt +338 -0
- data/libxlsxwriter/CONTRIBUTING.md +1 -1
- data/libxlsxwriter/Changes.txt +162 -0
- data/libxlsxwriter/LICENSE.txt +65 -4
- data/libxlsxwriter/Makefile +33 -11
- data/libxlsxwriter/Readme.md +3 -1
- data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +2 -1
- data/libxlsxwriter/cocoapods/libxlsxwriter.modulemap +2 -2
- data/libxlsxwriter/include/xlsxwriter.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/app.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/chart.h +164 -13
- data/libxlsxwriter/include/xlsxwriter/chartsheet.h +544 -0
- data/libxlsxwriter/include/xlsxwriter/common.h +35 -6
- data/libxlsxwriter/include/xlsxwriter/content_types.h +5 -2
- data/libxlsxwriter/include/xlsxwriter/core.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/custom.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/drawing.h +3 -2
- data/libxlsxwriter/include/xlsxwriter/format.h +8 -8
- data/libxlsxwriter/include/xlsxwriter/hash_table.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/packager.h +18 -8
- data/libxlsxwriter/include/xlsxwriter/relationships.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/shared_strings.h +5 -3
- data/libxlsxwriter/include/xlsxwriter/styles.h +10 -5
- data/libxlsxwriter/include/xlsxwriter/theme.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/utility.h +35 -5
- data/libxlsxwriter/include/xlsxwriter/workbook.h +234 -57
- data/libxlsxwriter/include/xlsxwriter/worksheet.h +780 -91
- data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +4 -2
- data/libxlsxwriter/libxlsxwriter.podspec +4 -2
- data/libxlsxwriter/src/Makefile +31 -6
- data/libxlsxwriter/src/app.c +2 -2
- data/libxlsxwriter/src/chart.c +116 -23
- data/libxlsxwriter/src/chartsheet.c +508 -0
- data/libxlsxwriter/src/content_types.c +12 -4
- data/libxlsxwriter/src/core.c +11 -11
- data/libxlsxwriter/src/custom.c +3 -3
- data/libxlsxwriter/src/drawing.c +114 -17
- data/libxlsxwriter/src/format.c +5 -5
- data/libxlsxwriter/src/hash_table.c +1 -1
- data/libxlsxwriter/src/packager.c +378 -61
- data/libxlsxwriter/src/relationships.c +2 -2
- data/libxlsxwriter/src/shared_strings.c +18 -4
- data/libxlsxwriter/src/styles.c +59 -12
- data/libxlsxwriter/src/theme.c +2 -2
- data/libxlsxwriter/src/utility.c +93 -6
- data/libxlsxwriter/src/workbook.c +379 -61
- data/libxlsxwriter/src/worksheet.c +1240 -174
- data/libxlsxwriter/src/xmlwriter.c +18 -9
- data/libxlsxwriter/third_party/minizip/Makefile +6 -1
- data/libxlsxwriter/third_party/minizip/ioapi.c +10 -0
- data/libxlsxwriter/third_party/minizip/zip.c +2 -0
- data/libxlsxwriter/third_party/tmpfileplus/tmpfileplus.c +2 -2
- data/libxlsxwriter/version.txt +1 -1
- data/test/auto_width_test.rb +19 -0
- data/test/date_test.rb +34 -0
- data/test/format_test.rb +179 -0
- data/test/reopen_test.rb +22 -0
- data/test/test_helper.rb +23 -4
- data/test/text_width_test.rb +80 -0
- data/test/tmpfile_test.rb +1 -0
- data/test/validations_test.rb +47 -0
- data/test/worksheet_test.rb +129 -0
- metadata +34 -5
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative '../lib/fast_excel'
|
2
|
+
|
3
|
+
workbook = FastExcel.open("example_hyperlink.xlsx", constant_memory: false)
|
4
|
+
worksheet = workbook.add_worksheet
|
5
|
+
worksheet.auto_width = true
|
6
|
+
|
7
|
+
url_format = workbook.add_format(underline: :underline_single, font_color: :blue)
|
8
|
+
|
9
|
+
worksheet.append_row([
|
10
|
+
"Ultra Fast Excel Writer for Ruby",
|
11
|
+
FastExcel::URL.new("https://github.com/Paxa/fast_excel"),
|
12
|
+
FastExcel::URL.new("postgres://localhost")
|
13
|
+
], [nil, url_format])
|
14
|
+
|
15
|
+
# Same as:
|
16
|
+
# worksheet.write_value(0, 0, "Ultra Fast Excel Writer for Ruby")
|
17
|
+
# worksheet.write_url(0, 1, "https://github.com/Paxa/fast_excel", url_format)
|
18
|
+
|
19
|
+
workbook.close
|
20
|
+
puts "Saved to file example_hyperlink.xlsx"
|
data/examples/example_image.rb
CHANGED
@@ -7,7 +7,7 @@ img_options = Libxlsxwriter::ImageOptions.new
|
|
7
7
|
img_options[:x_offset] = 0
|
8
8
|
img_options[:y_offset] = 0
|
9
9
|
|
10
|
-
worksheet.insert_image_opt(3, 3, "
|
10
|
+
worksheet.insert_image_opt(3, 3, "examples/logo.png", img_options)
|
11
11
|
|
12
12
|
workbook.close
|
13
13
|
puts "Saved to file example_image.xlsx"
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative '../lib/fast_excel'
|
2
|
+
|
3
|
+
workbook = FastExcel.open("example_styles.xlsx", constant_memory: true)
|
4
|
+
|
5
|
+
#workbook.default_format.set(
|
6
|
+
# font_size: 0, # user's default
|
7
|
+
# #font_family: "Arial"
|
8
|
+
#)
|
9
|
+
|
10
|
+
worksheet = workbook.add_worksheet
|
11
|
+
|
12
|
+
worksheet.set_columns_width(0, 11, 11)
|
13
|
+
|
14
|
+
worksheet.write_value(0, 0, "Bold", workbook.add_format(bold: true))
|
15
|
+
worksheet.write_value(0, 1, "Italic", workbook.add_format(italic: true))
|
16
|
+
worksheet.write_value(0, 2, "Underline", workbook.add_format(underline: :underline_single))
|
17
|
+
worksheet.write_value(0, 3, "Double line", workbook.add_format(underline: :underline_double))
|
18
|
+
worksheet.write_value(0, 4, "Indent", workbook.add_format(indent: 1))
|
19
|
+
worksheet.write_value(0, 5, "Border", workbook.add_format(border: :border_thin))
|
20
|
+
worksheet.write_value(0, 6, "Border2", workbook.add_format(border: :border_medium))
|
21
|
+
worksheet.write_value(0, 7, "Pattern", workbook.add_format(pattern: :pattern_light_up, bg_color: :yellow))
|
22
|
+
worksheet.write_value(0, 8, "Script", workbook.add_format(font_script: :font_subscript))
|
23
|
+
worksheet.write_value(0, 9, "Strike", workbook.add_format(font_strikeout: true))
|
24
|
+
worksheet.write_value(0, 10, "Shaddow", workbook.add_format(font_shadow: true))
|
25
|
+
|
26
|
+
workbook.close
|
27
|
+
puts "Saved to file example_styles.xlsx"
|
data/examples/logo.png
ADDED
Binary file
|
@@ -0,0 +1,460 @@
|
|
1
|
+
#include "ruby.h"
|
2
|
+
#include <stdio.h>
|
3
|
+
#include <string.h>
|
4
|
+
|
5
|
+
static float ARIAL_DEFAULT = 52.6953125;
|
6
|
+
static float ARIAL_CHAR_WIDTH[127] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27.783203125, 27.783203125, 35.498046875, 55.615234375, 55.615234375, 88.916015625, 66.69921875, 19.091796875, 33.30078125, 33.30078125, 38.916015625, 58.3984375, 27.783203125, 33.30078125, 27.783203125, 27.783203125, 55.615234375, 55.615234375, 55.615234375, 55.615234375, 55.615234375, 55.615234375, 55.615234375, 55.615234375, 55.615234375, 55.615234375, 27.783203125, 27.783203125, 58.3984375, 58.3984375, 58.3984375, 55.615234375, 101.513671875, 66.69921875, 66.69921875, 72.216796875, 72.216796875, 66.69921875, 61.083984375, 77.783203125, 72.216796875, 27.783203125, 50, 66.69921875, 55.615234375, 83.30078125, 72.216796875, 77.783203125, 66.69921875, 77.783203125, 72.216796875, 66.69921875, 61.083984375, 72.216796875, 66.69921875, 94.384765625, 66.69921875, 66.69921875, 61.083984375, 27.783203125, 27.783203125, 27.783203125, 46.923828125, 55.615234375, 33.30078125, 55.615234375, 55.615234375, 50, 55.615234375, 55.615234375, 27.783203125, 55.615234375, 55.615234375, 22.216796875, 22.216796875, 50, 22.216796875, 83.30078125, 55.615234375, 55.615234375, 55.615234375, 55.615234375, 33.30078125, 50, 27.783203125, 55.615234375, 50, 72.216796875, 50, 50, 50, 33.3984375, 25.9765625, 33.3984375, 58.3984375};
|
7
|
+
static float ARIAL_KERNING[127][127] = {
|
8
|
+
/* 0 : */ { 0 },
|
9
|
+
/* 1 : */ { 0 },
|
10
|
+
/* 2 : */ { 0 },
|
11
|
+
/* 3 : */ { 0 },
|
12
|
+
/* 4 : */ { 0 },
|
13
|
+
/* 5 : */ { 0 },
|
14
|
+
/* 6 : */ { 0 },
|
15
|
+
/* 7 : */ { 0 },
|
16
|
+
/* 8 : */ { 0 },
|
17
|
+
/* 9 : */ { 0 },
|
18
|
+
/* 10 : */ { 0 },
|
19
|
+
/* 11 : */ { 0 },
|
20
|
+
/* 12 : */ { 0 },
|
21
|
+
/* 13 : */ { 0 },
|
22
|
+
/* 14 : */ { 0 },
|
23
|
+
/* 15 : */ { 0 },
|
24
|
+
/* 16 : */ { 0 },
|
25
|
+
/* 17 : */ { 0 },
|
26
|
+
/* 18 : */ { 0 },
|
27
|
+
/* 19 : */ { 0 },
|
28
|
+
/* 20 : */ { 0 },
|
29
|
+
/* 21 : */ { 0 },
|
30
|
+
/* 22 : */ { 0 },
|
31
|
+
/* 23 : */ { 0 },
|
32
|
+
/* 24 : */ { 0 },
|
33
|
+
/* 25 : */ { 0 },
|
34
|
+
/* 26 : */ { 0 },
|
35
|
+
/* 27 : */ { 0 },
|
36
|
+
/* 28 : */ { 0 },
|
37
|
+
/* 29 : */ { 0 },
|
38
|
+
/* 30 : */ { 0 },
|
39
|
+
/* 31 : */ { 0 },
|
40
|
+
/* 32 : */ { 0 },
|
41
|
+
/* 33 : ! */ { 0 },
|
42
|
+
/* 34 : " */ { 0 },
|
43
|
+
/* 35 : # */ { 0 },
|
44
|
+
/* 36 : $ */ { 0 },
|
45
|
+
/* 37 : % */ { 0 },
|
46
|
+
/* 38 : & */ { 0 },
|
47
|
+
/* 39 : ' */ { 0 },
|
48
|
+
/* 40 : ( */ { 0 },
|
49
|
+
/* 41 : ) */ { 0 },
|
50
|
+
/* 42 : * */ { 0 },
|
51
|
+
/* 43 : + */ { 0 },
|
52
|
+
/* 44 : , */ { 0 },
|
53
|
+
/* 45 : - */ { 0 },
|
54
|
+
/* 46 : . */ { 0 },
|
55
|
+
/* 47 : / */ { 0 },
|
56
|
+
/* 48 : 0 */ { 0 },
|
57
|
+
/* 49 : 1 */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103.80859375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
58
|
+
/* 50 : 2 */ { 0 },
|
59
|
+
/* 51 : 3 */ { 0 },
|
60
|
+
/* 52 : 4 */ { 0 },
|
61
|
+
/* 53 : 5 */ { 0 },
|
62
|
+
/* 54 : 6 */ { 0 },
|
63
|
+
/* 55 : 7 */ { 0 },
|
64
|
+
/* 56 : 8 */ { 0 },
|
65
|
+
/* 57 : 9 */ { 0 },
|
66
|
+
/* 58 : : */ { 0 },
|
67
|
+
/* 59 : ; */ { 0 },
|
68
|
+
/* 60 : < */ { 0 },
|
69
|
+
/* 61 : = */ { 0 },
|
70
|
+
/* 62 : > */ { 0 },
|
71
|
+
/* 63 : ? */ { 0 },
|
72
|
+
/* 64 : @ */ { 0 },
|
73
|
+
/* 65 : A */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88.96484375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120.361328125, 0, 125.9765625, 157.373046875, 0, 125.9765625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114.892578125, 137.109375, 0, 114.892578125, 0, 0, 0, 0, 0 },
|
74
|
+
/* 66 : B */ { 0 },
|
75
|
+
/* 67 : C */ { 0 },
|
76
|
+
/* 68 : D */ { 0 },
|
77
|
+
/* 69 : E */ { 0 },
|
78
|
+
/* 70 : F */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77.783203125, 0, 77.783203125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122.265625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
79
|
+
/* 71 : G */ { 0 },
|
80
|
+
/* 72 : H */ { 0 },
|
81
|
+
/* 73 : I */ { 0 },
|
82
|
+
/* 74 : J */ { 0 },
|
83
|
+
/* 75 : K */ { 0 },
|
84
|
+
/* 76 : L */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79.6875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109.27734375, 0, 114.892578125, 142.578125, 0, 114.892578125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101.904296875, 0, 0, 0, 0, 0 },
|
85
|
+
/* 77 : M */ { 0 },
|
86
|
+
/* 78 : N */ { 0 },
|
87
|
+
/* 79 : O */ { 0 },
|
88
|
+
/* 80 : P */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92.67578125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81.591796875, 0, 81.591796875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125.9765625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
89
|
+
/* 81 : Q */ { 0 },
|
90
|
+
/* 82 : R */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131.494140625, 0, 137.109375, 164.794921875, 0, 137.109375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
91
|
+
/* 83 : S */ { 0 },
|
92
|
+
/* 84 : T */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87.060546875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77.783203125, 88.8671875, 77.783203125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77.783203125, 77.783203125, 0, 0, 0, 0, 0, 120.361328125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137.060546875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105.615234375, 0, 100, 0, 105.615234375, 0, 0, 0, 79.58984375, 0, 0, 0, 0, 0, 105.615234375, 0, 0, 90.673828125, 100, 0, 112.98828125, 0, 127.783203125, 0, 105.56640625, 0, 0, 0, 0, 0 },
|
93
|
+
/* 85 : U */ { 0 },
|
94
|
+
/* 86 : V */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85.302734375, 94.482421875, 85.302734375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90.771484375, 90.771484375, 0, 0, 0, 0, 0, 125.9765625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114.892578125, 0, 0, 0, 116.796875, 0, 0, 0, 87.109375, 0, 0, 0, 0, 0, 116.796875, 0, 0, 96.2890625, 0, 0, 118.603515625, 0, 0, 0, 112.98828125, 0, 0, 0, 0, 0 },
|
95
|
+
/* 87 : W */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116.650390625, 125.87890625, 116.650390625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120.361328125, 120.361328125, 0, 0, 0, 0, 0, 157.373046875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146.2890625, 0, 0, 0, 148.193359375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148.193359375, 0, 0, 125.87890625, 0, 0, 148.193359375, 0, 0, 0, 143.505859375, 0, 0, 0, 0, 0 },
|
96
|
+
/* 88 : X */ { 0 },
|
97
|
+
/* 89 : Y */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92.67578125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81.591796875, 90.8203125, 81.591796875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88.96484375, 87.98828125, 0, 0, 0, 0, 0, 125.9765625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114.892578125, 0, 0, 0, 113.134765625, 0, 0, 0, 85.205078125, 0, 0, 0, 0, 0, 113.134765625, 114.892578125, 113.134765625, 0, 0, 0, 116.796875, 111.181640625, 0, 0, 0, 0, 0, 0, 0, 0 },
|
98
|
+
/* 90 : Z */ { 0 },
|
99
|
+
/* 91 : [ */ { 0 },
|
100
|
+
/* 92 : \ */ { 0 },
|
101
|
+
/* 93 : ] */ { 0 },
|
102
|
+
/* 94 : ^ */ { 0 },
|
103
|
+
/* 95 : _ */ { 0 },
|
104
|
+
/* 96 : ` */ { 0 },
|
105
|
+
/* 97 : a */ { 0 },
|
106
|
+
/* 98 : b */ { 0 },
|
107
|
+
/* 99 : c */ { 0 },
|
108
|
+
/* 100 : d */ { 0 },
|
109
|
+
/* 101 : e */ { 0 },
|
110
|
+
/* 102 : f */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.759765625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
111
|
+
/* 103 : g */ { 0 },
|
112
|
+
/* 104 : h */ { 0 },
|
113
|
+
/* 105 : i */ { 0 },
|
114
|
+
/* 106 : j */ { 0 },
|
115
|
+
/* 107 : k */ { 0 },
|
116
|
+
/* 108 : l */ { 0 },
|
117
|
+
/* 109 : m */ { 0 },
|
118
|
+
/* 110 : n */ { 0 },
|
119
|
+
/* 111 : o */ { 0 },
|
120
|
+
/* 112 : p */ { 0 },
|
121
|
+
/* 113 : q */ { 0 },
|
122
|
+
/* 114 : r */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55.56640625, 0, 55.56640625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
123
|
+
/* 115 : s */ { 0 },
|
124
|
+
/* 116 : t */ { 0 },
|
125
|
+
/* 117 : u */ { 0 },
|
126
|
+
/* 118 : v */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70.361328125, 0, 70.361328125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
127
|
+
/* 119 : w */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94.482421875, 0, 94.482421875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
128
|
+
/* 120 : x */ { 0 },
|
129
|
+
/* 121 : y */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70.361328125, 0, 70.361328125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
130
|
+
/* 122 : z */ { 0 },
|
131
|
+
/* 123 : { */ { 0 },
|
132
|
+
/* 124 : | */ { 0 },
|
133
|
+
/* 125 : } */ { 0 },
|
134
|
+
/* 126 : ~ */ { 0 },
|
135
|
+
};
|
136
|
+
|
137
|
+
|
138
|
+
static float CALIBRI_DEFAULT = 47.31959292763158;
|
139
|
+
static float CALIBRI_CHAR_WIDTH[127] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.607421875, 32.568359375, 40.087890625, 49.8046875, 50.68359375, 71.484375, 68.212890625, 22.0703125, 30.322265625, 30.322265625, 49.8046875, 49.8046875, 24.951171875, 30.615234375, 25.244140625, 38.623046875, 50.68359375, 50.68359375, 50.68359375, 50.68359375, 50.68359375, 50.68359375, 50.68359375, 50.68359375, 50.68359375, 50.68359375, 26.7578125, 26.7578125, 49.8046875, 49.8046875, 49.8046875, 46.337890625, 89.404296875, 57.861328125, 54.39453125, 53.3203125, 61.5234375, 48.828125, 45.947265625, 63.0859375, 62.3046875, 25.1953125, 31.884765625, 51.953125, 42.041015625, 85.498046875, 64.55078125, 66.2109375, 51.66015625, 67.28515625, 54.296875, 45.947265625, 48.73046875, 64.16015625, 56.73828125, 88.96484375, 51.904296875, 48.73046875, 46.826171875, 30.6640625, 38.623046875, 30.6640625, 49.8046875, 49.8046875, 29.1015625, 47.900390625, 52.5390625, 42.28515625, 52.5390625, 49.755859375, 30.517578125, 47.0703125, 52.5390625, 22.94921875, 23.92578125, 45.458984375, 22.94921875, 79.8828125, 52.5390625, 52.734375, 52.5390625, 52.5390625, 34.86328125, 39.111328125, 33.49609375, 52.5390625, 45.166015625, 71.484375, 43.310546875, 45.263671875, 39.501953125, 31.4453125, 46.044921875, 31.4453125, 49.8046875};
|
140
|
+
static float CALIBRI_KERNING[127][127] = {
|
141
|
+
/* 0 : */ { 0 },
|
142
|
+
/* 1 : */ { 0 },
|
143
|
+
/* 2 : */ { 0 },
|
144
|
+
/* 3 : */ { 0 },
|
145
|
+
/* 4 : */ { 0 },
|
146
|
+
/* 5 : */ { 0 },
|
147
|
+
/* 6 : */ { 0 },
|
148
|
+
/* 7 : */ { 0 },
|
149
|
+
/* 8 : */ { 0 },
|
150
|
+
/* 9 : */ { 0 },
|
151
|
+
/* 10 : */ { 0 },
|
152
|
+
/* 11 : */ { 0 },
|
153
|
+
/* 12 : */ { 0 },
|
154
|
+
/* 13 : */ { 0 },
|
155
|
+
/* 14 : */ { 0 },
|
156
|
+
/* 15 : */ { 0 },
|
157
|
+
/* 16 : */ { 0 },
|
158
|
+
/* 17 : */ { 0 },
|
159
|
+
/* 18 : */ { 0 },
|
160
|
+
/* 19 : */ { 0 },
|
161
|
+
/* 20 : */ { 0 },
|
162
|
+
/* 21 : */ { 0 },
|
163
|
+
/* 22 : */ { 0 },
|
164
|
+
/* 23 : */ { 0 },
|
165
|
+
/* 24 : */ { 0 },
|
166
|
+
/* 25 : */ { 0 },
|
167
|
+
/* 26 : */ { 0 },
|
168
|
+
/* 27 : */ { 0 },
|
169
|
+
/* 28 : */ { 0 },
|
170
|
+
/* 29 : */ { 0 },
|
171
|
+
/* 30 : */ { 0 },
|
172
|
+
/* 31 : */ { 0 },
|
173
|
+
/* 32 : */ { 0 },
|
174
|
+
/* 33 : ! */ { 0 },
|
175
|
+
/* 34 : " */ { 0 },
|
176
|
+
/* 35 : # */ { 0 },
|
177
|
+
/* 36 : $ */ { 0 },
|
178
|
+
/* 37 : % */ { 0 },
|
179
|
+
/* 38 : & */ { 0 },
|
180
|
+
/* 39 : ' */ { 0 },
|
181
|
+
/* 40 : ( */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77.880859375, 0, 0, 57.32421875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
182
|
+
/* 41 : ) */ { 0 },
|
183
|
+
/* 42 : * */ { 0 },
|
184
|
+
/* 43 : + */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100.341796875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
185
|
+
/* 44 : , */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83.642578125, 0, 0, 0, 0, 0, 0, 0, 0, 57.91015625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67.1875, 0, 74.90234375, 106.591796875, 77.34375, 66.50390625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56.34765625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
186
|
+
/* 45 : - */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74.4140625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60.25390625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74.90234375, 0, 72.0703125, 74.90234375, 0, 0, 0, 0, 0 },
|
187
|
+
/* 46 : . */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50.341796875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83.69140625, 0, 76.708984375, 0, 0, 0, 86.474609375, 0, 0, 58.056640625, 0, 0, 0, 0, 90.380859375, 0, 91.455078125, 0, 0, 66.50390625, 88.525390625, 74.609375, 107.177734375, 0, 64.794921875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.80859375, 73.388671875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56.591796875, 0, 66.650390625, 93.408203125, 0, 66.748046875, 65.234375, 0, 0, 0, 0 },
|
188
|
+
/* 47 : / */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93.017578125, 0, 0, 0, 0, 0, 0, 0, 0, 68.701171875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84.716796875, 0, 79.1015625, 0, 86.572265625, 0, 83.984375, 0, 0, 0, 0, 0, 0, 0, 89.6484375, 0, 0, 0, 75.830078125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
189
|
+
/* 48 : 0 */ { 0 },
|
190
|
+
/* 49 : 1 */ { 0 },
|
191
|
+
/* 50 : 2 */ { 0 },
|
192
|
+
/* 51 : 3 */ { 0 },
|
193
|
+
/* 52 : 4 */ { 0 },
|
194
|
+
/* 53 : 5 */ { 0 },
|
195
|
+
/* 54 : 6 */ { 0 },
|
196
|
+
/* 55 : 7 */ { 0 },
|
197
|
+
/* 56 : 8 */ { 0 },
|
198
|
+
/* 57 : 9 */ { 0 },
|
199
|
+
/* 58 : : */ { 0 },
|
200
|
+
/* 59 : ; */ { 0 },
|
201
|
+
/* 60 : < */ { 0 },
|
202
|
+
/* 61 : = */ { 0 },
|
203
|
+
/* 62 : > */ { 0 },
|
204
|
+
/* 63 : ? */ { 0 },
|
205
|
+
/* 64 : @ */ { 0 },
|
206
|
+
/* 65 : A */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83.544921875, 87.744140625, 83.69140625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100.87890625, 0, 0, 0, 110.44921875, 0, 0, 0, 120.21484375, 0, 0, 90.869140625, 0, 0, 0, 0, 122.94921875, 0, 124.0234375, 0, 0, 98.779296875, 120.458984375, 110.25390625, 142.919921875, 0, 99.267578125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88.818359375, 0, 101.171875, 0, 0, 101.123046875, 0, 0, 0, 0, 0 },
|
207
|
+
/* 66 : B */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77.978515625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111.279296875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100.78125, 0, 109.912109375, 142.1875, 104.150390625, 100.341796875, 100.244140625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83.935546875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86.9140625, 0, 98.583984375, 0, 96.97265625, 98.681640625, 0, 0, 0, 0, 0 },
|
208
|
+
/* 67 : C */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77.83203125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115.52734375, 0, 0, 85.791015625, 0, 0, 0, 0, 118.65234375, 0, 119.7265625, 0, 0, 102.5390625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
209
|
+
/* 68 : D */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83.7890625, 0, 84.423828125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117.919921875, 0, 0, 0, 0, 0, 0, 0, 0, 92.333984375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109.130859375, 0, 117.08984375, 149.8046875, 111.9140625, 108.349609375, 107.275390625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
210
|
+
/* 69 : E */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78.125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105.615234375, 0, 100.9765625, 0, 0, 0, 110.7421875, 0, 0, 0, 0, 0, 0, 0, 113.4765625, 0, 114.55078125, 0, 93.798828125, 0, 0, 0, 0, 0, 0, 95.166015625, 0, 0, 0, 0, 0, 0, 95.068359375, 0, 89.74609375, 99.90234375, 96.77734375, 76.220703125, 0, 0, 0, 0, 0, 0, 0, 0, 99.755859375, 0, 99.90234375, 0, 0, 81.15234375, 0, 91.650390625, 118.65234375, 0, 91.748046875, 0, 0, 0, 0, 0 },
|
211
|
+
/* 70 : F */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60.9375, 0, 61.767578125, 81.396484375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98.193359375, 0, 98.388671875, 0, 0, 0, 108.154296875, 0, 0, 72.509765625, 0, 0, 0, 0, 111.279296875, 0, 112.353515625, 0, 90.478515625, 0, 0, 0, 0, 96.77734375, 0, 92.236328125, 0, 0, 0, 0, 0, 0, 91.162109375, 0, 86.865234375, 97.509765625, 94.23828125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97.314453125, 0, 97.509765625, 0, 83.349609375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
212
|
+
/* 71 : G */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111.328125, 0, 119.3359375, 151.611328125, 0, 110.3515625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106.8359375, 133.49609375, 105.712890625, 106.884765625, 0, 0, 0, 0, 0 },
|
213
|
+
/* 72 : H */ { 0 },
|
214
|
+
/* 73 : I */ { 0 },
|
215
|
+
/* 74 : J */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55.517578125, 0, 56.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88.037109375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82.8125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
216
|
+
/* 75 : K */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80.908203125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101.46484375, 0, 0, 0, 111.1328125, 0, 0, 0, 0, 0, 0, 0, 113.427734375, 0, 114.501953125, 0, 97.021484375, 0, 114.697265625, 0, 139.2578125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98.193359375, 0, 92.28515625, 102.880859375, 99.90234375, 81.25, 0, 0, 0, 0, 0, 0, 130.2734375, 102.9296875, 102.880859375, 102.9296875, 102.880859375, 85.25390625, 90.185546875, 83.59375, 102.9296875, 92.1875, 118.798828125, 0, 93.06640625, 0, 0, 0, 0, 0 },
|
217
|
+
/* 76 : L */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67.822265625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94.287109375, 0, 0, 0, 102.83203125, 0, 0, 75.146484375, 0, 0, 0, 0, 106.0546875, 0, 107.12890625, 0, 0, 83.447265625, 104.052734375, 91.6015625, 125.244140625, 0, 82.6171875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71.435546875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73.681640625, 0, 83.3984375, 110.009765625, 0, 83.447265625, 0, 0, 0, 0, 0 },
|
218
|
+
/* 77 : M */ { 0 },
|
219
|
+
/* 78 : N */ { 0 },
|
220
|
+
/* 79 : O */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88.818359375, 0, 89.990234375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122.94921875, 0, 0, 0, 0, 0, 0, 0, 0, 96.77734375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112.255859375, 0, 121.728515625, 154.1015625, 114.990234375, 112.255859375, 111.181640625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108.935546875, 0, 105.224609375, 0, 0, 0, 0 },
|
221
|
+
/* 80 : P */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64.208984375, 79.296875, 64.16015625, 85.009765625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102.1484375, 0, 0, 0, 0, 0, 0, 0, 0, 76.708984375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99.951171875, 0, 107.91015625, 0, 101.85546875, 99.853515625, 97.0703125, 0, 0, 0, 0, 0, 0, 97.412109375, 0, 91.845703125, 102.5390625, 99.4140625, 82.763671875, 0, 0, 0, 0, 0, 0, 0, 0, 102.392578125, 0, 102.5390625, 0, 89.208984375, 85.7421875, 0, 0, 0, 0, 97.509765625, 0, 0, 0, 0, 0 },
|
222
|
+
/* 81 : Q */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99.072265625, 0, 0, 97.36328125, 0, 0, 112.548828125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96.97265625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101.171875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113.720703125, 0, 122.802734375, 155.6640625, 119.775390625, 113.76953125, 0, 0, 0, 99.51171875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117.236328125, 0, 0, 95.068359375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112.109375, 0, 0, 0, 0, 100.1953125, 0 },
|
223
|
+
/* 82 : R */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80.029296875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106.73828125, 0, 0, 0, 116.455078125, 0, 0, 0, 0, 0, 0, 0, 119.53125, 0, 120.60546875, 0, 98.92578125, 102.05078125, 0, 109.66796875, 142.3828125, 0, 101.5625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102.294921875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104.98046875, 0, 0, 0, 0, 0, 0, 98.193359375, 124.169921875, 0, 97.94921875, 0, 0, 0, 0, 0 },
|
224
|
+
/* 83 : S */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76.123046875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103.076171875, 0, 0, 0, 0, 0, 0, 0, 0, 77.392578125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93.994140625, 0, 102.001953125, 134.1796875, 97.216796875, 93.701171875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89.990234375, 116.6015625, 0, 89.990234375, 0, 0, 0, 0, 0 },
|
225
|
+
/* 84 : T */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63.427734375, 71.533203125, 64.0625, 82.12890625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68.9453125, 69.921875, 0, 0, 0, 0, 0, 98.779296875, 0, 100, 0, 0, 0, 108.935546875, 0, 0, 77.44140625, 0, 0, 0, 0, 112.109375, 0, 113.18359375, 0, 94.189453125, 98.828125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88.818359375, 0, 82.373046875, 94.091796875, 89.599609375, 0, 88.427734375, 0, 0, 0, 0, 0, 122.412109375, 95.068359375, 92.578125, 95.068359375, 94.091796875, 77.392578125, 80.37109375, 0, 95.068359375, 89.404296875, 116.015625, 87.646484375, 89.453125, 81.298828125, 0, 0, 0, 0 },
|
226
|
+
/* 85 : U */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87.744140625, 0, 87.646484375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119.82421875, 0, 0, 0, 0, 0, 0, 0, 0, 94.091796875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
227
|
+
/* 86 : V */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73.583984375, 82.421875, 71.97265625, 90.185546875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79.931640625, 78.22265625, 0, 0, 0, 0, 0, 109.912109375, 0, 109.1796875, 0, 0, 0, 118.603515625, 0, 0, 84.716796875, 0, 0, 0, 0, 121.630859375, 0, 122.705078125, 0, 102.099609375, 0, 0, 113.916015625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99.072265625, 0, 93.994140625, 105.029296875, 101.513671875, 0, 98.92578125, 0, 0, 0, 0, 0, 134.1796875, 106.8359375, 105.2734375, 106.8359375, 105.029296875, 89.16015625, 91.455078125, 0, 106.8359375, 0, 0, 0, 100.29296875, 92.236328125, 0, 0, 0, 0 },
|
228
|
+
/* 87 : W */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103.369140625, 115.283203125, 104.150390625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108.10546875, 0, 0, 0, 0, 0, 142.28515625, 0, 141.2109375, 0, 0, 0, 150.9765625, 0, 0, 116.552734375, 0, 0, 0, 0, 154.1015625, 0, 155.17578125, 0, 134.423828125, 0, 0, 0, 0, 140.234375, 0, 0, 0, 0, 0, 0, 0, 0, 133.3984375, 0, 127.44140625, 137.98828125, 135.05859375, 0, 133.3984375, 0, 0, 0, 0, 0, 165.91796875, 138.57421875, 137.5, 138.57421875, 137.98828125, 120.8984375, 124.51171875, 0, 138.57421875, 132.470703125, 0, 0, 131.640625, 0, 0, 0, 0, 0 },
|
229
|
+
/* 88 : X */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78.564453125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102.44140625, 0, 0, 0, 111.81640625, 0, 0, 0, 0, 0, 0, 0, 115.33203125, 0, 116.40625, 0, 96.875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102.294921875, 99.755859375, 0, 98.53515625, 0, 0, 0, 0, 0, 0, 0, 102.783203125, 0, 102.294921875, 0, 0, 83.88671875, 102.587890625, 94.384765625, 120.99609375, 0, 95.068359375, 0, 0, 0, 0, 0 },
|
230
|
+
/* 89 : Y */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61.376953125, 73.6328125, 62.40234375, 81.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67.96875, 68.75, 0, 0, 0, 0, 0, 99.169921875, 0, 98.779296875, 0, 0, 0, 108.544921875, 0, 0, 75.146484375, 0, 0, 0, 0, 111.71875, 0, 112.79296875, 0, 93.84765625, 0, 0, 0, 0, 0, 0, 95.068359375, 0, 0, 0, 0, 0, 0, 90.087890625, 0, 83.251953125, 94.873046875, 91.30859375, 76.220703125, 88.8671875, 0, 70.1171875, 70.263671875, 0, 0, 124.0234375, 96.6796875, 93.994140625, 96.6796875, 94.873046875, 79.00390625, 82.2265625, 80.078125, 96.6796875, 90.52734375, 117.1875, 88.623046875, 90.8203125, 83.349609375, 0, 0, 0, 0 },
|
231
|
+
/* 90 : Z */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75.244140625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104.150390625, 0, 98.92578125, 0, 0, 0, 108.740234375, 0, 0, 0, 0, 0, 0, 0, 111.865234375, 0, 112.939453125, 0, 0, 0, 0, 0, 135.44921875, 0, 95.21484375, 0, 0, 0, 0, 0, 0, 0, 94.23828125, 0, 88.525390625, 98.486328125, 95.068359375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98.14453125, 0, 98.486328125, 0, 0, 0, 0, 89.794921875, 116.455078125, 0, 90.283203125, 0, 0, 0, 0, 0 },
|
232
|
+
/* 91 : [ */ { 0 },
|
233
|
+
/* 92 : \ */ { 0 },
|
234
|
+
/* 93 : ] */ { 0 },
|
235
|
+
/* 94 : ^ */ { 0 },
|
236
|
+
/* 95 : _ */ { 0 },
|
237
|
+
/* 96 : ` */ { 0 },
|
238
|
+
/* 97 : a */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77.83203125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80.46875, 0, 91.40625, 118.701171875, 90.283203125, 91.30859375, 0, 0, 0, 0, 0 },
|
239
|
+
/* 98 : b */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82.2265625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91.162109375, 85.595703125, 0, 97.216796875, 123.53515625, 93.84765625, 97.314453125, 90.673828125, 0, 0, 0, 0 },
|
240
|
+
/* 99 : c */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89.35546875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94.189453125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
241
|
+
/* 100 : d */ { 0 },
|
242
|
+
/* 101 : e */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79.39453125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82.71484375, 0, 94.43359375, 120.751953125, 91.552734375, 94.384765625, 88.28125, 0, 0, 0, 0 },
|
243
|
+
/* 102 : f */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62.3046875, 0, 0, 49.31640625, 58.447265625, 49.12109375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76.46484375, 82.51953125, 70.60546875, 80.46875, 77.783203125, 58.349609375, 74.658203125, 82.568359375, 52.9296875, 52.9296875, 75.439453125, 52.9296875, 0, 0, 81.15234375, 0, 80.46875, 0, 68.310546875, 61.572265625, 0, 76.318359375, 102.294921875, 0, 76.26953125, 69.04296875, 0, 0, 0, 0 },
|
244
|
+
/* 103 : g */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73.14453125, 0, 0, 89.2578125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93.115234375, 0, 88.76953125, 98.681640625, 95.99609375, 0, 95.068359375, 0, 0, 0, 0, 0, 0, 0, 99.12109375, 0, 98.681640625, 0, 0, 79.052734375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
245
|
+
/* 104 : h */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82.470703125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85.107421875, 0, 96.044921875, 123.33984375, 94.921875, 95.947265625, 0, 0, 0, 0, 0 },
|
246
|
+
/* 105 : i */ { 0 },
|
247
|
+
/* 106 : j */ { 0 },
|
248
|
+
/* 107 : k */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72.314453125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91.650390625, 0, 85.400390625, 95.263671875, 91.9921875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94.82421875, 0, 95.263671875, 0, 83.642578125, 78.466796875, 96.728515625, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
249
|
+
/* 108 : l */ { 0 },
|
250
|
+
/* 109 : m */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109.814453125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112.451171875, 0, 123.388671875, 150.68359375, 122.265625, 123.291015625, 0, 0, 0, 0, 0 },
|
251
|
+
/* 110 : n */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82.470703125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85.107421875, 0, 96.044921875, 123.33984375, 94.921875, 95.947265625, 0, 0, 0, 0, 0 },
|
252
|
+
/* 111 : o */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75.87890625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97.4609375, 123.828125, 94.091796875, 97.4609375, 90.91796875, 0, 0, 0, 0 },
|
253
|
+
/* 112 : p */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82.2265625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91.162109375, 85.595703125, 0, 97.216796875, 123.53515625, 93.84765625, 97.314453125, 90.673828125, 0, 0, 0, 0 },
|
254
|
+
/* 113 : q */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100.09765625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
255
|
+
/* 114 : r */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51.220703125, 62.548828125, 50.048828125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80.712890625, 0, 75.68359375, 86.03515625, 83.30078125, 0, 80.56640625, 0, 0, 0, 0, 0, 0, 0, 85.986328125, 0, 86.03515625, 0, 72.265625, 0, 0, 80.95703125, 106.884765625, 0, 80.615234375, 0, 0, 0, 0, 0 },
|
256
|
+
/* 115 : s */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68.701171875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71.484375, 0, 82.763671875, 110.107421875, 81.34765625, 82.568359375, 77.734375, 0, 0, 0, 0 },
|
257
|
+
/* 116 : t */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61.03515625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80.17578125, 0, 74.560546875, 84.912109375, 82.177734375, 61.23046875, 0, 0, 55.712890625, 0, 0, 0, 0, 0, 85.25390625, 0, 84.912109375, 0, 0, 63.427734375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
258
|
+
/* 117 : u */ { 0 },
|
259
|
+
/* 118 : v */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62.353515625, 73.486328125, 62.20703125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91.6015625, 0, 86.23046875, 96.728515625, 93.9453125, 76.220703125, 90.869140625, 0, 0, 0, 0, 0, 0, 0, 96.97265625, 0, 96.728515625, 0, 83.837890625, 79.150390625, 0, 90.91796875, 117.236328125, 0, 91.015625, 83.3984375, 0, 0, 0, 0 },
|
260
|
+
/* 119 : w */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87.841796875, 100, 90.33203125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118.26171875, 0, 112.79296875, 123.14453125, 120.361328125, 102.294921875, 117.67578125, 0, 0, 0, 0, 0, 0, 0, 123.291015625, 0, 123.14453125, 0, 109.716796875, 105.17578125, 0, 117.236328125, 143.359375, 0, 117.333984375, 110.15625, 0, 0, 0, 0 },
|
261
|
+
/* 120 : x */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70.8984375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89.404296875, 0, 83.349609375, 93.701171875, 90.4296875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93.359375, 0, 93.701171875, 0, 81.8359375, 77.099609375, 94.873046875, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
262
|
+
/* 121 : y */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63.0859375, 73.681640625, 63.916015625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91.650390625, 0, 86.279296875, 96.630859375, 93.798828125, 76.26953125, 91.064453125, 0, 0, 0, 0, 0, 0, 0, 96.826171875, 0, 96.630859375, 0, 83.447265625, 79.248046875, 0, 91.015625, 117.138671875, 0, 91.015625, 83.935546875, 0, 0, 0, 0 },
|
263
|
+
/* 122 : z */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85.7421875, 0, 79.58984375, 89.794921875, 87.01171875, 69.53125, 85.7421875, 0, 0, 0, 0, 0, 0, 0, 90.0390625, 0, 89.794921875, 0, 77.5390625, 0, 91.552734375, 83.7890625, 109.912109375, 0, 83.88671875, 0, 0, 0, 0, 0 },
|
264
|
+
/* 123 : { */ { 0 },
|
265
|
+
/* 124 : | */ { 0 },
|
266
|
+
/* 125 : } */ { 0 },
|
267
|
+
/* 126 : ~ */ { 0 },
|
268
|
+
};
|
269
|
+
|
270
|
+
|
271
|
+
static float TIMES_NEW_ROMAN_DEFAULT = 51.008943256578945;
|
272
|
+
static float TIMES_NEW_ROMAN_CHAR_WIDTH[127] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 33.30078125, 40.8203125, 50, 50, 83.30078125, 77.783203125, 18.017578125, 33.30078125, 33.30078125, 50, 56.396484375, 25, 33.30078125, 25, 27.783203125, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 27.783203125, 27.783203125, 56.396484375, 56.396484375, 56.396484375, 44.384765625, 92.08984375, 72.216796875, 66.69921875, 66.69921875, 72.216796875, 61.083984375, 55.615234375, 72.216796875, 72.216796875, 33.30078125, 38.916015625, 72.216796875, 61.083984375, 88.916015625, 72.216796875, 72.216796875, 55.615234375, 72.216796875, 66.69921875, 55.615234375, 61.083984375, 72.216796875, 72.216796875, 94.384765625, 72.216796875, 72.216796875, 61.083984375, 33.30078125, 27.783203125, 33.30078125, 46.923828125, 50, 33.30078125, 44.384765625, 50, 44.384765625, 50, 44.384765625, 33.30078125, 50, 50, 27.783203125, 27.783203125, 50, 27.783203125, 77.783203125, 50, 50, 50, 50, 33.30078125, 38.916015625, 27.783203125, 50, 50, 72.216796875, 50, 50, 44.384765625, 47.998046875, 20.01953125, 47.998046875, 54.1015625};
|
273
|
+
static float TIMES_NEW_ROMAN_KERNING[127][127] = {
|
274
|
+
/* 0 : */ { 0 },
|
275
|
+
/* 1 : */ { 0 },
|
276
|
+
/* 2 : */ { 0 },
|
277
|
+
/* 3 : */ { 0 },
|
278
|
+
/* 4 : */ { 0 },
|
279
|
+
/* 5 : */ { 0 },
|
280
|
+
/* 6 : */ { 0 },
|
281
|
+
/* 7 : */ { 0 },
|
282
|
+
/* 8 : */ { 0 },
|
283
|
+
/* 9 : */ { 0 },
|
284
|
+
/* 10 : */ { 0 },
|
285
|
+
/* 11 : */ { 0 },
|
286
|
+
/* 12 : */ { 0 },
|
287
|
+
/* 13 : */ { 0 },
|
288
|
+
/* 14 : */ { 0 },
|
289
|
+
/* 15 : */ { 0 },
|
290
|
+
/* 16 : */ { 0 },
|
291
|
+
/* 17 : */ { 0 },
|
292
|
+
/* 18 : */ { 0 },
|
293
|
+
/* 19 : */ { 0 },
|
294
|
+
/* 20 : */ { 0 },
|
295
|
+
/* 21 : */ { 0 },
|
296
|
+
/* 22 : */ { 0 },
|
297
|
+
/* 23 : */ { 0 },
|
298
|
+
/* 24 : */ { 0 },
|
299
|
+
/* 25 : */ { 0 },
|
300
|
+
/* 26 : */ { 0 },
|
301
|
+
/* 27 : */ { 0 },
|
302
|
+
/* 28 : */ { 0 },
|
303
|
+
/* 29 : */ { 0 },
|
304
|
+
/* 30 : */ { 0 },
|
305
|
+
/* 31 : */ { 0 },
|
306
|
+
/* 32 : */ { 0 },
|
307
|
+
/* 33 : ! */ { 0 },
|
308
|
+
/* 34 : " */ { 0 },
|
309
|
+
/* 35 : # */ { 0 },
|
310
|
+
/* 36 : $ */ { 0 },
|
311
|
+
/* 37 : % */ { 0 },
|
312
|
+
/* 38 : & */ { 0 },
|
313
|
+
/* 39 : ' */ { 0 },
|
314
|
+
/* 40 : ( */ { 0 },
|
315
|
+
/* 41 : ) */ { 0 },
|
316
|
+
/* 42 : * */ { 0 },
|
317
|
+
/* 43 : + */ { 0 },
|
318
|
+
/* 44 : , */ { 0 },
|
319
|
+
/* 45 : - */ { 0 },
|
320
|
+
/* 46 : . */ { 0 },
|
321
|
+
/* 47 : / */ { 0 },
|
322
|
+
/* 48 : 0 */ { 0 },
|
323
|
+
/* 49 : 1 */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96.2890625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
324
|
+
/* 50 : 2 */ { 0 },
|
325
|
+
/* 51 : 3 */ { 0 },
|
326
|
+
/* 52 : 4 */ { 0 },
|
327
|
+
/* 53 : 5 */ { 0 },
|
328
|
+
/* 54 : 6 */ { 0 },
|
329
|
+
/* 55 : 7 */ { 0 },
|
330
|
+
/* 56 : 8 */ { 0 },
|
331
|
+
/* 57 : 9 */ { 0 },
|
332
|
+
/* 58 : : */ { 0 },
|
333
|
+
/* 59 : ; */ { 0 },
|
334
|
+
/* 60 : < */ { 0 },
|
335
|
+
/* 61 : = */ { 0 },
|
336
|
+
/* 62 : > */ { 0 },
|
337
|
+
/* 63 : ? */ { 0 },
|
338
|
+
/* 64 : @ */ { 0 },
|
339
|
+
/* 65 : A */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91.69921875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122.216796875, 0, 131.54296875, 158.59375, 0, 135.25390625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114.794921875, 135.25390625, 0, 113.037109375, 0, 0, 0, 0, 0 },
|
340
|
+
/* 66 : B */ { 0 },
|
341
|
+
/* 67 : C */ { 0 },
|
342
|
+
/* 68 : D */ { 0 },
|
343
|
+
/* 69 : E */ { 0 },
|
344
|
+
/* 70 : F */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72.607421875, 0, 72.607421875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120.41015625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
345
|
+
/* 71 : G */ { 0 },
|
346
|
+
/* 72 : H */ { 0 },
|
347
|
+
/* 73 : I */ { 0 },
|
348
|
+
/* 74 : J */ { 0 },
|
349
|
+
/* 75 : K */ { 0 },
|
350
|
+
/* 76 : L */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82.373046875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112.98828125, 0, 124.12109375, 148.046875, 0, 123.291015625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105.56640625, 0, 0, 0, 0, 0 },
|
351
|
+
/* 77 : M */ { 0 },
|
352
|
+
/* 78 : N */ { 0 },
|
353
|
+
/* 79 : O */ { 0 },
|
354
|
+
/* 80 : P */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76.904296875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69.53125, 0, 69.53125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118.65234375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
355
|
+
/* 81 : Q */ { 0 },
|
356
|
+
/* 82 : R */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121.77734375, 0, 130.908203125, 155.56640625, 0, 133.3984375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112.6953125, 0, 0, 0, 0, 0 },
|
357
|
+
/* 83 : S */ { 0 },
|
358
|
+
/* 84 : T */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84.27734375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78.662109375, 85.205078125, 78.662109375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83.88671875, 83.349609375, 0, 0, 0, 0, 0, 125.29296875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131.494140625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98.486328125, 0, 98.486328125, 0, 98.486328125, 0, 0, 0, 85.3515625, 0, 0, 0, 0, 0, 104.1015625, 0, 0, 90.869140625, 93.017578125, 0, 107.568359375, 0, 126.318359375, 0, 104.1015625, 0, 0, 0, 0, 0 },
|
359
|
+
/* 85 : U */ { 0 },
|
360
|
+
/* 86 : V */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95.41015625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84.326171875, 96.337890625, 84.326171875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92.578125, 92.578125, 0, 0, 0, 0, 0, 131.54296875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105.517578125, 0, 0, 0, 105.517578125, 0, 0, 0, 93.994140625, 0, 0, 0, 0, 0, 109.326171875, 0, 0, 99.51171875, 0, 0, 116.2109375, 0, 0, 0, 111.1328125, 0, 0, 0, 0, 0 },
|
361
|
+
/* 87 : W */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117.578125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110.205078125, 122.16796875, 110.205078125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118.45703125, 118.45703125, 0, 0, 0, 0, 0, 155.517578125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130.76171875, 0, 0, 0, 130.76171875, 0, 0, 0, 118.1640625, 0, 0, 0, 0, 0, 136.376953125, 0, 0, 123.681640625, 0, 0, 140.380859375, 0, 0, 0, 138.37890625, 0, 0, 0, 0, 0 },
|
362
|
+
/* 88 : X */ { 0 },
|
363
|
+
/* 89 : Y */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93.505859375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84.326171875, 94.43359375, 84.326171875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90.8203125, 90.8203125, 0, 0, 0, 0, 0, 133.349609375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106.591796875, 0, 0, 0, 106.591796875, 0, 0, 0, 94.482421875, 0, 0, 0, 0, 0, 112.20703125, 113.037109375, 111.1328125, 0, 0, 0, 111.1328125, 112.20703125, 0, 0, 0, 0, 0, 0, 0, 0 },
|
364
|
+
/* 90 : Z */ { 0 },
|
365
|
+
/* 91 : [ */ { 0 },
|
366
|
+
/* 92 : \ */ { 0 },
|
367
|
+
/* 93 : ] */ { 0 },
|
368
|
+
/* 94 : ^ */ { 0 },
|
369
|
+
/* 95 : _ */ { 0 },
|
370
|
+
/* 96 : ` */ { 0 },
|
371
|
+
/* 97 : a */ { 0 },
|
372
|
+
/* 98 : b */ { 0 },
|
373
|
+
/* 99 : c */ { 0 },
|
374
|
+
/* 100 : d */ { 0 },
|
375
|
+
/* 101 : e */ { 0 },
|
376
|
+
/* 102 : f */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64.794921875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
377
|
+
/* 103 : g */ { 0 },
|
378
|
+
/* 104 : h */ { 0 },
|
379
|
+
/* 105 : i */ { 0 },
|
380
|
+
/* 106 : j */ { 0 },
|
381
|
+
/* 107 : k */ { 0 },
|
382
|
+
/* 108 : l */ { 0 },
|
383
|
+
/* 109 : m */ { 0 },
|
384
|
+
/* 110 : n */ { 0 },
|
385
|
+
/* 111 : o */ { 0 },
|
386
|
+
/* 112 : p */ { 0 },
|
387
|
+
/* 113 : q */ { 0 },
|
388
|
+
/* 114 : r */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54.296875, 64.599609375, 52.783203125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81.494140625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
389
|
+
/* 115 : s */ { 0 },
|
390
|
+
/* 116 : t */ { 0 },
|
391
|
+
/* 117 : u */ { 0 },
|
392
|
+
/* 118 : v */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68.505859375, 0, 68.505859375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
393
|
+
/* 119 : w */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90.72265625, 0, 90.72265625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
394
|
+
/* 120 : x */ { 0 },
|
395
|
+
/* 121 : y */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68.505859375, 0, 68.505859375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
396
|
+
/* 122 : z */ { 0 },
|
397
|
+
/* 123 : { */ { 0 },
|
398
|
+
/* 124 : | */ { 0 },
|
399
|
+
/* 125 : } */ { 0 },
|
400
|
+
/* 126 : ~ */ { 0 },
|
401
|
+
};
|
402
|
+
|
403
|
+
|
404
|
+
static VALUE
|
405
|
+
rb_some_text_width(VALUE text, float default_width, float char_widths[127], float kernings[127][127]) {
|
406
|
+
char *text_value = StringValueCStr(text);
|
407
|
+
|
408
|
+
double max = 0;
|
409
|
+
double total = 0;
|
410
|
+
char ch = 0;
|
411
|
+
char nch = 0;
|
412
|
+
int i = 0;
|
413
|
+
|
414
|
+
for (i = 0; i < strlen(text_value); i++) {
|
415
|
+
ch = text_value[i];
|
416
|
+
nch = text_value[i + 1];
|
417
|
+
|
418
|
+
if (ch == 10) {
|
419
|
+
if (total > max) max = total;
|
420
|
+
total = 0;
|
421
|
+
}
|
422
|
+
|
423
|
+
if (ch < 32) continue;
|
424
|
+
|
425
|
+
if (ch > 126) {
|
426
|
+
total += default_width;
|
427
|
+
} else if (kernings[ch][nch]) {
|
428
|
+
total += kernings[ch][nch];
|
429
|
+
i++;
|
430
|
+
} else {
|
431
|
+
total += char_widths[ch];
|
432
|
+
}
|
433
|
+
}
|
434
|
+
if (total > max) max = total;
|
435
|
+
|
436
|
+
return DBL2NUM(max);
|
437
|
+
}
|
438
|
+
|
439
|
+
static VALUE
|
440
|
+
rb_arial_text_width(VALUE self, VALUE text) {
|
441
|
+
return rb_some_text_width(text, ARIAL_DEFAULT, ARIAL_CHAR_WIDTH, ARIAL_KERNING);
|
442
|
+
}
|
443
|
+
|
444
|
+
static VALUE
|
445
|
+
rb_calibri_text_width(VALUE self, VALUE text) {
|
446
|
+
return rb_some_text_width(text, CALIBRI_DEFAULT, CALIBRI_CHAR_WIDTH, CALIBRI_KERNING);
|
447
|
+
}
|
448
|
+
|
449
|
+
static VALUE
|
450
|
+
rb_times_new_roman_text_width(VALUE self, VALUE text) {
|
451
|
+
return rb_some_text_width(text, TIMES_NEW_ROMAN_DEFAULT, TIMES_NEW_ROMAN_CHAR_WIDTH, TIMES_NEW_ROMAN_KERNING);
|
452
|
+
}
|
453
|
+
|
454
|
+
void Init_text_width_ext()
|
455
|
+
{
|
456
|
+
VALUE fastExcel = rb_define_module("FastExcel");
|
457
|
+
rb_define_singleton_method(fastExcel, "arial_text_width", rb_arial_text_width, 1);
|
458
|
+
rb_define_singleton_method(fastExcel, "calibri_text_width", rb_calibri_text_width, 1);
|
459
|
+
rb_define_singleton_method(fastExcel, "times_new_roman_text_width", rb_times_new_roman_text_width, 1);
|
460
|
+
}
|