fpdf 1.53
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/bookmark.rb +99 -0
- data/lib/chinese.rb +445 -0
- data/lib/fpdf.rb +1536 -0
- data/lib/fpdf_eps.rb +139 -0
- data/lib/makefont.rb +1787 -0
- metadata +50 -0
data/lib/fpdf_eps.rb
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
# Information
|
2
|
+
#
|
3
|
+
# PDF_EPS class from Valentin Schmidt ported to ruby by Thiago Jackiw (tjackiw@gmail.com)
|
4
|
+
# working for Mingle LLC (www.mingle.com)
|
5
|
+
# Release Date: July 13th, 2006
|
6
|
+
#
|
7
|
+
# Description
|
8
|
+
#
|
9
|
+
# This script allows to embed vector-based Adobe Illustrator (AI) or AI-compatible EPS files.
|
10
|
+
# Only vector drawing is supported, not text or bitmap. Although the script was successfully
|
11
|
+
# tested with various AI format versions, best results are probably achieved with files that
|
12
|
+
# were exported in the AI3 format (tested with Illustrator CS2, Freehand MX and Photoshop CS2).
|
13
|
+
#
|
14
|
+
# ImageEps(string file, float x, float y [, float w [, float h [, string link [, boolean useBoundingBox]]]])
|
15
|
+
#
|
16
|
+
# Same parameters as for regular FPDF::Image() method, with an additional one:
|
17
|
+
#
|
18
|
+
# useBoundingBox: specifies whether to position the bounding box (true) or the complete canvas (false)
|
19
|
+
# at location (x,y). Default value is true.
|
20
|
+
#
|
21
|
+
# First added to the Ruby FPDF distribution in 1.53c
|
22
|
+
#
|
23
|
+
# Usage is as follows:
|
24
|
+
#
|
25
|
+
# require 'fpdf'
|
26
|
+
# require 'fpdf_eps'
|
27
|
+
# pdf = FPDF.new
|
28
|
+
# pdf.extend(PDF_EPS)
|
29
|
+
# pdf.ImageEps(...)
|
30
|
+
#
|
31
|
+
# This allows it to be combined with other extensions, such as the bookmark
|
32
|
+
# module.
|
33
|
+
|
34
|
+
module PDF_EPS
|
35
|
+
def ImageEps(file, x, y, w=0, h=0, link='', use_bounding_box=true)
|
36
|
+
data = nil
|
37
|
+
if File.exists?(file)
|
38
|
+
File.open(file, 'rb') do |f|
|
39
|
+
data = f.read()
|
40
|
+
end
|
41
|
+
else
|
42
|
+
Error('EPS file not found: '+file)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Find BoundingBox param
|
46
|
+
regs = data.scan(/%%BoundingBox: [^\r\n]*/m)
|
47
|
+
regs << regs[0].gsub(/%%BoundingBox: /, '')
|
48
|
+
if regs.size > 1
|
49
|
+
tmp = regs[1].to_s.split(' ')
|
50
|
+
@x1 = tmp[0].to_i
|
51
|
+
@y1 = tmp[1].to_i
|
52
|
+
@x2 = tmp[2].to_i
|
53
|
+
@y2 = tmp[3].to_i
|
54
|
+
else
|
55
|
+
Error('No BoundingBox found in EPS file: '+file)
|
56
|
+
end
|
57
|
+
f_start = data.index('%%EndSetup')
|
58
|
+
f_start = data.index('%%EndProlog') if f_start === false
|
59
|
+
f_start = data.index('%%BoundingBox') if f_start === false
|
60
|
+
|
61
|
+
data = data.slice(f_start, data.length)
|
62
|
+
|
63
|
+
f_end = data.index('%%PageTrailer')
|
64
|
+
f_end = data.index('showpage') if f_end === false
|
65
|
+
data = data.slice(0, f_end) if f_end
|
66
|
+
|
67
|
+
# save the current graphic state
|
68
|
+
out('q')
|
69
|
+
|
70
|
+
k = @k
|
71
|
+
|
72
|
+
# Translate
|
73
|
+
if use_bounding_box
|
74
|
+
dx = x*k-@x1
|
75
|
+
dy = @hPt-@y2-y*k
|
76
|
+
else
|
77
|
+
dx = x*k
|
78
|
+
dy = -y*k
|
79
|
+
end
|
80
|
+
tm = [1,0,0,1,dx,dy]
|
81
|
+
out(sprintf('%.3f %.3f %.3f %.3f %.3f %.3f cm',
|
82
|
+
tm[0], tm[1], tm[2], tm[3], tm[4], tm[5]))
|
83
|
+
|
84
|
+
if w > 0
|
85
|
+
scale_x = w/((@x2-@x1)/k)
|
86
|
+
if h > 0
|
87
|
+
scale_y = h/((@y2-@y1)/k)
|
88
|
+
else
|
89
|
+
scale_y = scale_x
|
90
|
+
h = (@y2-@y1)/k * scale_y
|
91
|
+
end
|
92
|
+
else
|
93
|
+
if h > 0
|
94
|
+
scale_y = $h/((@y2-@y1)/$k)
|
95
|
+
scale_x = scale_y
|
96
|
+
w = (@x2-@x1)/k * scale_x
|
97
|
+
else
|
98
|
+
w = (@x2-@x1)/k
|
99
|
+
h = (@y2-@y1)/k
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
if !scale_x.nil?
|
104
|
+
# Scale
|
105
|
+
tm = [scale_x,0,0,scale_y,0,@hPt*(1-scale_y)]
|
106
|
+
out(sprintf('%.3f %.3f %.3f %.3f %.3f %.3f cm',
|
107
|
+
tm[0], tm[1], tm[2], tm[3], tm[4], tm[5]))
|
108
|
+
end
|
109
|
+
|
110
|
+
data.split(/\r\n|[\r\n]/).each do |line|
|
111
|
+
next if line == '' || line[0,1] == '%'
|
112
|
+
len = line.length
|
113
|
+
# next if (len > 2 && line[len-2,len] != ' ')
|
114
|
+
cmd = line[len-2,len].strip
|
115
|
+
case cmd
|
116
|
+
when 'm', 'l', 'v', 'y', 'c', 'k', 'K', 'g', 'G', 's', 'S', 'J', 'j', 'w', 'M', 'd':
|
117
|
+
out(line)
|
118
|
+
|
119
|
+
when 'L':
|
120
|
+
line[len-1,len]='l'
|
121
|
+
out(line)
|
122
|
+
|
123
|
+
when 'C':
|
124
|
+
line[len-1,len]='c'
|
125
|
+
out(line)
|
126
|
+
|
127
|
+
when 'f', 'F':
|
128
|
+
out('f*')
|
129
|
+
|
130
|
+
when 'b', 'B':
|
131
|
+
out(cmd + '*')
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
# restore previous graphic state
|
136
|
+
out('Q')
|
137
|
+
Link(x,y,w,h,link) if link
|
138
|
+
end
|
139
|
+
end
|
data/lib/makefont.rb
ADDED
@@ -0,0 +1,1787 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Utility to generate font definition files
|
4
|
+
# Version: 1.1
|
5
|
+
# Date: 2006-07-19
|
6
|
+
#
|
7
|
+
# Changelog:
|
8
|
+
# Version 1.1 - Brian Ollenberger
|
9
|
+
# - Fixed a very small bug in MakeFont for generating FontDef.diff.
|
10
|
+
|
11
|
+
Charencodings = {
|
12
|
+
# Central Europe
|
13
|
+
'cp1250' => [
|
14
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
15
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
16
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
17
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
18
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
19
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
20
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
21
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
22
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
23
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
24
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
25
|
+
'comma', 'hyphen', 'period', 'slash',
|
26
|
+
'zero', 'one', 'two', 'three',
|
27
|
+
'four', 'five', 'six', 'seven',
|
28
|
+
'eight', 'nine', 'colon', 'semicolon',
|
29
|
+
'less', 'equal', 'greater', 'question',
|
30
|
+
'at', 'A', 'B', 'C',
|
31
|
+
'D', 'E', 'F', 'G',
|
32
|
+
'H', 'I', 'J', 'K',
|
33
|
+
'L', 'M', 'N', 'O',
|
34
|
+
'P', 'Q', 'R', 'S',
|
35
|
+
'T', 'U', 'V', 'W',
|
36
|
+
'X', 'Y', 'Z', 'bracketleft',
|
37
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
38
|
+
'grave', 'a', 'b', 'c',
|
39
|
+
'd', 'e', 'f', 'g',
|
40
|
+
'h', 'i', 'j', 'k',
|
41
|
+
'l', 'm', 'n', 'o',
|
42
|
+
'p', 'q', 'r', 's',
|
43
|
+
't', 'u', 'v', 'w',
|
44
|
+
'x', 'y', 'z', 'braceleft',
|
45
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
46
|
+
'Euro', '.notdef', 'quotesinglbase', '.notdef',
|
47
|
+
'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
48
|
+
'.notdef', 'perthousand', 'Scaron', 'guilsinglleft',
|
49
|
+
'Sacute', 'Tcaron', 'Zcaron', 'Zacute',
|
50
|
+
'.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
51
|
+
'quotedblright', 'bullet', 'endash', 'emdash',
|
52
|
+
'.notdef', 'trademark', 'scaron', 'guilsinglright',
|
53
|
+
'sacute', 'tcaron', 'zcaron', 'zacute',
|
54
|
+
'space', 'caron', 'breve', 'Lslash',
|
55
|
+
'currency', 'Aogonek', 'brokenbar', 'section',
|
56
|
+
'dieresis', 'copyright', 'Scedilla', 'guillemotleft',
|
57
|
+
'logicalnot', 'hyphen', 'registered', 'Zdotaccent',
|
58
|
+
'degree', 'plusminus', 'ogonek', 'lslash',
|
59
|
+
'acute', 'mu', 'paragraph', 'periodcentered',
|
60
|
+
'cedilla', 'aogonek', 'scedilla', 'guillemotright',
|
61
|
+
'Lcaron', 'hungarumlaut', 'lcaron', 'zdotaccent',
|
62
|
+
'Racute', 'Aacute', 'Acircumflex', 'Abreve',
|
63
|
+
'Adieresis', 'Lacute', 'Cacute', 'Ccedilla',
|
64
|
+
'Ccaron', 'Eacute', 'Eogonek', 'Edieresis',
|
65
|
+
'Ecaron', 'Iacute', 'Icircumflex', 'Dcaron',
|
66
|
+
'Dcroat', 'Nacute', 'Ncaron', 'Oacute',
|
67
|
+
'Ocircumflex', 'Ohungarumlaut', 'Odieresis', 'multiply',
|
68
|
+
'Rcaron', 'Uring', 'Uacute', 'Uhungarumlaut',
|
69
|
+
'Udieresis', 'Yacute', 'Tcommaaccent', 'germandbls',
|
70
|
+
'racute', 'aacute', 'acircumflex', 'abreve',
|
71
|
+
'adieresis', 'lacute', 'cacute', 'ccedilla',
|
72
|
+
'ccaron', 'eacute', 'eogonek', 'edieresis',
|
73
|
+
'ecaron', 'iacute', 'icircumflex', 'dcaron',
|
74
|
+
'dcroat', 'nacute', 'ncaron', 'oacute',
|
75
|
+
'ocircumflex', 'ohungarumlaut', 'odieresis', 'divide',
|
76
|
+
'rcaron', 'uring', 'uacute', 'uhungarumlaut',
|
77
|
+
'udieresis', 'yacute', 'tcommaaccent', 'dotaccent'
|
78
|
+
],
|
79
|
+
# Cyrillic
|
80
|
+
'cp1251' => [
|
81
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
82
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
83
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
84
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
85
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
86
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
87
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
88
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
89
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
90
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
91
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
92
|
+
'comma', 'hyphen', 'period', 'slash',
|
93
|
+
'zero', 'one', 'two', 'three',
|
94
|
+
'four', 'five', 'six', 'seven',
|
95
|
+
'eight', 'nine', 'colon', 'semicolon',
|
96
|
+
'less', 'equal', 'greater', 'question',
|
97
|
+
'at', 'A', 'B', 'C',
|
98
|
+
'D', 'E', 'F', 'G',
|
99
|
+
'H', 'I', 'J', 'K',
|
100
|
+
'L', 'M', 'N', 'O',
|
101
|
+
'P', 'Q', 'R', 'S',
|
102
|
+
'T', 'U', 'V', 'W',
|
103
|
+
'X', 'Y', 'Z', 'bracketleft',
|
104
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
105
|
+
'grave', 'a', 'b', 'c',
|
106
|
+
'd', 'e', 'f', 'g',
|
107
|
+
'h', 'i', 'j', 'k',
|
108
|
+
'l', 'm', 'n', 'o',
|
109
|
+
'p', 'q', 'r', 's',
|
110
|
+
't', 'u', 'v', 'w',
|
111
|
+
'x', 'y', 'z', 'braceleft',
|
112
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
113
|
+
'afii10051', 'afii10052', 'quotesinglbase', 'afii10100',
|
114
|
+
'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
115
|
+
'Euro', 'perthousand', 'afii10058', 'guilsinglleft',
|
116
|
+
'afii10059', 'afii10061', 'afii10060', 'afii10145',
|
117
|
+
'afii10099', 'quoteleft', 'quoteright', 'quotedblleft',
|
118
|
+
'quotedblright', 'bullet', 'endash', 'emdash',
|
119
|
+
'.notdef', 'trademark', 'afii10106', 'guilsinglright',
|
120
|
+
'afii10107', 'afii10109', 'afii10108', 'afii10193',
|
121
|
+
'space', 'afii10062', 'afii10110', 'afii10057',
|
122
|
+
'currency', 'afii10050', 'brokenbar', 'section',
|
123
|
+
'afii10023', 'copyright', 'afii10053', 'guillemotleft',
|
124
|
+
'logicalnot', 'hyphen', 'registered', 'afii10056',
|
125
|
+
'degree', 'plusminus', 'afii10055', 'afii10103',
|
126
|
+
'afii10098', 'mu', 'paragraph', 'periodcentered',
|
127
|
+
'afii10071', 'afii61352', 'afii10101', 'guillemotright',
|
128
|
+
'afii10105', 'afii10054', 'afii10102', 'afii10104',
|
129
|
+
'afii10017', 'afii10018', 'afii10019', 'afii10020',
|
130
|
+
'afii10021', 'afii10022', 'afii10024', 'afii10025',
|
131
|
+
'afii10026', 'afii10027', 'afii10028', 'afii10029',
|
132
|
+
'afii10030', 'afii10031', 'afii10032', 'afii10033',
|
133
|
+
'afii10034', 'afii10035', 'afii10036', 'afii10037',
|
134
|
+
'afii10038', 'afii10039', 'afii10040', 'afii10041',
|
135
|
+
'afii10042', 'afii10043', 'afii10044', 'afii10045',
|
136
|
+
'afii10046', 'afii10047', 'afii10048', 'afii10049',
|
137
|
+
'afii10065', 'afii10066', 'afii10067', 'afii10068',
|
138
|
+
'afii10069', 'afii10070', 'afii10072', 'afii10073',
|
139
|
+
'afii10074', 'afii10075', 'afii10076', 'afii10077',
|
140
|
+
'afii10078', 'afii10079', 'afii10080', 'afii10081',
|
141
|
+
'afii10082', 'afii10083', 'afii10084', 'afii10085',
|
142
|
+
'afii10086', 'afii10087', 'afii10088', 'afii10089',
|
143
|
+
'afii10090', 'afii10091', 'afii10092', 'afii10093',
|
144
|
+
'afii10094', 'afii10095', 'afii10096', 'afii10097'
|
145
|
+
],
|
146
|
+
# Western Europe
|
147
|
+
'cp1252' => [
|
148
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
149
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
150
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
151
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
152
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
153
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
154
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
155
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
156
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
157
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
158
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
159
|
+
'comma', 'hyphen', 'period', 'slash',
|
160
|
+
'zero', 'one', 'two', 'three',
|
161
|
+
'four', 'five', 'six', 'seven',
|
162
|
+
'eight', 'nine', 'colon', 'semicolon',
|
163
|
+
'less', 'equal', 'greater', 'question',
|
164
|
+
'at', 'A', 'B', 'C',
|
165
|
+
'D', 'E', 'F', 'G',
|
166
|
+
'H', 'I', 'J', 'K',
|
167
|
+
'L', 'M', 'N', 'O',
|
168
|
+
'P', 'Q', 'R', 'S',
|
169
|
+
'T', 'U', 'V', 'W',
|
170
|
+
'X', 'Y', 'Z', 'bracketleft',
|
171
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
172
|
+
'grave', 'a', 'b', 'c',
|
173
|
+
'd', 'e', 'f', 'g',
|
174
|
+
'h', 'i', 'j', 'k',
|
175
|
+
'l', 'm', 'n', 'o',
|
176
|
+
'p', 'q', 'r', 's',
|
177
|
+
't', 'u', 'v', 'w',
|
178
|
+
'x', 'y', 'z', 'braceleft',
|
179
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
180
|
+
'Euro', '.notdef', 'quotesinglbase', 'florin',
|
181
|
+
'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
182
|
+
'circumflex', 'perthousand', 'Scaron', 'guilsinglleft',
|
183
|
+
'OE', '.notdef', 'Zcaron', '.notdef',
|
184
|
+
'.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
185
|
+
'quotedblright', 'bullet', 'endash', 'emdash',
|
186
|
+
'tilde', 'trademark', 'scaron', 'guilsinglright',
|
187
|
+
'oe', '.notdef', 'zcaron', 'Ydieresis',
|
188
|
+
'space', 'exclamdown', 'cent', 'sterling',
|
189
|
+
'currency', 'yen', 'brokenbar', 'section',
|
190
|
+
'dieresis', 'copyright', 'ordfeminine', 'guillemotleft',
|
191
|
+
'logicalnot', 'hyphen', 'registered', 'macron',
|
192
|
+
'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
193
|
+
'acute', 'mu', 'paragraph', 'periodcentered',
|
194
|
+
'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright',
|
195
|
+
'onequarter', 'onehalf', 'threequarters', 'questiondown',
|
196
|
+
'Agrave', 'Aacute', 'Acircumflex', 'Atilde',
|
197
|
+
'Adieresis', 'Aring', 'AE', 'Ccedilla',
|
198
|
+
'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
199
|
+
'Igrave', 'Iacute', 'Icircumflex', 'Idieresis',
|
200
|
+
'Eth', 'Ntilde', 'Ograve', 'Oacute',
|
201
|
+
'Ocircumflex', 'Otilde', 'Odieresis', 'multiply',
|
202
|
+
'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex',
|
203
|
+
'Udieresis', 'Yacute', 'Thorn', 'germandbls',
|
204
|
+
'agrave', 'aacute', 'acircumflex', 'atilde',
|
205
|
+
'adieresis', 'aring', 'ae', 'ccedilla',
|
206
|
+
'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
207
|
+
'igrave', 'iacute', 'icircumflex', 'idieresis',
|
208
|
+
'eth', 'ntilde', 'ograve', 'oacute',
|
209
|
+
'ocircumflex', 'otilde', 'odieresis', 'divide',
|
210
|
+
'oslash', 'ugrave', 'uacute', 'ucircumflex',
|
211
|
+
'udieresis', 'yacute', 'thorn', 'ydieresis'
|
212
|
+
],
|
213
|
+
# Greek
|
214
|
+
'cp1253' => [
|
215
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
216
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
217
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
218
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
219
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
220
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
221
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
222
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
223
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
224
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
225
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
226
|
+
'comma', 'hyphen', 'period', 'slash',
|
227
|
+
'zero', 'one', 'two', 'three',
|
228
|
+
'four', 'five', 'six', 'seven',
|
229
|
+
'eight', 'nine', 'colon', 'semicolon',
|
230
|
+
'less', 'equal', 'greater', 'question',
|
231
|
+
'at', 'A', 'B', 'C',
|
232
|
+
'D', 'E', 'F', 'G',
|
233
|
+
'H', 'I', 'J', 'K',
|
234
|
+
'L', 'M', 'N', 'O',
|
235
|
+
'P', 'Q', 'R', 'S',
|
236
|
+
'T', 'U', 'V', 'W',
|
237
|
+
'X', 'Y', 'Z', 'bracketleft',
|
238
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
239
|
+
'grave', 'a', 'b', 'c',
|
240
|
+
'd', 'e', 'f', 'g',
|
241
|
+
'h', 'i', 'j', 'k',
|
242
|
+
'l', 'm', 'n', 'o',
|
243
|
+
'p', 'q', 'r', 's',
|
244
|
+
't', 'u', 'v', 'w',
|
245
|
+
'x', 'y', 'z', 'braceleft',
|
246
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
247
|
+
'Euro', '.notdef', 'quotesinglbase', 'florin',
|
248
|
+
'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
249
|
+
'.notdef', 'perthousand', '.notdef', 'guilsinglleft',
|
250
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
251
|
+
'.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
252
|
+
'quotedblright', 'bullet', 'endash', 'emdash',
|
253
|
+
'.notdef', 'trademark', '.notdef', 'guilsinglright',
|
254
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
255
|
+
'space', 'dieresistonos', 'Alphatonos', 'sterling',
|
256
|
+
'currency', 'yen', 'brokenbar', 'section',
|
257
|
+
'dieresis', 'copyright', '.notdef', 'guillemotleft',
|
258
|
+
'logicalnot', 'hyphen', 'registered', 'afii00208',
|
259
|
+
'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
260
|
+
'tonos', 'mu', 'paragraph', 'periodcentered',
|
261
|
+
'Epsilontonos', 'Etatonos', 'Iotatonos', 'guillemotright',
|
262
|
+
'Omicrontonos', 'onehalf', 'Upsilontonos', 'Omegatonos',
|
263
|
+
'iotadieresistonos','Alpha', 'Beta', 'Gamma',
|
264
|
+
'Delta', 'Epsilon', 'Zeta', 'Eta',
|
265
|
+
'Theta', 'Iota', 'Kappa', 'Lambda',
|
266
|
+
'Mu', 'Nu', 'Xi', 'Omicron',
|
267
|
+
'Pi', 'Rho', '.notdef', 'Sigma',
|
268
|
+
'Tau', 'Upsilon', 'Phi', 'Chi',
|
269
|
+
'Psi', 'Omega', 'Iotadieresis', 'Upsilondieresis',
|
270
|
+
'alphatonos', 'epsilontonos', 'etatonos', 'iotatonos',
|
271
|
+
'upsilondieresistonos','alpha', 'beta', 'gamma',
|
272
|
+
'delta', 'epsilon', 'zeta', 'eta',
|
273
|
+
'theta', 'iota', 'kappa', 'lambda',
|
274
|
+
'mu', 'nu', 'xi', 'omicron',
|
275
|
+
'pi', 'rho', 'sigma1', 'sigma',
|
276
|
+
'tau', 'upsilon', 'phi', 'chi',
|
277
|
+
'psi', 'omega', 'iotadieresis', 'upsilondieresis',
|
278
|
+
'omicrontonos', 'upsilontonos', 'omegatonos', '.notdef'
|
279
|
+
],
|
280
|
+
# Turkish
|
281
|
+
'cp1254' => [
|
282
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
283
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
284
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
285
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
286
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
287
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
288
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
289
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
290
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
291
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
292
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
293
|
+
'comma', 'hyphen', 'period', 'slash',
|
294
|
+
'zero', 'one', 'two', 'three',
|
295
|
+
'four', 'five', 'six', 'seven',
|
296
|
+
'eight', 'nine', 'colon', 'semicolon',
|
297
|
+
'less', 'equal', 'greater', 'question',
|
298
|
+
'at', 'A', 'B', 'C',
|
299
|
+
'D', 'E', 'F', 'G',
|
300
|
+
'H', 'I', 'J', 'K',
|
301
|
+
'L', 'M', 'N', 'O',
|
302
|
+
'P', 'Q', 'R', 'S',
|
303
|
+
'T', 'U', 'V', 'W',
|
304
|
+
'X', 'Y', 'Z', 'bracketleft',
|
305
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
306
|
+
'grave', 'a', 'b', 'c',
|
307
|
+
'd', 'e', 'f', 'g',
|
308
|
+
'h', 'i', 'j', 'k',
|
309
|
+
'l', 'm', 'n', 'o',
|
310
|
+
'p', 'q', 'r', 's',
|
311
|
+
't', 'u', 'v', 'w',
|
312
|
+
'x', 'y', 'z', 'braceleft',
|
313
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
314
|
+
'Euro', '.notdef', 'quotesinglbase', 'florin',
|
315
|
+
'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
316
|
+
'circumflex', 'perthousand', 'Scaron', 'guilsinglleft',
|
317
|
+
'OE', '.notdef', '.notdef', '.notdef',
|
318
|
+
'.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
319
|
+
'quotedblright', 'bullet', 'endash', 'emdash',
|
320
|
+
'tilde', 'trademark', 'scaron', 'guilsinglright',
|
321
|
+
'oe', '.notdef', '.notdef', 'Ydieresis',
|
322
|
+
'space', 'exclamdown', 'cent', 'sterling',
|
323
|
+
'currency', 'yen', 'brokenbar', 'section',
|
324
|
+
'dieresis', 'copyright', 'ordfeminine', 'guillemotleft',
|
325
|
+
'logicalnot', 'hyphen', 'registered', 'macron',
|
326
|
+
'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
327
|
+
'acute', 'mu', 'paragraph', 'periodcentered',
|
328
|
+
'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright',
|
329
|
+
'onequarter', 'onehalf', 'threequarters', 'questiondown',
|
330
|
+
'Agrave', 'Aacute', 'Acircumflex', 'Atilde',
|
331
|
+
'Adieresis', 'Aring', 'AE', 'Ccedilla',
|
332
|
+
'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
333
|
+
'Igrave', 'Iacute', 'Icircumflex', 'Idieresis',
|
334
|
+
'Gbreve', 'Ntilde', 'Ograve', 'Oacute',
|
335
|
+
'Ocircumflex', 'Otilde', 'Odieresis', 'multiply',
|
336
|
+
'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex',
|
337
|
+
'Udieresis', 'Idotaccent', 'Scedilla', 'germandbls',
|
338
|
+
'agrave', 'aacute', 'acircumflex', 'atilde',
|
339
|
+
'adieresis', 'aring', 'ae', 'ccedilla',
|
340
|
+
'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
341
|
+
'igrave', 'iacute', 'icircumflex', 'idieresis',
|
342
|
+
'gbreve', 'ntilde', 'ograve', 'oacute',
|
343
|
+
'ocircumflex', 'otilde', 'odieresis', 'divide',
|
344
|
+
'oslash', 'ugrave', 'uacute', 'ucircumflex',
|
345
|
+
'udieresis', 'dotlessi', 'scedilla', 'ydieresis'
|
346
|
+
],
|
347
|
+
# Hebrew
|
348
|
+
'cp1255' => [
|
349
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
350
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
351
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
352
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
353
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
354
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
355
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
356
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
357
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
358
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
359
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
360
|
+
'comma', 'hyphen', 'period', 'slash',
|
361
|
+
'zero', 'one', 'two', 'three',
|
362
|
+
'four', 'five', 'six', 'seven',
|
363
|
+
'eight', 'nine', 'colon', 'semicolon',
|
364
|
+
'less', 'equal', 'greater', 'question',
|
365
|
+
'at', 'A', 'B', 'C',
|
366
|
+
'D', 'E', 'F', 'G',
|
367
|
+
'H', 'I', 'J', 'K',
|
368
|
+
'L', 'M', 'N', 'O',
|
369
|
+
'P', 'Q', 'R', 'S',
|
370
|
+
'T', 'U', 'V', 'W',
|
371
|
+
'X', 'Y', 'Z', 'bracketleft',
|
372
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
373
|
+
'grave', 'a', 'b', 'c',
|
374
|
+
'd', 'e', 'f', 'g',
|
375
|
+
'h', 'i', 'j', 'k',
|
376
|
+
'l', 'm', 'n', 'o',
|
377
|
+
'p', 'q', 'r', 's',
|
378
|
+
't', 'u', 'v', 'w',
|
379
|
+
'x', 'y', 'z', 'braceleft',
|
380
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
381
|
+
'Euro', '.notdef', 'quotesinglbase', 'florin',
|
382
|
+
'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
383
|
+
'circumflex', 'perthousand', '.notdef', 'guilsinglleft',
|
384
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
385
|
+
'.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
386
|
+
'quotedblright', 'bullet', 'endash', 'emdash',
|
387
|
+
'tilde', 'trademark', '.notdef', 'guilsinglright',
|
388
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
389
|
+
'space', 'exclamdown', 'cent', 'sterling',
|
390
|
+
'afii57636', 'yen', 'brokenbar', 'section',
|
391
|
+
'dieresis', 'copyright', 'multiply', 'guillemotleft',
|
392
|
+
'logicalnot', 'sfthyphen', 'registered', 'macron',
|
393
|
+
'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
394
|
+
'acute', 'mu', 'paragraph', 'middot',
|
395
|
+
'cedilla', 'onesuperior', 'divide', 'guillemotright',
|
396
|
+
'onequarter', 'onehalf', 'threequarters', 'questiondown',
|
397
|
+
'afii57799', 'afii57801', 'afii57800', 'afii57802',
|
398
|
+
'afii57793', 'afii57794', 'afii57795', 'afii57798',
|
399
|
+
'afii57797', 'afii57806', '.notdef', 'afii57796',
|
400
|
+
'afii57807', 'afii57839', 'afii57645', 'afii57841',
|
401
|
+
'afii57842', 'afii57804', 'afii57803', 'afii57658',
|
402
|
+
'afii57716', 'afii57717', 'afii57718', 'gereshhebrew',
|
403
|
+
'gershayimhebrew','.notdef', '.notdef', '.notdef',
|
404
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
405
|
+
'afii57664', 'afii57665', 'afii57666', 'afii57667',
|
406
|
+
'afii57668', 'afii57669', 'afii57670', 'afii57671',
|
407
|
+
'afii57672', 'afii57673', 'afii57674', 'afii57675',
|
408
|
+
'afii57676', 'afii57677', 'afii57678', 'afii57679',
|
409
|
+
'afii57680', 'afii57681', 'afii57682', 'afii57683',
|
410
|
+
'afii57684', 'afii57685', 'afii57686', 'afii57687',
|
411
|
+
'afii57688', 'afii57689', 'afii57690', '.notdef',
|
412
|
+
'.notdef', 'afii299', 'afii300', '.notdef'
|
413
|
+
],
|
414
|
+
# Baltic
|
415
|
+
'cp1257' => [
|
416
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
417
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
418
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
419
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
420
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
421
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
422
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
423
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
424
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
425
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
426
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
427
|
+
'comma', 'hyphen', 'period', 'slash',
|
428
|
+
'zero', 'one', 'two', 'three',
|
429
|
+
'four', 'five', 'six', 'seven',
|
430
|
+
'eight', 'nine', 'colon', 'semicolon',
|
431
|
+
'less', 'equal', 'greater', 'question',
|
432
|
+
'at', 'A', 'B', 'C',
|
433
|
+
'D', 'E', 'F', 'G',
|
434
|
+
'H', 'I', 'J', 'K',
|
435
|
+
'L', 'M', 'N', 'O',
|
436
|
+
'P', 'Q', 'R', 'S',
|
437
|
+
'T', 'U', 'V', 'W',
|
438
|
+
'X', 'Y', 'Z', 'bracketleft',
|
439
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
440
|
+
'grave', 'a', 'b', 'c',
|
441
|
+
'd', 'e', 'f', 'g',
|
442
|
+
'h', 'i', 'j', 'k',
|
443
|
+
'l', 'm', 'n', 'o',
|
444
|
+
'p', 'q', 'r', 's',
|
445
|
+
't', 'u', 'v', 'w',
|
446
|
+
'x', 'y', 'z', 'braceleft',
|
447
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
448
|
+
'Euro', '.notdef', 'quotesinglbase', '.notdef',
|
449
|
+
'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
450
|
+
'.notdef', 'perthousand', '.notdef', 'guilsinglleft',
|
451
|
+
'.notdef', 'dieresis', 'caron', 'cedilla',
|
452
|
+
'.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
453
|
+
'quotedblright', 'bullet', 'endash', 'emdash',
|
454
|
+
'.notdef', 'trademark', '.notdef', 'guilsinglright',
|
455
|
+
'.notdef', 'macron', 'ogonek', '.notdef',
|
456
|
+
'space', '.notdef', 'cent', 'sterling',
|
457
|
+
'currency', '.notdef', 'brokenbar', 'section',
|
458
|
+
'Oslash', 'copyright', 'Rcommaaccent', 'guillemotleft',
|
459
|
+
'logicalnot', 'hyphen', 'registered', 'AE',
|
460
|
+
'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
461
|
+
'acute', 'mu', 'paragraph', 'periodcentered',
|
462
|
+
'oslash', 'onesuperior', 'rcommaaccent', 'guillemotright',
|
463
|
+
'onequarter', 'onehalf', 'threequarters', 'ae',
|
464
|
+
'Aogonek', 'Iogonek', 'Amacron', 'Cacute',
|
465
|
+
'Adieresis', 'Aring', 'Eogonek', 'Emacron',
|
466
|
+
'Ccaron', 'Eacute', 'Zacute', 'Edotaccent',
|
467
|
+
'Gcommaaccent', 'Kcommaaccent', 'Imacron', 'Lcommaaccent',
|
468
|
+
'Scaron', 'Nacute', 'Ncommaaccent', 'Oacute',
|
469
|
+
'Omacron', 'Otilde', 'Odieresis', 'multiply',
|
470
|
+
'Uogonek', 'Lslash', 'Sacute', 'Umacron',
|
471
|
+
'Udieresis', 'Zdotaccent', 'Zcaron', 'germandbls',
|
472
|
+
'aogonek', 'iogonek', 'amacron', 'cacute',
|
473
|
+
'adieresis', 'aring', 'eogonek', 'emacron',
|
474
|
+
'ccaron', 'eacute', 'zacute', 'edotaccent',
|
475
|
+
'gcommaaccent', 'kcommaaccent', 'imacron', 'lcommaaccent',
|
476
|
+
'scaron', 'nacute', 'ncommaaccent', 'oacute',
|
477
|
+
'omacron', 'otilde', 'odieresis', 'divide',
|
478
|
+
'uogonek', 'lslash', 'sacute', 'umacron',
|
479
|
+
'udieresis', 'zdotaccent', 'zcaron', 'dotaccent'
|
480
|
+
],
|
481
|
+
# Vietnamese
|
482
|
+
'cp1258' => [
|
483
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
484
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
485
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
486
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
487
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
488
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
489
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
490
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
491
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
492
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
493
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
494
|
+
'comma', 'hyphen', 'period', 'slash',
|
495
|
+
'zero', 'one', 'two', 'three',
|
496
|
+
'four', 'five', 'six', 'seven',
|
497
|
+
'eight', 'nine', 'colon', 'semicolon',
|
498
|
+
'less', 'equal', 'greater', 'question',
|
499
|
+
'at', 'A', 'B', 'C',
|
500
|
+
'D', 'E', 'F', 'G',
|
501
|
+
'H', 'I', 'J', 'K',
|
502
|
+
'L', 'M', 'N', 'O',
|
503
|
+
'P', 'Q', 'R', 'S',
|
504
|
+
'T', 'U', 'V', 'W',
|
505
|
+
'X', 'Y', 'Z', 'bracketleft',
|
506
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
507
|
+
'grave', 'a', 'b', 'c',
|
508
|
+
'd', 'e', 'f', 'g',
|
509
|
+
'h', 'i', 'j', 'k',
|
510
|
+
'l', 'm', 'n', 'o',
|
511
|
+
'p', 'q', 'r', 's',
|
512
|
+
't', 'u', 'v', 'w',
|
513
|
+
'x', 'y', 'z', 'braceleft',
|
514
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
515
|
+
'Euro', '.notdef', 'quotesinglbase', 'florin',
|
516
|
+
'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
517
|
+
'circumflex', 'perthousand', '.notdef', 'guilsinglleft',
|
518
|
+
'OE', '.notdef', '.notdef', '.notdef',
|
519
|
+
'.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
520
|
+
'quotedblright', 'bullet', 'endash', 'emdash',
|
521
|
+
'tilde', 'trademark', '.notdef', 'guilsinglright',
|
522
|
+
'oe', '.notdef', '.notdef', 'Ydieresis',
|
523
|
+
'space', 'exclamdown', 'cent', 'sterling',
|
524
|
+
'currency', 'yen', 'brokenbar', 'section',
|
525
|
+
'dieresis', 'copyright', 'ordfeminine', 'guillemotleft',
|
526
|
+
'logicalnot', 'hyphen', 'registered', 'macron',
|
527
|
+
'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
528
|
+
'acute', 'mu', 'paragraph', 'periodcentered',
|
529
|
+
'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright',
|
530
|
+
'onequarter', 'onehalf', 'threequarters', 'questiondown',
|
531
|
+
'Agrave', 'Aacute', 'Acircumflex', 'Abreve',
|
532
|
+
'Adieresis', 'Aring', 'AE', 'Ccedilla',
|
533
|
+
'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
534
|
+
'gravecomb', 'Iacute', 'Icircumflex', 'Idieresis',
|
535
|
+
'Dcroat', 'Ntilde', 'hookabovecomb', 'Oacute',
|
536
|
+
'Ocircumflex', 'Ohorn', 'Odieresis', 'multiply',
|
537
|
+
'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex',
|
538
|
+
'Udieresis', 'Uhorn', 'tildecomb', 'germandbls',
|
539
|
+
'agrave', 'aacute', 'acircumflex', 'abreve',
|
540
|
+
'adieresis', 'aring', 'ae', 'ccedilla',
|
541
|
+
'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
542
|
+
'acutecomb', 'iacute', 'icircumflex', 'idieresis',
|
543
|
+
'dcroat', 'ntilde', 'dotbelowcomb', 'oacute',
|
544
|
+
'ocircumflex', 'ohorn', 'odieresis', 'divide',
|
545
|
+
'oslash', 'ugrave', 'uacute', 'ucircumflex',
|
546
|
+
'udieresis', 'uhorn', 'dong', 'ydieresis'
|
547
|
+
],
|
548
|
+
# Thai
|
549
|
+
'cp874' => [
|
550
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
551
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
552
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
553
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
554
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
555
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
556
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
557
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
558
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
559
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
560
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
561
|
+
'comma', 'hyphen', 'period', 'slash',
|
562
|
+
'zero', 'one', 'two', 'three',
|
563
|
+
'four', 'five', 'six', 'seven',
|
564
|
+
'eight', 'nine', 'colon', 'semicolon',
|
565
|
+
'less', 'equal', 'greater', 'question',
|
566
|
+
'at', 'A', 'B', 'C',
|
567
|
+
'D', 'E', 'F', 'G',
|
568
|
+
'H', 'I', 'J', 'K',
|
569
|
+
'L', 'M', 'N', 'O',
|
570
|
+
'P', 'Q', 'R', 'S',
|
571
|
+
'T', 'U', 'V', 'W',
|
572
|
+
'X', 'Y', 'Z', 'bracketleft',
|
573
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
574
|
+
'grave', 'a', 'b', 'c',
|
575
|
+
'd', 'e', 'f', 'g',
|
576
|
+
'h', 'i', 'j', 'k',
|
577
|
+
'l', 'm', 'n', 'o',
|
578
|
+
'p', 'q', 'r', 's',
|
579
|
+
't', 'u', 'v', 'w',
|
580
|
+
'x', 'y', 'z', 'braceleft',
|
581
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
582
|
+
'Euro', '.notdef', '.notdef', '.notdef',
|
583
|
+
'.notdef', 'ellipsis', '.notdef', '.notdef',
|
584
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
585
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
586
|
+
'.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
587
|
+
'quotedblright', 'bullet', 'endash', 'emdash',
|
588
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
589
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
590
|
+
'space', 'kokaithai', 'khokhaithai', 'khokhuatthai',
|
591
|
+
'khokhwaithai', 'khokhonthai', 'khorakhangthai', 'ngonguthai',
|
592
|
+
'chochanthai', 'chochingthai', 'chochangthai', 'sosothai',
|
593
|
+
'chochoethai', 'yoyingthai', 'dochadathai', 'topatakthai',
|
594
|
+
'thothanthai', 'thonangmonthothai', 'thophuthaothai', 'nonenthai',
|
595
|
+
'dodekthai', 'totaothai', 'thothungthai', 'thothahanthai',
|
596
|
+
'thothongthai', 'nonuthai', 'bobaimaithai', 'poplathai',
|
597
|
+
'phophungthai', 'fofathai', 'phophanthai', 'fofanthai',
|
598
|
+
'phosamphaothai', 'momathai', 'yoyakthai', 'roruathai',
|
599
|
+
'ruthai', 'lolingthai', 'luthai', 'wowaenthai',
|
600
|
+
'sosalathai', 'sorusithai', 'sosuathai', 'hohipthai',
|
601
|
+
'lochulathai', 'oangthai', 'honokhukthai', 'paiyannoithai',
|
602
|
+
'saraathai', 'maihanakatthai', 'saraaathai', 'saraamthai',
|
603
|
+
'saraithai', 'saraiithai', 'sarauethai', 'saraueethai',
|
604
|
+
'sarauthai', 'sarauuthai', 'phinthuthai', '.notdef',
|
605
|
+
'.notdef', '.notdef', '.notdef', 'bahtthai',
|
606
|
+
'saraethai', 'saraaethai', 'saraothai', 'saraaimaimuanthai',
|
607
|
+
'saraaimaimalaithai', 'lakkhangyaothai', 'maiyamokthai', 'maitaikhuthai',
|
608
|
+
'maiekthai', 'maithothai', 'maitrithai', 'maichattawathai',
|
609
|
+
'thanthakhatthai', 'nikhahitthai', 'yamakkanthai', 'fongmanthai',
|
610
|
+
'zerothai', 'onethai', 'twothai', 'threethai',
|
611
|
+
'fourthai', 'fivethai', 'sixthai', 'seventhai',
|
612
|
+
'eightthai', 'ninethai', 'angkhankhuthai', 'khomutthai',
|
613
|
+
'.notdef', '.notdef', '.notdef', '.notdef'
|
614
|
+
],
|
615
|
+
# Western Europe
|
616
|
+
'ISO-8859-1' => [
|
617
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
618
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
619
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
620
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
621
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
622
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
623
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
624
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
625
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
626
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
627
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
628
|
+
'comma', 'hyphen', 'period', 'slash',
|
629
|
+
'zero', 'one', 'two', 'three',
|
630
|
+
'four', 'five', 'six', 'seven',
|
631
|
+
'eight', 'nine', 'colon', 'semicolon',
|
632
|
+
'less', 'equal', 'greater', 'question',
|
633
|
+
'at', 'A', 'B', 'C',
|
634
|
+
'D', 'E', 'F', 'G',
|
635
|
+
'H', 'I', 'J', 'K',
|
636
|
+
'L', 'M', 'N', 'O',
|
637
|
+
'P', 'Q', 'R', 'S',
|
638
|
+
'T', 'U', 'V', 'W',
|
639
|
+
'X', 'Y', 'Z', 'bracketleft',
|
640
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
641
|
+
'grave', 'a', 'b', 'c',
|
642
|
+
'd', 'e', 'f', 'g',
|
643
|
+
'h', 'i', 'j', 'k',
|
644
|
+
'l', 'm', 'n', 'o',
|
645
|
+
'p', 'q', 'r', 's',
|
646
|
+
't', 'u', 'v', 'w',
|
647
|
+
'x', 'y', 'z', 'braceleft',
|
648
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
649
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
650
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
651
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
652
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
653
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
654
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
655
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
656
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
657
|
+
'space', 'exclamdown', 'cent', 'sterling',
|
658
|
+
'currency', 'yen', 'brokenbar', 'section',
|
659
|
+
'dieresis', 'copyright', 'ordfeminine', 'guillemotleft',
|
660
|
+
'logicalnot', 'hyphen', 'registered', 'macron',
|
661
|
+
'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
662
|
+
'acute', 'mu', 'paragraph', 'periodcentered',
|
663
|
+
'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright',
|
664
|
+
'onequarter', 'onehalf', 'threequarters', 'questiondown',
|
665
|
+
'Agrave', 'Aacute', 'Acircumflex', 'Atilde',
|
666
|
+
'Adieresis', 'Aring', 'AE', 'Ccedilla',
|
667
|
+
'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
668
|
+
'Igrave', 'Iacute', 'Icircumflex', 'Idieresis',
|
669
|
+
'Eth', 'Ntilde', 'Ograve', 'Oacute',
|
670
|
+
'Ocircumflex', 'Otilde', 'Odieresis', 'multiply',
|
671
|
+
'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex',
|
672
|
+
'Udieresis', 'Yacute', 'Thorn', 'germandbls',
|
673
|
+
'agrave', 'aacute', 'acircumflex', 'atilde',
|
674
|
+
'adieresis', 'aring', 'ae', 'ccedilla',
|
675
|
+
'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
676
|
+
'igrave', 'iacute', 'icircumflex', 'idieresis',
|
677
|
+
'eth', 'ntilde', 'ograve', 'oacute',
|
678
|
+
'ocircumflex', 'otilde', 'odieresis', 'divide',
|
679
|
+
'oslash', 'ugrave', 'uacute', 'ucircumflex',
|
680
|
+
'udieresis', 'yacute', 'thorn', 'ydieresis'
|
681
|
+
],
|
682
|
+
# Central Europe
|
683
|
+
'ISO-8859-2' => [
|
684
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
685
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
686
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
687
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
688
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
689
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
690
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
691
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
692
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
693
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
694
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
695
|
+
'comma', 'hyphen', 'period', 'slash',
|
696
|
+
'zero', 'one', 'two', 'three',
|
697
|
+
'four', 'five', 'six', 'seven',
|
698
|
+
'eight', 'nine', 'colon', 'semicolon',
|
699
|
+
'less', 'equal', 'greater', 'question',
|
700
|
+
'at', 'A', 'B', 'C',
|
701
|
+
'D', 'E', 'F', 'G',
|
702
|
+
'H', 'I', 'J', 'K',
|
703
|
+
'L', 'M', 'N', 'O',
|
704
|
+
'P', 'Q', 'R', 'S',
|
705
|
+
'T', 'U', 'V', 'W',
|
706
|
+
'X', 'Y', 'Z', 'bracketleft',
|
707
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
708
|
+
'grave', 'a', 'b', 'c',
|
709
|
+
'd', 'e', 'f', 'g',
|
710
|
+
'h', 'i', 'j', 'k',
|
711
|
+
'l', 'm', 'n', 'o',
|
712
|
+
'p', 'q', 'r', 's',
|
713
|
+
't', 'u', 'v', 'w',
|
714
|
+
'x', 'y', 'z', 'braceleft',
|
715
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
716
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
717
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
718
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
719
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
720
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
721
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
722
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
723
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
724
|
+
'space', 'Aogonek', 'breve', 'Lslash',
|
725
|
+
'currency', 'Lcaron', 'Sacute', 'section',
|
726
|
+
'dieresis', 'Scaron', 'Scedilla', 'Tcaron',
|
727
|
+
'Zacute', 'hyphen', 'Zcaron', 'Zdotaccent',
|
728
|
+
'degree', 'aogonek', 'ogonek', 'lslash',
|
729
|
+
'acute', 'lcaron', 'sacute', 'caron',
|
730
|
+
'cedilla', 'scaron', 'scedilla', 'tcaron',
|
731
|
+
'zacute', 'hungarumlaut', 'zcaron', 'zdotaccent',
|
732
|
+
'Racute', 'Aacute', 'Acircumflex', 'Abreve',
|
733
|
+
'Adieresis', 'Lacute', 'Cacute', 'Ccedilla',
|
734
|
+
'Ccaron', 'Eacute', 'Eogonek', 'Edieresis',
|
735
|
+
'Ecaron', 'Iacute', 'Icircumflex', 'Dcaron',
|
736
|
+
'Dcroat', 'Nacute', 'Ncaron', 'Oacute',
|
737
|
+
'Ocircumflex', 'Ohungarumlaut', 'Odieresis', 'multiply',
|
738
|
+
'Rcaron', 'Uring', 'Uacute', 'Uhungarumlaut',
|
739
|
+
'Udieresis', 'Yacute', 'Tcommaaccent', 'germandbls',
|
740
|
+
'racute', 'aacute', 'acircumflex', 'abreve',
|
741
|
+
'adieresis', 'lacute', 'cacute', 'ccedilla',
|
742
|
+
'ccaron', 'eacute', 'eogonek', 'edieresis',
|
743
|
+
'ecaron', 'iacute', 'icircumflex', 'dcaron',
|
744
|
+
'dcroat', 'nacute', 'ncaron', 'oacute',
|
745
|
+
'ocircumflex', 'ohungarumlaut', 'odieresis', 'divide',
|
746
|
+
'rcaron', 'uring', 'uacute', 'uhungarumlaut',
|
747
|
+
'udieresis', 'yacute', 'tcommaaccent', 'dotaccent'
|
748
|
+
],
|
749
|
+
# Baltic
|
750
|
+
'ISO-8859-4' => [
|
751
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
752
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
753
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
754
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
755
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
756
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
757
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
758
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
759
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
760
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
761
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
762
|
+
'comma', 'hyphen', 'period', 'slash',
|
763
|
+
'zero', 'one', 'two', 'three',
|
764
|
+
'four', 'five', 'six', 'seven',
|
765
|
+
'eight', 'nine', 'colon', 'semicolon',
|
766
|
+
'less', 'equal', 'greater', 'question',
|
767
|
+
'at', 'A', 'B', 'C',
|
768
|
+
'D', 'E', 'F', 'G',
|
769
|
+
'H', 'I', 'J', 'K',
|
770
|
+
'L', 'M', 'N', 'O',
|
771
|
+
'P', 'Q', 'R', 'S',
|
772
|
+
'T', 'U', 'V', 'W',
|
773
|
+
'X', 'Y', 'Z', 'bracketleft',
|
774
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
775
|
+
'grave', 'a', 'b', 'c',
|
776
|
+
'd', 'e', 'f', 'g',
|
777
|
+
'h', 'i', 'j', 'k',
|
778
|
+
'l', 'm', 'n', 'o',
|
779
|
+
'p', 'q', 'r', 's',
|
780
|
+
't', 'u', 'v', 'w',
|
781
|
+
'x', 'y', 'z', 'braceleft',
|
782
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
783
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
784
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
785
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
786
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
787
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
788
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
789
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
790
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
791
|
+
'space', 'Aogonek', 'kgreenlandic', 'Rcommaaccent',
|
792
|
+
'currency', 'Itilde', 'Lcommaaccent', 'section',
|
793
|
+
'dieresis', 'Scaron', 'Emacron', 'Gcommaaccent',
|
794
|
+
'Tbar', 'hyphen', 'Zcaron', 'macron',
|
795
|
+
'degree', 'aogonek', 'ogonek', 'rcommaaccent',
|
796
|
+
'acute', 'itilde', 'lcommaaccent', 'caron',
|
797
|
+
'cedilla', 'scaron', 'emacron', 'gcommaaccent',
|
798
|
+
'tbar', 'Eng', 'zcaron', 'eng',
|
799
|
+
'Amacron', 'Aacute', 'Acircumflex', 'Atilde',
|
800
|
+
'Adieresis', 'Aring', 'AE', 'Iogonek',
|
801
|
+
'Ccaron', 'Eacute', 'Eogonek', 'Edieresis',
|
802
|
+
'Edotaccent', 'Iacute', 'Icircumflex', 'Imacron',
|
803
|
+
'Dcroat', 'Ncommaaccent', 'Omacron', 'Kcommaaccent',
|
804
|
+
'Ocircumflex', 'Otilde', 'Odieresis', 'multiply',
|
805
|
+
'Oslash', 'Uogonek', 'Uacute', 'Ucircumflex',
|
806
|
+
'Udieresis', 'Utilde', 'Umacron', 'germandbls',
|
807
|
+
'amacron', 'aacute', 'acircumflex', 'atilde',
|
808
|
+
'adieresis', 'aring', 'ae', 'iogonek',
|
809
|
+
'ccaron', 'eacute', 'eogonek', 'edieresis',
|
810
|
+
'edotaccent', 'iacute', 'icircumflex', 'imacron',
|
811
|
+
'dcroat', 'ncommaaccent', 'omacron', 'kcommaaccent',
|
812
|
+
'ocircumflex', 'otilde', 'odieresis', 'divide',
|
813
|
+
'oslash', 'uogonek', 'uacute', 'ucircumflex',
|
814
|
+
'udieresis', 'utilde', 'umacron', 'dotaccent'
|
815
|
+
],
|
816
|
+
# Cyrillic
|
817
|
+
'ISO-8859-5' => [
|
818
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
819
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
820
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
821
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
822
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
823
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
824
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
825
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
826
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
827
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
828
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
829
|
+
'comma', 'hyphen', 'period', 'slash',
|
830
|
+
'zero', 'one', 'two', 'three',
|
831
|
+
'four', 'five', 'six', 'seven',
|
832
|
+
'eight', 'nine', 'colon', 'semicolon',
|
833
|
+
'less', 'equal', 'greater', 'question',
|
834
|
+
'at', 'A', 'B', 'C',
|
835
|
+
'D', 'E', 'F', 'G',
|
836
|
+
'H', 'I', 'J', 'K',
|
837
|
+
'L', 'M', 'N', 'O',
|
838
|
+
'P', 'Q', 'R', 'S',
|
839
|
+
'T', 'U', 'V', 'W',
|
840
|
+
'X', 'Y', 'Z', 'bracketleft',
|
841
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
842
|
+
'grave', 'a', 'b', 'c',
|
843
|
+
'd', 'e', 'f', 'g',
|
844
|
+
'h', 'i', 'j', 'k',
|
845
|
+
'l', 'm', 'n', 'o',
|
846
|
+
'p', 'q', 'r', 's',
|
847
|
+
't', 'u', 'v', 'w',
|
848
|
+
'x', 'y', 'z', 'braceleft',
|
849
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
850
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
851
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
852
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
853
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
854
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
855
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
856
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
857
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
858
|
+
'space', 'afii10023', 'afii10051', 'afii10052',
|
859
|
+
'afii10053', 'afii10054', 'afii10055', 'afii10056',
|
860
|
+
'afii10057', 'afii10058', 'afii10059', 'afii10060',
|
861
|
+
'afii10061', 'hyphen', 'afii10062', 'afii10145',
|
862
|
+
'afii10017', 'afii10018', 'afii10019', 'afii10020',
|
863
|
+
'afii10021', 'afii10022', 'afii10024', 'afii10025',
|
864
|
+
'afii10026', 'afii10027', 'afii10028', 'afii10029',
|
865
|
+
'afii10030', 'afii10031', 'afii10032', 'afii10033',
|
866
|
+
'afii10034', 'afii10035', 'afii10036', 'afii10037',
|
867
|
+
'afii10038', 'afii10039', 'afii10040', 'afii10041',
|
868
|
+
'afii10042', 'afii10043', 'afii10044', 'afii10045',
|
869
|
+
'afii10046', 'afii10047', 'afii10048', 'afii10049',
|
870
|
+
'afii10065', 'afii10066', 'afii10067', 'afii10068',
|
871
|
+
'afii10069', 'afii10070', 'afii10072', 'afii10073',
|
872
|
+
'afii10074', 'afii10075', 'afii10076', 'afii10077',
|
873
|
+
'afii10078', 'afii10079', 'afii10080', 'afii10081',
|
874
|
+
'afii10082', 'afii10083', 'afii10084', 'afii10085',
|
875
|
+
'afii10086', 'afii10087', 'afii10088', 'afii10089',
|
876
|
+
'afii10090', 'afii10091', 'afii10092', 'afii10093',
|
877
|
+
'afii10094', 'afii10095', 'afii10096', 'afii10097',
|
878
|
+
'afii61352', 'afii10071', 'afii10099', 'afii10100',
|
879
|
+
'afii10101', 'afii10102', 'afii10103', 'afii10104',
|
880
|
+
'afii10105', 'afii10106', 'afii10107', 'afii10108',
|
881
|
+
'afii10109', 'section', 'afii10110', 'afii10193'
|
882
|
+
],
|
883
|
+
# Greek
|
884
|
+
'ISO-8859-7' => [
|
885
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
886
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
887
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
888
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
889
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
890
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
891
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
892
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
893
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
894
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
895
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
896
|
+
'comma', 'hyphen', 'period', 'slash',
|
897
|
+
'zero', 'one', 'two', 'three',
|
898
|
+
'four', 'five', 'six', 'seven',
|
899
|
+
'eight', 'nine', 'colon', 'semicolon',
|
900
|
+
'less', 'equal', 'greater', 'question',
|
901
|
+
'at', 'A', 'B', 'C',
|
902
|
+
'D', 'E', 'F', 'G',
|
903
|
+
'H', 'I', 'J', 'K',
|
904
|
+
'L', 'M', 'N', 'O',
|
905
|
+
'P', 'Q', 'R', 'S',
|
906
|
+
'T', 'U', 'V', 'W',
|
907
|
+
'X', 'Y', 'Z', 'bracketleft',
|
908
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
909
|
+
'grave', 'a', 'b', 'c',
|
910
|
+
'd', 'e', 'f', 'g',
|
911
|
+
'h', 'i', 'j', 'k',
|
912
|
+
'l', 'm', 'n', 'o',
|
913
|
+
'p', 'q', 'r', 's',
|
914
|
+
't', 'u', 'v', 'w',
|
915
|
+
'x', 'y', 'z', 'braceleft',
|
916
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
917
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
918
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
919
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
920
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
921
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
922
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
923
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
924
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
925
|
+
'space', 'quoteleft', 'quoteright', 'sterling',
|
926
|
+
'.notdef', '.notdef', 'brokenbar', 'section',
|
927
|
+
'dieresis', 'copyright', '.notdef', 'guillemotleft',
|
928
|
+
'logicalnot', 'hyphen', '.notdef', 'afii00208',
|
929
|
+
'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
930
|
+
'tonos', 'dieresistonos', 'Alphatonos', 'periodcentered',
|
931
|
+
'Epsilontonos', 'Etatonos', 'Iotatonos', 'guillemotright',
|
932
|
+
'Omicrontonos', 'onehalf', 'Upsilontonos', 'Omegatonos',
|
933
|
+
'iotadieresistonos','Alpha', 'Beta', 'Gamma',
|
934
|
+
'Delta', 'Epsilon', 'Zeta', 'Eta',
|
935
|
+
'Theta', 'Iota', 'Kappa', 'Lambda',
|
936
|
+
'Mu', 'Nu', 'Xi', 'Omicron',
|
937
|
+
'Pi', 'Rho', '.notdef', 'Sigma',
|
938
|
+
'Tau', 'Upsilon', 'Phi', 'Chi',
|
939
|
+
'Psi', 'Omega', 'Iotadieresis', 'Upsilondieresis',
|
940
|
+
'alphatonos', 'epsilontonos', 'etatonos', 'iotatonos',
|
941
|
+
'upsilondieresistonos','alpha', 'beta', 'gamma',
|
942
|
+
'delta', 'epsilon', 'zeta', 'eta',
|
943
|
+
'theta', 'iota', 'kappa', 'lambda',
|
944
|
+
'mu', 'nu', 'xi', 'omicron',
|
945
|
+
'pi', 'rho', 'sigma1', 'sigma',
|
946
|
+
'tau', 'upsilon', 'phi', 'chi',
|
947
|
+
'psi', 'omega', 'iotadieresis', 'upsilondieresis',
|
948
|
+
'omicrontonos', 'upsilontonos', 'omegatonos', '.notdef'
|
949
|
+
],
|
950
|
+
# Turkish
|
951
|
+
'ISO-8859-9' => [
|
952
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
953
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
954
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
955
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
956
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
957
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
958
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
959
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
960
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
961
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
962
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
963
|
+
'comma', 'hyphen', 'period', 'slash',
|
964
|
+
'zero', 'one', 'two', 'three',
|
965
|
+
'four', 'five', 'six', 'seven',
|
966
|
+
'eight', 'nine', 'colon', 'semicolon',
|
967
|
+
'less', 'equal', 'greater', 'question',
|
968
|
+
'at', 'A', 'B', 'C',
|
969
|
+
'D', 'E', 'F', 'G',
|
970
|
+
'H', 'I', 'J', 'K',
|
971
|
+
'L', 'M', 'N', 'O',
|
972
|
+
'P', 'Q', 'R', 'S',
|
973
|
+
'T', 'U', 'V', 'W',
|
974
|
+
'X', 'Y', 'Z', 'bracketleft',
|
975
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
976
|
+
'grave', 'a', 'b', 'c',
|
977
|
+
'd', 'e', 'f', 'g',
|
978
|
+
'h', 'i', 'j', 'k',
|
979
|
+
'l', 'm', 'n', 'o',
|
980
|
+
'p', 'q', 'r', 's',
|
981
|
+
't', 'u', 'v', 'w',
|
982
|
+
'x', 'y', 'z', 'braceleft',
|
983
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
984
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
985
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
986
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
987
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
988
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
989
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
990
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
991
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
992
|
+
'space', 'exclamdown', 'cent', 'sterling',
|
993
|
+
'currency', 'yen', 'brokenbar', 'section',
|
994
|
+
'dieresis', 'copyright', 'ordfeminine', 'guillemotleft',
|
995
|
+
'logicalnot', 'hyphen', 'registered', 'macron',
|
996
|
+
'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
997
|
+
'acute', 'mu', 'paragraph', 'periodcentered',
|
998
|
+
'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright',
|
999
|
+
'onequarter', 'onehalf', 'threequarters', 'questiondown',
|
1000
|
+
'Agrave', 'Aacute', 'Acircumflex', 'Atilde',
|
1001
|
+
'Adieresis', 'Aring', 'AE', 'Ccedilla',
|
1002
|
+
'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
1003
|
+
'Igrave', 'Iacute', 'Icircumflex', 'Idieresis',
|
1004
|
+
'Gbreve', 'Ntilde', 'Ograve', 'Oacute',
|
1005
|
+
'Ocircumflex', 'Otilde', 'Odieresis', 'multiply',
|
1006
|
+
'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex',
|
1007
|
+
'Udieresis', 'Idotaccent', 'Scedilla', 'germandbls',
|
1008
|
+
'agrave', 'aacute', 'acircumflex', 'atilde',
|
1009
|
+
'adieresis', 'aring', 'ae', 'ccedilla',
|
1010
|
+
'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
1011
|
+
'igrave', 'iacute', 'icircumflex', 'idieresis',
|
1012
|
+
'gbreve', 'ntilde', 'ograve', 'oacute',
|
1013
|
+
'ocircumflex', 'otilde', 'odieresis', 'divide',
|
1014
|
+
'oslash', 'ugrave', 'uacute', 'ucircumflex',
|
1015
|
+
'udieresis', 'dotlessi', 'scedilla', 'ydieresis'
|
1016
|
+
],
|
1017
|
+
# Thai
|
1018
|
+
'ISO-8859-11' => [
|
1019
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1020
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1021
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1022
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1023
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1024
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1025
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1026
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1027
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
1028
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
1029
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
1030
|
+
'comma', 'hyphen', 'period', 'slash',
|
1031
|
+
'zero', 'one', 'two', 'three',
|
1032
|
+
'four', 'five', 'six', 'seven',
|
1033
|
+
'eight', 'nine', 'colon', 'semicolon',
|
1034
|
+
'less', 'equal', 'greater', 'question',
|
1035
|
+
'at', 'A', 'B', 'C',
|
1036
|
+
'D', 'E', 'F', 'G',
|
1037
|
+
'H', 'I', 'J', 'K',
|
1038
|
+
'L', 'M', 'N', 'O',
|
1039
|
+
'P', 'Q', 'R', 'S',
|
1040
|
+
'T', 'U', 'V', 'W',
|
1041
|
+
'X', 'Y', 'Z', 'bracketleft',
|
1042
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
1043
|
+
'grave', 'a', 'b', 'c',
|
1044
|
+
'd', 'e', 'f', 'g',
|
1045
|
+
'h', 'i', 'j', 'k',
|
1046
|
+
'l', 'm', 'n', 'o',
|
1047
|
+
'p', 'q', 'r', 's',
|
1048
|
+
't', 'u', 'v', 'w',
|
1049
|
+
'x', 'y', 'z', 'braceleft',
|
1050
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
1051
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1052
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1053
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1054
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1055
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1056
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1057
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1058
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1059
|
+
'space', 'kokaithai', 'khokhaithai', 'khokhuatthai',
|
1060
|
+
'khokhwaithai', 'khokhonthai', 'khorakhangthai', 'ngonguthai',
|
1061
|
+
'chochanthai', 'chochingthai', 'chochangthai', 'sosothai',
|
1062
|
+
'chochoethai', 'yoyingthai', 'dochadathai', 'topatakthai',
|
1063
|
+
'thothanthai', 'thonangmonthothai','thophuthaothai', 'nonenthai',
|
1064
|
+
'dodekthai', 'totaothai', 'thothungthai', 'thothahanthai',
|
1065
|
+
'thothongthai', 'nonuthai', 'bobaimaithai', 'poplathai',
|
1066
|
+
'phophungthai', 'fofathai', 'phophanthai', 'fofanthai',
|
1067
|
+
'phosamphaothai', 'momathai', 'yoyakthai', 'roruathai',
|
1068
|
+
'ruthai', 'lolingthai', 'luthai', 'wowaenthai',
|
1069
|
+
'sosalathai', 'sorusithai', 'sosuathai', 'hohipthai',
|
1070
|
+
'lochulathai', 'oangthai', 'honokhukthai', 'paiyannoithai',
|
1071
|
+
'saraathai', 'maihanakatthai', 'saraaathai', 'saraamthai',
|
1072
|
+
'saraithai', 'saraiithai', 'sarauethai', 'saraueethai',
|
1073
|
+
'sarauthai', 'sarauuthai', 'phinthuthai', '.notdef',
|
1074
|
+
'.notdef', '.notdef', '.notdef', 'bahtthai',
|
1075
|
+
'saraethai', 'saraaethai', 'saraothai', 'saraaimaimuanthai',
|
1076
|
+
'saraaimaimalaithai','lakkhangyaothai','maiyamokthai', 'maitaikhuthai',
|
1077
|
+
'maiekthai', 'maithothai', 'maitrithai', 'maichattawathai',
|
1078
|
+
'thanthakhatthai','nikhahitthai', 'yamakkanthai', 'fongmanthai',
|
1079
|
+
'zerothai', 'onethai', 'twothai', 'threethai',
|
1080
|
+
'fourthai', 'fivethai', 'sixthai', 'seventhai',
|
1081
|
+
'eightthai', 'ninethai', 'angkhankhuthai', 'khomutthai',
|
1082
|
+
'.notdef', '.notdef', '.notdef', '.notdef'
|
1083
|
+
],
|
1084
|
+
# Western Europe
|
1085
|
+
'ISO-8859-15' => [
|
1086
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1087
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1088
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1089
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1090
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1091
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1092
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1093
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1094
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
1095
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
1096
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
1097
|
+
'comma', 'hyphen', 'period', 'slash',
|
1098
|
+
'zero', 'one', 'two', 'three',
|
1099
|
+
'four', 'five', 'six', 'seven',
|
1100
|
+
'eight', 'nine', 'colon', 'semicolon',
|
1101
|
+
'less', 'equal', 'greater', 'question',
|
1102
|
+
'at', 'A', 'B', 'C',
|
1103
|
+
'D', 'E', 'F', 'G',
|
1104
|
+
'H', 'I', 'J', 'K',
|
1105
|
+
'L', 'M', 'N', 'O',
|
1106
|
+
'P', 'Q', 'R', 'S',
|
1107
|
+
'T', 'U', 'V', 'W',
|
1108
|
+
'X', 'Y', 'Z', 'bracketleft',
|
1109
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
1110
|
+
'grave', 'a', 'b', 'c',
|
1111
|
+
'd', 'e', 'f', 'g',
|
1112
|
+
'h', 'i', 'j', 'k',
|
1113
|
+
'l', 'm', 'n', 'o',
|
1114
|
+
'p', 'q', 'r', 's',
|
1115
|
+
't', 'u', 'v', 'w',
|
1116
|
+
'x', 'y', 'z', 'braceleft',
|
1117
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
1118
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1119
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1120
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1121
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1122
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1123
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1124
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1125
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1126
|
+
'space', 'exclamdown', 'cent', 'sterling',
|
1127
|
+
'Euro', 'yen', 'Scaron', 'section',
|
1128
|
+
'scaron', 'copyright', 'ordfeminine', 'guillemotleft',
|
1129
|
+
'logicalnot', 'hyphen', 'registered', 'macron',
|
1130
|
+
'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
1131
|
+
'Zcaron', 'mu', 'paragraph', 'periodcentered',
|
1132
|
+
'zcaron', 'onesuperior', 'ordmasculine', 'guillemotright',
|
1133
|
+
'OE', 'oe', 'Ydieresis', 'questiondown',
|
1134
|
+
'Agrave', 'Aacute', 'Acircumflex', 'Atilde',
|
1135
|
+
'Adieresis', 'Aring', 'AE', 'Ccedilla',
|
1136
|
+
'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
1137
|
+
'Igrave', 'Iacute', 'Icircumflex', 'Idieresis',
|
1138
|
+
'Eth', 'Ntilde', 'Ograve', 'Oacute',
|
1139
|
+
'Ocircumflex', 'Otilde', 'Odieresis', 'multiply',
|
1140
|
+
'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex',
|
1141
|
+
'Udieresis', 'Yacute', 'Thorn', 'germandbls',
|
1142
|
+
'agrave', 'aacute', 'acircumflex', 'atilde',
|
1143
|
+
'adieresis', 'aring', 'ae', 'ccedilla',
|
1144
|
+
'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
1145
|
+
'igrave', 'iacute', 'icircumflex', 'idieresis',
|
1146
|
+
'eth', 'ntilde', 'ograve', 'oacute',
|
1147
|
+
'ocircumflex', 'otilde', 'odieresis', 'divide',
|
1148
|
+
'oslash', 'ugrave', 'uacute', 'ucircumflex',
|
1149
|
+
'udieresis', 'yacute', 'thorn', 'ydieresis'
|
1150
|
+
],
|
1151
|
+
# Central Europe
|
1152
|
+
'ISO-8859-16' => [
|
1153
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1154
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1155
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1156
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1157
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1158
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1159
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1160
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1161
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
1162
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
1163
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
1164
|
+
'comma', 'hyphen', 'period', 'slash',
|
1165
|
+
'zero', 'one', 'two', 'three',
|
1166
|
+
'four', 'five', 'six', 'seven',
|
1167
|
+
'eight', 'nine', 'colon', 'semicolon',
|
1168
|
+
'less', 'equal', 'greater', 'question',
|
1169
|
+
'at', 'A', 'B', 'C',
|
1170
|
+
'D', 'E', 'F', 'G',
|
1171
|
+
'H', 'I', 'J', 'K',
|
1172
|
+
'L', 'M', 'N', 'O',
|
1173
|
+
'P', 'Q', 'R', 'S',
|
1174
|
+
'T', 'U', 'V', 'W',
|
1175
|
+
'X', 'Y', 'Z', 'bracketleft',
|
1176
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
1177
|
+
'grave', 'a', 'b', 'c',
|
1178
|
+
'd', 'e', 'f', 'g',
|
1179
|
+
'h', 'i', 'j', 'k',
|
1180
|
+
'l', 'm', 'n', 'o',
|
1181
|
+
'p', 'q', 'r', 's',
|
1182
|
+
't', 'u', 'v', 'w',
|
1183
|
+
'x', 'y', 'z', 'braceleft',
|
1184
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
1185
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1186
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1187
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1188
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1189
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1190
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1191
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1192
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1193
|
+
'space', 'Aogonek', 'aogonek', 'Lslash',
|
1194
|
+
'Euro', 'quotedblbase', 'Scaron', 'section',
|
1195
|
+
'scaron', 'copyright', 'Scommaaccent', 'guillemotleft',
|
1196
|
+
'Zacute', 'hyphen', 'zacute', 'Zdotaccent',
|
1197
|
+
'degree', 'plusminus', 'Ccaron', 'lslash',
|
1198
|
+
'Zcaron', 'quotedblright', 'paragraph', 'periodcentered',
|
1199
|
+
'zcaron', 'ccaron', 'scommaaccent', 'guillemotright',
|
1200
|
+
'OE', 'oe', 'Ydieresis', 'zdotaccent',
|
1201
|
+
'Agrave', 'Aacute', 'Acircumflex', 'Abreve',
|
1202
|
+
'Adieresis', 'Cacute', 'AE', 'Ccedilla',
|
1203
|
+
'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
1204
|
+
'Igrave', 'Iacute', 'Icircumflex', 'Idieresis',
|
1205
|
+
'Dcroat', 'Nacute', 'Ograve', 'Oacute',
|
1206
|
+
'Ocircumflex', 'Ohungarumlaut', 'Odieresis', 'Sacute',
|
1207
|
+
'Uhungarumlaut', 'Ugrave', 'Uacute', 'Ucircumflex',
|
1208
|
+
'Udieresis', 'Eogonek', 'Tcommaaccent', 'germandbls',
|
1209
|
+
'agrave', 'aacute', 'acircumflex', 'abreve',
|
1210
|
+
'adieresis', 'cacute', 'ae', 'ccedilla',
|
1211
|
+
'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
1212
|
+
'igrave', 'iacute', 'icircumflex', 'idieresis',
|
1213
|
+
'dcroat', 'nacute', 'ograve', 'oacute',
|
1214
|
+
'ocircumflex', 'ohungarumlaut', 'odieresis', 'sacute',
|
1215
|
+
'uhungarumlaut', 'ugrave', 'uacute', 'ucircumflex',
|
1216
|
+
'udieresis', 'eogonek', 'tcommaaccent', 'ydieresis'
|
1217
|
+
],
|
1218
|
+
# Russian
|
1219
|
+
'KOI8-R' => [
|
1220
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1221
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1222
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1223
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1224
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1225
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1226
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1227
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1228
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
1229
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
1230
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
1231
|
+
'comma', 'hyphen', 'period', 'slash',
|
1232
|
+
'zero', 'one', 'two', 'three',
|
1233
|
+
'four', 'five', 'six', 'seven',
|
1234
|
+
'eight', 'nine', 'colon', 'semicolon',
|
1235
|
+
'less', 'equal', 'greater', 'question',
|
1236
|
+
'at', 'A', 'B', 'C',
|
1237
|
+
'D', 'E', 'F', 'G',
|
1238
|
+
'H', 'I', 'J', 'K',
|
1239
|
+
'L', 'M', 'N', 'O',
|
1240
|
+
'P', 'Q', 'R', 'S',
|
1241
|
+
'T', 'U', 'V', 'W',
|
1242
|
+
'X', 'Y', 'Z', 'bracketleft',
|
1243
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
1244
|
+
'grave', 'a', 'b', 'c',
|
1245
|
+
'd', 'e', 'f', 'g',
|
1246
|
+
'h', 'i', 'j', 'k',
|
1247
|
+
'l', 'm', 'n', 'o',
|
1248
|
+
'p', 'q', 'r', 's',
|
1249
|
+
't', 'u', 'v', 'w',
|
1250
|
+
'x', 'y', 'z', 'braceleft',
|
1251
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
1252
|
+
'SF100000', 'SF110000', 'SF010000', 'SF030000',
|
1253
|
+
'SF020000', 'SF040000', 'SF080000', 'SF090000',
|
1254
|
+
'SF060000', 'SF070000', 'SF050000', 'upblock',
|
1255
|
+
'dnblock', 'block', 'lfblock', 'rtblock',
|
1256
|
+
'ltshade', 'shade', 'dkshade', 'integraltp',
|
1257
|
+
'filledbox', 'periodcentered', 'radical', 'approxequal',
|
1258
|
+
'lessequal', 'greaterequal', 'space', 'integralbt',
|
1259
|
+
'degree', 'twosuperior', 'periodcentered', 'divide',
|
1260
|
+
'SF430000', 'SF240000', 'SF510000', 'afii10071',
|
1261
|
+
'SF520000', 'SF390000', 'SF220000', 'SF210000',
|
1262
|
+
'SF250000', 'SF500000', 'SF490000', 'SF380000',
|
1263
|
+
'SF280000', 'SF270000', 'SF260000', 'SF360000',
|
1264
|
+
'SF370000', 'SF420000', 'SF190000', 'afii10023',
|
1265
|
+
'SF200000', 'SF230000', 'SF470000', 'SF480000',
|
1266
|
+
'SF410000', 'SF450000', 'SF460000', 'SF400000',
|
1267
|
+
'SF540000', 'SF530000', 'SF440000', 'copyright',
|
1268
|
+
'afii10096', 'afii10065', 'afii10066', 'afii10088',
|
1269
|
+
'afii10069', 'afii10070', 'afii10086', 'afii10068',
|
1270
|
+
'afii10087', 'afii10074', 'afii10075', 'afii10076',
|
1271
|
+
'afii10077', 'afii10078', 'afii10079', 'afii10080',
|
1272
|
+
'afii10081', 'afii10097', 'afii10082', 'afii10083',
|
1273
|
+
'afii10084', 'afii10085', 'afii10072', 'afii10067',
|
1274
|
+
'afii10094', 'afii10093', 'afii10073', 'afii10090',
|
1275
|
+
'afii10095', 'afii10091', 'afii10089', 'afii10092',
|
1276
|
+
'afii10048', 'afii10017', 'afii10018', 'afii10040',
|
1277
|
+
'afii10021', 'afii10022', 'afii10038', 'afii10020',
|
1278
|
+
'afii10039', 'afii10026', 'afii10027', 'afii10028',
|
1279
|
+
'afii10029', 'afii10030', 'afii10031', 'afii10032',
|
1280
|
+
'afii10033', 'afii10049', 'afii10034', 'afii10035',
|
1281
|
+
'afii10036', 'afii10037', 'afii10024', 'afii10019',
|
1282
|
+
'afii10046', 'afii10045', 'afii10025', 'afii10042',
|
1283
|
+
'afii10047', 'afii10043', 'afii10041', 'afii10044'
|
1284
|
+
],
|
1285
|
+
# Ukrainian
|
1286
|
+
'KOI8-U' => [
|
1287
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1288
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1289
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1290
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1291
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1292
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1293
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1294
|
+
'.notdef', '.notdef', '.notdef', '.notdef',
|
1295
|
+
'space', 'exclam', 'quotedbl', 'numbersign',
|
1296
|
+
'dollar', 'percent', 'ampersand', 'quotesingle',
|
1297
|
+
'parenleft', 'parenright', 'asterisk', 'plus',
|
1298
|
+
'comma', 'hyphen', 'period', 'slash',
|
1299
|
+
'zero', 'one', 'two', 'three',
|
1300
|
+
'four', 'five', 'six', 'seven',
|
1301
|
+
'eight', 'nine', 'colon', 'semicolon',
|
1302
|
+
'less', 'equal', 'greater', 'question',
|
1303
|
+
'at', 'A', 'B', 'C',
|
1304
|
+
'D', 'E', 'F', 'G',
|
1305
|
+
'H', 'I', 'J', 'K',
|
1306
|
+
'L', 'M', 'N', 'O',
|
1307
|
+
'P', 'Q', 'R', 'S',
|
1308
|
+
'T', 'U', 'V', 'W',
|
1309
|
+
'X', 'Y', 'Z', 'bracketleft',
|
1310
|
+
'backslash', 'bracketright', 'asciicircum', 'underscore',
|
1311
|
+
'grave', 'a', 'b', 'c',
|
1312
|
+
'd', 'e', 'f', 'g',
|
1313
|
+
'h', 'i', 'j', 'k',
|
1314
|
+
'l', 'm', 'n', 'o',
|
1315
|
+
'p', 'q', 'r', 's',
|
1316
|
+
't', 'u', 'v', 'w',
|
1317
|
+
'x', 'y', 'z', 'braceleft',
|
1318
|
+
'bar', 'braceright', 'asciitilde', '.notdef',
|
1319
|
+
'SF100000', 'SF110000', 'SF010000', 'SF030000',
|
1320
|
+
'SF020000', 'SF040000', 'SF080000', 'SF090000',
|
1321
|
+
'SF060000', 'SF070000', 'SF050000', 'upblock',
|
1322
|
+
'dnblock', 'block', 'lfblock', 'rtblock',
|
1323
|
+
'ltshade', 'shade', 'dkshade', 'integraltp',
|
1324
|
+
'filledbox', 'bullet', 'radical', 'approxequal',
|
1325
|
+
'lessequal', 'greaterequal', 'space', 'integralbt',
|
1326
|
+
'degree', 'twosuperior', 'periodcentered', 'divide',
|
1327
|
+
'SF430000', 'SF240000', 'SF510000', 'afii10071',
|
1328
|
+
'afii10101', 'SF390000', 'afii10103', 'afii10104',
|
1329
|
+
'SF250000', 'SF500000', 'SF490000', 'SF380000',
|
1330
|
+
'SF280000', 'afii10098', 'SF260000', 'SF360000',
|
1331
|
+
'SF370000', 'SF420000', 'SF190000', 'afii10023',
|
1332
|
+
'afii10053', 'SF230000', 'afii10055', 'afii10056',
|
1333
|
+
'SF410000', 'SF450000', 'SF460000', 'SF400000',
|
1334
|
+
'SF540000', 'afii10050', 'SF440000', 'copyright',
|
1335
|
+
'afii10096', 'afii10065', 'afii10066', 'afii10088',
|
1336
|
+
'afii10069', 'afii10070', 'afii10086', 'afii10068',
|
1337
|
+
'afii10087', 'afii10074', 'afii10075', 'afii10076',
|
1338
|
+
'afii10077', 'afii10078', 'afii10079', 'afii10080',
|
1339
|
+
'afii10081', 'afii10097', 'afii10082', 'afii10083',
|
1340
|
+
'afii10084', 'afii10085', 'afii10072', 'afii10067',
|
1341
|
+
'afii10094', 'afii10093', 'afii10073', 'afii10090',
|
1342
|
+
'afii10095', 'afii10091', 'afii10089', 'afii10092',
|
1343
|
+
'afii10048', 'afii10017', 'afii10018', 'afii10040',
|
1344
|
+
'afii10021', 'afii10022', 'afii10038', 'afii10020',
|
1345
|
+
'afii10039', 'afii10026', 'afii10027', 'afii10028',
|
1346
|
+
'afii10029', 'afii10030', 'afii10031', 'afii10032',
|
1347
|
+
'afii10033', 'afii10049', 'afii10034', 'afii10035',
|
1348
|
+
'afii10036', 'afii10037', 'afii10024', 'afii10019',
|
1349
|
+
'afii10046', 'afii10045', 'afii10025', 'afii10042',
|
1350
|
+
'afii10047', 'afii10043', 'afii10041', 'afii10044'
|
1351
|
+
]
|
1352
|
+
}
|
1353
|
+
|
1354
|
+
def ReadAFM(file, map)
|
1355
|
+
|
1356
|
+
# Read a font metric file
|
1357
|
+
a = IO.readlines(file)
|
1358
|
+
|
1359
|
+
raise "File no found: #{file}" if a.size == 0
|
1360
|
+
|
1361
|
+
widths = {}
|
1362
|
+
fm = {}
|
1363
|
+
fix = { 'Edot' => 'Edotaccent', 'edot' => 'edotaccent',
|
1364
|
+
'Idot' => 'Idotaccent',
|
1365
|
+
'Zdot' => 'Zdotaccent', 'zdot' => 'zdotaccent',
|
1366
|
+
'Odblacute' => 'Ohungarumlaut', 'odblacute' => 'ohungarumlaut',
|
1367
|
+
'Udblacute' => 'Uhungarumlaut', 'udblacute' => 'uhungarumlaut',
|
1368
|
+
'Gcedilla' => 'Gcommaaccent', 'gcedilla' => 'gcommaaccent',
|
1369
|
+
'Kcedilla' => 'Kcommaaccent', 'kcedilla' => 'kcommaaccent',
|
1370
|
+
'Lcedilla' => 'Lcommaaccent', 'lcedilla' => 'lcommaaccent',
|
1371
|
+
'Ncedilla' => 'Ncommaaccent', 'ncedilla' => 'ncommaaccent',
|
1372
|
+
'Rcedilla' => 'Rcommaaccent', 'rcedilla' => 'rcommaaccent',
|
1373
|
+
'Scedilla' => 'Scommaaccent',' scedilla' => 'scommaaccent',
|
1374
|
+
'Tcedilla' => 'Tcommaaccent',' tcedilla' => 'tcommaaccent',
|
1375
|
+
'Dslash' => 'Dcroat', 'dslash' => 'dcroat',
|
1376
|
+
'Dmacron' => 'Dcroat', 'dmacron' => 'dcroat',
|
1377
|
+
'combininggraveaccent' => 'gravecomb',
|
1378
|
+
'combininghookabove' => 'hookabovecomb',
|
1379
|
+
'combiningtildeaccent' => 'tildecomb',
|
1380
|
+
'combiningacuteaccent' => 'acutecomb',
|
1381
|
+
'combiningdotbelow' => 'dotbelowcomb',
|
1382
|
+
'dongsign' => 'dong'
|
1383
|
+
}
|
1384
|
+
|
1385
|
+
a.each do |line|
|
1386
|
+
|
1387
|
+
e = line.rstrip.split(' ')
|
1388
|
+
next if e.size < 2
|
1389
|
+
|
1390
|
+
code = e[0]
|
1391
|
+
param = e[1]
|
1392
|
+
|
1393
|
+
if code == 'C' then
|
1394
|
+
|
1395
|
+
# Character metrics
|
1396
|
+
cc = e[1].to_i
|
1397
|
+
w = e[4]
|
1398
|
+
gn = e[7]
|
1399
|
+
|
1400
|
+
gn = 'Euro' if gn[-4, 4] == '20AC'
|
1401
|
+
|
1402
|
+
if fix[gn] then
|
1403
|
+
|
1404
|
+
# Fix incorrect glyph name
|
1405
|
+
0.upto(map.size - 1) do |i|
|
1406
|
+
if map[i] == fix[gn] then
|
1407
|
+
map[i] = gn
|
1408
|
+
end
|
1409
|
+
end
|
1410
|
+
end
|
1411
|
+
|
1412
|
+
if map.size == 0 then
|
1413
|
+
# Symbolic font: use built-in encoding
|
1414
|
+
widths[cc] = w
|
1415
|
+
else
|
1416
|
+
widths[gn] = w
|
1417
|
+
fm['CapXHeight'] = e[13].to_i if gn == 'X'
|
1418
|
+
end
|
1419
|
+
|
1420
|
+
fm['MissingWidth'] = w if gn == '.notdef'
|
1421
|
+
|
1422
|
+
elsif code == 'FontName' then
|
1423
|
+
fm['FontName'] = param
|
1424
|
+
elsif code == 'Weight' then
|
1425
|
+
fm['Weight'] = param
|
1426
|
+
elsif code == 'ItalicAngle' then
|
1427
|
+
fm['ItalicAngle'] = param.to_f
|
1428
|
+
elsif code == 'Ascender' then
|
1429
|
+
fm['Ascender'] = param.to_i
|
1430
|
+
elsif code == 'Descender' then
|
1431
|
+
fm['Descender'] = param.to_i
|
1432
|
+
elsif code == 'UnderlineThickness' then
|
1433
|
+
fm['UnderlineThickness'] = param.to_i
|
1434
|
+
elsif code == 'UnderlinePosition' then
|
1435
|
+
fm['UnderlinePosition'] = param.to_i
|
1436
|
+
elsif code == 'IsFixedPitch' then
|
1437
|
+
fm['IsFixedPitch'] = (param == 'true')
|
1438
|
+
elsif code == 'FontBBox' then
|
1439
|
+
fm['FontBBox'] = "[#{e[1]},#{e[2]},#{e[3]},#{e[4]}]"
|
1440
|
+
elsif code == 'CapHeight' then
|
1441
|
+
fm['CapHeight'] = param.to_i
|
1442
|
+
elsif code == 'StdVW' then
|
1443
|
+
fm['StdVW'] = param.to_i
|
1444
|
+
end
|
1445
|
+
end
|
1446
|
+
|
1447
|
+
raise 'FontName not found' unless fm['FontName']
|
1448
|
+
|
1449
|
+
if map.size > 0 then
|
1450
|
+
widths['.notdef'] = 600 unless widths['.notdef']
|
1451
|
+
|
1452
|
+
if (widths['Delta'] == nil) && widths['increment'] then
|
1453
|
+
widths['Delta'] = widths['increment']
|
1454
|
+
end
|
1455
|
+
|
1456
|
+
# Order widths according to map
|
1457
|
+
0.upto(255) do |i|
|
1458
|
+
if widths[map[i]] == nil
|
1459
|
+
puts "Warning: character #{map[i]} is missing"
|
1460
|
+
widths[i] = widths['.notdef']
|
1461
|
+
else
|
1462
|
+
widths[i] = widths[map[i]]
|
1463
|
+
end
|
1464
|
+
end
|
1465
|
+
end
|
1466
|
+
|
1467
|
+
fm['Widths'] = widths
|
1468
|
+
|
1469
|
+
return fm
|
1470
|
+
end
|
1471
|
+
|
1472
|
+
def MakeFontDescriptor(fm, symbolic)
|
1473
|
+
|
1474
|
+
# Ascent
|
1475
|
+
asc = fm['Ascender'] ? fm['Ascender'] : 1000
|
1476
|
+
fd = "{\n 'Ascent' => '#{asc}'"
|
1477
|
+
|
1478
|
+
# Descent
|
1479
|
+
desc = fm['Descender'] ? fm['Descender'] : -200
|
1480
|
+
fd += ", 'Descent' => '#{desc}'"
|
1481
|
+
|
1482
|
+
# CapHeight
|
1483
|
+
if fm['CapHeight'] then
|
1484
|
+
ch = fm['CapHeight']
|
1485
|
+
elsif fm['CapXHeight']
|
1486
|
+
ch = fm['CapXHeight']
|
1487
|
+
else
|
1488
|
+
ch = asc
|
1489
|
+
end
|
1490
|
+
fd += ", 'CapHeight' => '#{ch}'"
|
1491
|
+
|
1492
|
+
# Flags
|
1493
|
+
flags = 0
|
1494
|
+
|
1495
|
+
if fm['IsFixedPitch'] then
|
1496
|
+
flags += 1 << 0
|
1497
|
+
end
|
1498
|
+
|
1499
|
+
if symbolic then
|
1500
|
+
flags += 1 << 2
|
1501
|
+
else
|
1502
|
+
flags += 1 << 5
|
1503
|
+
end
|
1504
|
+
|
1505
|
+
if fm['ItalicAngle'] && (fm['ItalicAngle'] != 0) then
|
1506
|
+
flags += 1 << 6
|
1507
|
+
end
|
1508
|
+
|
1509
|
+
fd += ",\n 'Flags' => '#{flags}'"
|
1510
|
+
|
1511
|
+
# FontBBox
|
1512
|
+
if fm['FontBBox'] then
|
1513
|
+
fbb = fm['FontBBox'].gsub(/,/, ' ')
|
1514
|
+
else
|
1515
|
+
fbb = "[0 #{desc - 100} 1000 #{asc + 100}]"
|
1516
|
+
end
|
1517
|
+
|
1518
|
+
fd += ", 'FontBBox' => '#{fbb}'"
|
1519
|
+
|
1520
|
+
# ItalicAngle
|
1521
|
+
ia = fm['ItalicAngle'] ? fm['ItalicAngle'] : 0
|
1522
|
+
fd += ",\n 'ItalicAngle' => '#{ia}'"
|
1523
|
+
|
1524
|
+
# StemV
|
1525
|
+
if fm['StdVW'] then
|
1526
|
+
stemv = fm['StdVW']
|
1527
|
+
elsif fm['Weight'] && (/bold|black/i =~ fm['Weight'])
|
1528
|
+
stemv = 120
|
1529
|
+
else
|
1530
|
+
stemv = 70
|
1531
|
+
end
|
1532
|
+
|
1533
|
+
fd += ", 'StemV' => '#{stemv}'"
|
1534
|
+
|
1535
|
+
# MissingWidth
|
1536
|
+
if fm['MissingWidth'] then
|
1537
|
+
fd += ", 'MissingWidth' => '#{fm['MissingWidth']}'"
|
1538
|
+
end
|
1539
|
+
|
1540
|
+
fd += "\n }"
|
1541
|
+
return fd
|
1542
|
+
end
|
1543
|
+
|
1544
|
+
def MakeWidthArray(fm)
|
1545
|
+
|
1546
|
+
# Make character width array
|
1547
|
+
s = " [\n "
|
1548
|
+
|
1549
|
+
cw = fm['Widths']
|
1550
|
+
|
1551
|
+
0.upto(255) do |i|
|
1552
|
+
s += "%5d" % cw[i]
|
1553
|
+
s += "," if i != 255
|
1554
|
+
s += "\n " if (i % 8) == 7
|
1555
|
+
end
|
1556
|
+
|
1557
|
+
s += ']'
|
1558
|
+
|
1559
|
+
return s
|
1560
|
+
end
|
1561
|
+
|
1562
|
+
def MakeFontEncoding(map)
|
1563
|
+
|
1564
|
+
# Build differences from reference encoding
|
1565
|
+
ref = Charencodings['cp1252']
|
1566
|
+
s = ''
|
1567
|
+
last = 0
|
1568
|
+
32.upto(255) do |i|
|
1569
|
+
if map[i] != ref[i] then
|
1570
|
+
if i != last + 1 then
|
1571
|
+
s += i.to_s + ' '
|
1572
|
+
end
|
1573
|
+
last = i
|
1574
|
+
s += '/' + map[i] + ' '
|
1575
|
+
end
|
1576
|
+
end
|
1577
|
+
return s.rstrip
|
1578
|
+
end
|
1579
|
+
|
1580
|
+
def ReadShort(f)
|
1581
|
+
a = f.read(2).unpack('n')
|
1582
|
+
return a[0]
|
1583
|
+
end
|
1584
|
+
|
1585
|
+
def ReadLong(f)
|
1586
|
+
a = f.read(4).unpack('N')
|
1587
|
+
return a[0]
|
1588
|
+
end
|
1589
|
+
|
1590
|
+
def CheckTTF(file)
|
1591
|
+
|
1592
|
+
rl = false
|
1593
|
+
pp = false
|
1594
|
+
e = false
|
1595
|
+
|
1596
|
+
# Check if font license allows embedding
|
1597
|
+
File.open(file, 'rb') do |f|
|
1598
|
+
|
1599
|
+
# Extract number of tables
|
1600
|
+
f.seek(4, IO::SEEK_CUR)
|
1601
|
+
nb = ReadShort(f)
|
1602
|
+
f.seek(6, IO::SEEK_CUR)
|
1603
|
+
|
1604
|
+
# Seek OS/2 table
|
1605
|
+
found = false
|
1606
|
+
0.upto(nb - 1) do |i|
|
1607
|
+
if f.read(4) == 'OS/2' then
|
1608
|
+
found = true
|
1609
|
+
break
|
1610
|
+
end
|
1611
|
+
|
1612
|
+
f.seek(12, IO::SEEK_CUR)
|
1613
|
+
end
|
1614
|
+
|
1615
|
+
if ! found then
|
1616
|
+
return
|
1617
|
+
end
|
1618
|
+
|
1619
|
+
f.seek(4, IO::SEEK_CUR)
|
1620
|
+
offset = ReadLong(f)
|
1621
|
+
f.seek(offset, IO::SEEK_SET)
|
1622
|
+
|
1623
|
+
# Extract fsType flags
|
1624
|
+
f.seek(8, IO::SEEK_CUR)
|
1625
|
+
fsType = ReadShort(f)
|
1626
|
+
|
1627
|
+
rl = (fsType & 0x02) != 0
|
1628
|
+
pp = (fsType & 0x04) != 0
|
1629
|
+
e = (fsType & 0x08) != 0
|
1630
|
+
end
|
1631
|
+
|
1632
|
+
if rl && ( ! pp) && ( ! e) then
|
1633
|
+
puts 'Warning: font license does not allow embedding'
|
1634
|
+
end
|
1635
|
+
end
|
1636
|
+
|
1637
|
+
#
|
1638
|
+
# fontfile: path to TTF file (or empty string if not to be embedded)
|
1639
|
+
# afmfile: path to AFM file
|
1640
|
+
# enc: font encoding (or empty string for symbolic fonts)
|
1641
|
+
# patch: optional patch for encoding
|
1642
|
+
# type : font type if $fontfile is empty
|
1643
|
+
#
|
1644
|
+
def MakeFont(fontfile, afmfile, enc = 'cp1252', patch = {}, type = 'TrueType')
|
1645
|
+
# Generate a font definition file
|
1646
|
+
if (enc != nil) && (enc != '') then
|
1647
|
+
map = Charencodings[enc]
|
1648
|
+
patch.each { |cc, gn| map[cc] = gn }
|
1649
|
+
else
|
1650
|
+
map = []
|
1651
|
+
end
|
1652
|
+
|
1653
|
+
raise "Error: AFM file not found: #{afmfile}" unless File.exists?(afmfile)
|
1654
|
+
|
1655
|
+
fm = ReadAFM(afmfile, map)
|
1656
|
+
|
1657
|
+
if (enc != nil) && (enc != '') then
|
1658
|
+
diff = MakeFontEncoding(map)
|
1659
|
+
else
|
1660
|
+
diff = ''
|
1661
|
+
end
|
1662
|
+
|
1663
|
+
fd = MakeFontDescriptor(fm, (map.size == 0))
|
1664
|
+
|
1665
|
+
# Find font type
|
1666
|
+
if fontfile then
|
1667
|
+
ext = File.extname(fontfile).downcase.sub(/^\./, '')
|
1668
|
+
|
1669
|
+
if ext == 'ttf' then
|
1670
|
+
type = 'TrueType'
|
1671
|
+
elsif ext == 'pfb'
|
1672
|
+
type = 'Type1'
|
1673
|
+
else
|
1674
|
+
raise "Error: unrecognized font file extension: #{ext}"
|
1675
|
+
end
|
1676
|
+
else
|
1677
|
+
raise "Error: incorrect font type: #{type}" if (type != 'TrueType') && (type != 'Type1')
|
1678
|
+
end
|
1679
|
+
printf "type = #{type}\n"
|
1680
|
+
# Start generation
|
1681
|
+
s = "# #{fm['FontName']} font definition\n\n"
|
1682
|
+
s += "module FontDef\n"
|
1683
|
+
s += " def FontDef.type\n '#{type}'\n end\n"
|
1684
|
+
s += " def FontDef.name\n '#{fm['FontName']}'\n end\n"
|
1685
|
+
s += " def FontDef.desc\n #{fd}\n end\n"
|
1686
|
+
|
1687
|
+
if fm['UnderlinePosition'] == nil then
|
1688
|
+
fm['UnderlinePosition'] = -100
|
1689
|
+
end
|
1690
|
+
|
1691
|
+
if fm['UnderlineThickness'] == nil then
|
1692
|
+
fm['UnderlineThickness'] = 50
|
1693
|
+
end
|
1694
|
+
|
1695
|
+
s += " def FontDef.up\n #{fm['UnderlinePosition']}\n end\n"
|
1696
|
+
s += " def FontDef.ut\n #{fm['UnderlineThickness']}\n end\n"
|
1697
|
+
|
1698
|
+
w = MakeWidthArray(fm)
|
1699
|
+
s += " def FontDef.cw\n#{w}\n end\n"
|
1700
|
+
|
1701
|
+
s += " def FontDef.enc\n '#{enc}'\n end\n"
|
1702
|
+
s += " def FontDef.diff\n #{(diff == nil) || (diff == '') ? 'nil' : '\'' + diff + '\''}\n end\n"
|
1703
|
+
|
1704
|
+
basename = File.basename(afmfile, '.*')
|
1705
|
+
|
1706
|
+
if fontfile then
|
1707
|
+
# Embedded font
|
1708
|
+
if ! File.exist?(fontfile) then
|
1709
|
+
raise "Error: font file not found: #{fontfile}"
|
1710
|
+
end
|
1711
|
+
|
1712
|
+
if type == 'TrueType' then
|
1713
|
+
CheckTTF(fontfile)
|
1714
|
+
end
|
1715
|
+
|
1716
|
+
file = ''
|
1717
|
+
File.open(fontfile, 'rb') do |f|
|
1718
|
+
file = f.read()
|
1719
|
+
end
|
1720
|
+
|
1721
|
+
if type == 'Type1' then
|
1722
|
+
# Find first two sections and discard third one
|
1723
|
+
header = file[0] == 128
|
1724
|
+
file = file[6, file.length - 6] if header
|
1725
|
+
|
1726
|
+
pos = file.index('eexec')
|
1727
|
+
raise 'Error: font file does not seem to be valid Type1' if pos == nil
|
1728
|
+
|
1729
|
+
size1 = pos + 6
|
1730
|
+
|
1731
|
+
file = file[0, size1] + file[size1 + 6, file.length - (size1 + 6)] if header && file[size1] == 128
|
1732
|
+
|
1733
|
+
pos = file.index('00000000')
|
1734
|
+
raise 'Error: font file does not seem to be valid Type1' if pos == nil
|
1735
|
+
|
1736
|
+
size2 = pos - size1
|
1737
|
+
file = file[0, size1 + size2]
|
1738
|
+
end
|
1739
|
+
|
1740
|
+
if require 'zlib' then
|
1741
|
+
File.open(basename + '.z', 'wb') { |f| f.write(Zlib::Deflate.deflate(file)) }
|
1742
|
+
s += " def FontDef.file\n '#{basename}.z'\n end\n"
|
1743
|
+
puts "Font file compressed ('#{basename}.z')"
|
1744
|
+
else
|
1745
|
+
s += " def FontDef.file\n '#{File.basename(fontfile)}'\n end\n"
|
1746
|
+
puts 'Notice: font file could not be compressed (zlib not available)'
|
1747
|
+
end
|
1748
|
+
|
1749
|
+
if type == 'Type1' then
|
1750
|
+
s += " def FontDef.size1\n '#{size1}'\n end\n"
|
1751
|
+
s += " def FontDef.size2\n '#{size2}'\n end\n"
|
1752
|
+
else
|
1753
|
+
s += " def FontDef.originalsize\n '#{File.size(fontfile)}'\n end\n"
|
1754
|
+
end
|
1755
|
+
|
1756
|
+
else
|
1757
|
+
# Not embedded font
|
1758
|
+
s += " def FontDef.file\n ''\n end\n"
|
1759
|
+
end
|
1760
|
+
|
1761
|
+
s += "end\n"
|
1762
|
+
File.open(basename + '.rb', 'w') { |file| file.write(s)}
|
1763
|
+
puts "Font definition file generated (#{basename}.rb)"
|
1764
|
+
end
|
1765
|
+
|
1766
|
+
|
1767
|
+
if $0 == __FILE__ then
|
1768
|
+
if ARGV.length >= 3 then
|
1769
|
+
enc = ARGV[2]
|
1770
|
+
else
|
1771
|
+
enc = 'cp1252'
|
1772
|
+
end
|
1773
|
+
|
1774
|
+
if ARGV.length >= 4 then
|
1775
|
+
patch = ARGV[3]
|
1776
|
+
else
|
1777
|
+
patch = {}
|
1778
|
+
end
|
1779
|
+
|
1780
|
+
if ARGV.length >= 5 then
|
1781
|
+
type = ARGV[4]
|
1782
|
+
else
|
1783
|
+
type = 'TrueType'
|
1784
|
+
end
|
1785
|
+
|
1786
|
+
MakeFont(ARGV[0], ARGV[1], enc, patch, type)
|
1787
|
+
end
|