@shqld/canvas 3.2.2-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Readme.md +654 -0
- package/binding.gyp +229 -0
- package/browser.js +31 -0
- package/index.d.ts +507 -0
- package/index.js +94 -0
- package/lib/DOMMatrix.js +678 -0
- package/lib/bindings.js +113 -0
- package/lib/canvas.js +113 -0
- package/lib/context2d.js +11 -0
- package/lib/image.js +97 -0
- package/lib/jpegstream.js +41 -0
- package/lib/pattern.js +15 -0
- package/lib/pdfstream.js +35 -0
- package/lib/pngstream.js +42 -0
- package/package.json +77 -0
- package/scripts/install.js +19 -0
- package/src/Backends.h +9 -0
- package/src/Canvas.cc +1026 -0
- package/src/Canvas.h +128 -0
- package/src/CanvasError.h +37 -0
- package/src/CanvasGradient.cc +113 -0
- package/src/CanvasGradient.h +20 -0
- package/src/CanvasPattern.cc +129 -0
- package/src/CanvasPattern.h +33 -0
- package/src/CanvasRenderingContext2d.cc +3527 -0
- package/src/CanvasRenderingContext2d.h +238 -0
- package/src/CharData.h +233 -0
- package/src/FontParser.cc +605 -0
- package/src/FontParser.h +115 -0
- package/src/Image.cc +1719 -0
- package/src/Image.h +146 -0
- package/src/ImageData.cc +138 -0
- package/src/ImageData.h +26 -0
- package/src/InstanceData.h +12 -0
- package/src/JPEGStream.h +157 -0
- package/src/PNG.h +292 -0
- package/src/Point.h +11 -0
- package/src/Util.h +9 -0
- package/src/bmp/BMPParser.cc +459 -0
- package/src/bmp/BMPParser.h +60 -0
- package/src/bmp/LICENSE.md +24 -0
- package/src/closure.cc +52 -0
- package/src/closure.h +98 -0
- package/src/color.cc +796 -0
- package/src/color.h +30 -0
- package/src/dll_visibility.h +20 -0
- package/src/init.cc +114 -0
- package/src/register_font.cc +352 -0
- package/src/register_font.h +7 -0
- package/util/has_lib.js +119 -0
- package/util/win_jpeg_lookup.js +21 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
// Copyright (c) 2010 LearnBoost <tj@learnboost.com>
|
|
2
|
+
|
|
3
|
+
#pragma once
|
|
4
|
+
|
|
5
|
+
#include "cairo.h"
|
|
6
|
+
#include "Canvas.h"
|
|
7
|
+
#include "color.h"
|
|
8
|
+
#include "napi.h"
|
|
9
|
+
#include <pango/pangocairo.h>
|
|
10
|
+
#include <stack>
|
|
11
|
+
|
|
12
|
+
/*
|
|
13
|
+
* State struct.
|
|
14
|
+
*
|
|
15
|
+
* Used in conjunction with Save() / Restore() since
|
|
16
|
+
* cairo's gstate maintains only a single source pattern at a time.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
struct canvas_state_t {
|
|
20
|
+
rgba_t fill = { 0, 0, 0, 1 };
|
|
21
|
+
rgba_t stroke = { 0, 0, 0, 1 };
|
|
22
|
+
rgba_t shadow = { 0, 0, 0, 0 };
|
|
23
|
+
double shadowOffsetX = 0.;
|
|
24
|
+
double shadowOffsetY = 0.;
|
|
25
|
+
cairo_pattern_t* fillPattern = nullptr;
|
|
26
|
+
cairo_pattern_t* strokePattern = nullptr;
|
|
27
|
+
cairo_pattern_t* fillGradient = nullptr;
|
|
28
|
+
cairo_pattern_t* strokeGradient = nullptr;
|
|
29
|
+
PangoFontDescription* fontDescription = nullptr;
|
|
30
|
+
std::string font = "10px sans-serif";
|
|
31
|
+
cairo_filter_t patternQuality = CAIRO_FILTER_GOOD;
|
|
32
|
+
float globalAlpha = 1.f;
|
|
33
|
+
int shadowBlur = 0;
|
|
34
|
+
text_align_t textAlignment = TEXT_ALIGNMENT_START;
|
|
35
|
+
text_baseline_t textBaseline = TEXT_BASELINE_ALPHABETIC;
|
|
36
|
+
canvas_draw_mode_t textDrawingMode = TEXT_DRAW_PATHS;
|
|
37
|
+
bool imageSmoothingEnabled = true;
|
|
38
|
+
std::string direction = "ltr";
|
|
39
|
+
std::string lang = "";
|
|
40
|
+
|
|
41
|
+
canvas_state_t() {
|
|
42
|
+
fontDescription = pango_font_description_from_string("sans");
|
|
43
|
+
pango_font_description_set_absolute_size(fontDescription, 10 * PANGO_SCALE);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
canvas_state_t(const canvas_state_t& other) {
|
|
47
|
+
fill = other.fill;
|
|
48
|
+
stroke = other.stroke;
|
|
49
|
+
patternQuality = other.patternQuality;
|
|
50
|
+
fillPattern = other.fillPattern;
|
|
51
|
+
strokePattern = other.strokePattern;
|
|
52
|
+
fillGradient = other.fillGradient;
|
|
53
|
+
strokeGradient = other.strokeGradient;
|
|
54
|
+
globalAlpha = other.globalAlpha;
|
|
55
|
+
textAlignment = other.textAlignment;
|
|
56
|
+
textBaseline = other.textBaseline;
|
|
57
|
+
shadow = other.shadow;
|
|
58
|
+
shadowBlur = other.shadowBlur;
|
|
59
|
+
shadowOffsetX = other.shadowOffsetX;
|
|
60
|
+
shadowOffsetY = other.shadowOffsetY;
|
|
61
|
+
textDrawingMode = other.textDrawingMode;
|
|
62
|
+
fontDescription = pango_font_description_copy(other.fontDescription);
|
|
63
|
+
font = other.font;
|
|
64
|
+
imageSmoothingEnabled = other.imageSmoothingEnabled;
|
|
65
|
+
direction = other.direction;
|
|
66
|
+
lang = other.lang;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
~canvas_state_t() {
|
|
70
|
+
pango_font_description_free(fontDescription);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
/*
|
|
75
|
+
* Equivalent to a PangoRectangle but holds floats instead of ints
|
|
76
|
+
* (software pixels are stored here instead of pango units)
|
|
77
|
+
*
|
|
78
|
+
* Should be compatible with PANGO_ASCENT, PANGO_LBEARING, etc.
|
|
79
|
+
*/
|
|
80
|
+
|
|
81
|
+
typedef struct {
|
|
82
|
+
float x;
|
|
83
|
+
float y;
|
|
84
|
+
float width;
|
|
85
|
+
float height;
|
|
86
|
+
} float_rectangle;
|
|
87
|
+
|
|
88
|
+
class Context2d : public Napi::ObjectWrap<Context2d> {
|
|
89
|
+
public:
|
|
90
|
+
std::stack<canvas_state_t> states;
|
|
91
|
+
canvas_state_t *state;
|
|
92
|
+
Context2d(const Napi::CallbackInfo& info);
|
|
93
|
+
static void Initialize(Napi::Env& env, Napi::Object& target);
|
|
94
|
+
void DrawImage(const Napi::CallbackInfo& info);
|
|
95
|
+
void PutImageData(const Napi::CallbackInfo& info);
|
|
96
|
+
void Save(const Napi::CallbackInfo& info);
|
|
97
|
+
void Restore(const Napi::CallbackInfo& info);
|
|
98
|
+
void Rotate(const Napi::CallbackInfo& info);
|
|
99
|
+
void Translate(const Napi::CallbackInfo& info);
|
|
100
|
+
void Scale(const Napi::CallbackInfo& info);
|
|
101
|
+
void Transform(const Napi::CallbackInfo& info);
|
|
102
|
+
Napi::Value GetTransform(const Napi::CallbackInfo& info);
|
|
103
|
+
void ResetTransform(const Napi::CallbackInfo& info);
|
|
104
|
+
void SetTransform(const Napi::CallbackInfo& info);
|
|
105
|
+
Napi::Value IsPointInPath(const Napi::CallbackInfo& info);
|
|
106
|
+
void BeginPath(const Napi::CallbackInfo& info);
|
|
107
|
+
void ClosePath(const Napi::CallbackInfo& info);
|
|
108
|
+
void AddPage(const Napi::CallbackInfo& info);
|
|
109
|
+
void Clip(const Napi::CallbackInfo& info);
|
|
110
|
+
void Fill(const Napi::CallbackInfo& info);
|
|
111
|
+
void Stroke(const Napi::CallbackInfo& info);
|
|
112
|
+
void FillText(const Napi::CallbackInfo& info);
|
|
113
|
+
void StrokeText(const Napi::CallbackInfo& info);
|
|
114
|
+
static Napi::Value SetFont(const Napi::CallbackInfo& info);
|
|
115
|
+
static Napi::Value SetFillColor(const Napi::CallbackInfo& info);
|
|
116
|
+
static Napi::Value SetStrokeColor(const Napi::CallbackInfo& info);
|
|
117
|
+
static Napi::Value SetStrokePattern(const Napi::CallbackInfo& info);
|
|
118
|
+
static Napi::Value SetTextAlignment(const Napi::CallbackInfo& info);
|
|
119
|
+
void SetLineDash(const Napi::CallbackInfo& info);
|
|
120
|
+
Napi::Value GetLineDash(const Napi::CallbackInfo& info);
|
|
121
|
+
Napi::Value MeasureText(const Napi::CallbackInfo& info);
|
|
122
|
+
void BezierCurveTo(const Napi::CallbackInfo& info);
|
|
123
|
+
void QuadraticCurveTo(const Napi::CallbackInfo& info);
|
|
124
|
+
void LineTo(const Napi::CallbackInfo& info);
|
|
125
|
+
void MoveTo(const Napi::CallbackInfo& info);
|
|
126
|
+
void FillRect(const Napi::CallbackInfo& info);
|
|
127
|
+
void StrokeRect(const Napi::CallbackInfo& info);
|
|
128
|
+
void ClearRect(const Napi::CallbackInfo& info);
|
|
129
|
+
void Rect(const Napi::CallbackInfo& info);
|
|
130
|
+
void RoundRect(const Napi::CallbackInfo& info);
|
|
131
|
+
void Arc(const Napi::CallbackInfo& info);
|
|
132
|
+
void ArcTo(const Napi::CallbackInfo& info);
|
|
133
|
+
void Ellipse(const Napi::CallbackInfo& info);
|
|
134
|
+
Napi::Value GetImageData(const Napi::CallbackInfo& info);
|
|
135
|
+
Napi::Value CreateImageData(const Napi::CallbackInfo& info);
|
|
136
|
+
static Napi::Value GetStrokeColor(const Napi::CallbackInfo& info);
|
|
137
|
+
Napi::Value CreatePattern(const Napi::CallbackInfo& info);
|
|
138
|
+
Napi::Value CreateLinearGradient(const Napi::CallbackInfo& info);
|
|
139
|
+
Napi::Value CreateRadialGradient(const Napi::CallbackInfo& info);
|
|
140
|
+
Napi::Value GetFormat(const Napi::CallbackInfo& info);
|
|
141
|
+
Napi::Value GetPatternQuality(const Napi::CallbackInfo& info);
|
|
142
|
+
Napi::Value GetImageSmoothingEnabled(const Napi::CallbackInfo& info);
|
|
143
|
+
Napi::Value GetGlobalCompositeOperation(const Napi::CallbackInfo& info);
|
|
144
|
+
Napi::Value GetGlobalAlpha(const Napi::CallbackInfo& info);
|
|
145
|
+
Napi::Value GetShadowColor(const Napi::CallbackInfo& info);
|
|
146
|
+
Napi::Value GetMiterLimit(const Napi::CallbackInfo& info);
|
|
147
|
+
Napi::Value GetLineCap(const Napi::CallbackInfo& info);
|
|
148
|
+
Napi::Value GetLineJoin(const Napi::CallbackInfo& info);
|
|
149
|
+
Napi::Value GetLineWidth(const Napi::CallbackInfo& info);
|
|
150
|
+
Napi::Value GetLineDashOffset(const Napi::CallbackInfo& info);
|
|
151
|
+
Napi::Value GetShadowOffsetX(const Napi::CallbackInfo& info);
|
|
152
|
+
Napi::Value GetShadowOffsetY(const Napi::CallbackInfo& info);
|
|
153
|
+
Napi::Value GetShadowBlur(const Napi::CallbackInfo& info);
|
|
154
|
+
Napi::Value GetAntiAlias(const Napi::CallbackInfo& info);
|
|
155
|
+
Napi::Value GetTextDrawingMode(const Napi::CallbackInfo& info);
|
|
156
|
+
Napi::Value GetQuality(const Napi::CallbackInfo& info);
|
|
157
|
+
Napi::Value GetCurrentTransform(const Napi::CallbackInfo& info);
|
|
158
|
+
Napi::Value GetFillStyle(const Napi::CallbackInfo& info);
|
|
159
|
+
Napi::Value GetStrokeStyle(const Napi::CallbackInfo& info);
|
|
160
|
+
Napi::Value GetFont(const Napi::CallbackInfo& info);
|
|
161
|
+
Napi::Value GetTextBaseline(const Napi::CallbackInfo& info);
|
|
162
|
+
Napi::Value GetTextAlign(const Napi::CallbackInfo& info);
|
|
163
|
+
Napi::Value GetLanguage(const Napi::CallbackInfo& info);
|
|
164
|
+
void SetPatternQuality(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
165
|
+
void SetImageSmoothingEnabled(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
166
|
+
void SetGlobalCompositeOperation(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
167
|
+
void SetGlobalAlpha(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
168
|
+
void SetShadowColor(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
169
|
+
void SetMiterLimit(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
170
|
+
void SetLineCap(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
171
|
+
void SetLineJoin(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
172
|
+
void SetLineWidth(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
173
|
+
void SetLineDashOffset(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
174
|
+
void SetShadowOffsetX(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
175
|
+
void SetShadowOffsetY(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
176
|
+
void SetShadowBlur(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
177
|
+
void SetAntiAlias(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
178
|
+
void SetTextDrawingMode(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
179
|
+
void SetQuality(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
180
|
+
void SetCurrentTransform(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
181
|
+
void SetFillStyle(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
182
|
+
void SetStrokeStyle(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
183
|
+
void SetFont(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
184
|
+
void SetTextBaseline(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
185
|
+
void SetTextAlign(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
186
|
+
void SetLanguage(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
187
|
+
#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 16, 0)
|
|
188
|
+
void BeginTag(const Napi::CallbackInfo& info);
|
|
189
|
+
void EndTag(const Napi::CallbackInfo& info);
|
|
190
|
+
#endif
|
|
191
|
+
Napi::Value GetDirection(const Napi::CallbackInfo& info);
|
|
192
|
+
void SetDirection(const Napi::CallbackInfo& info, const Napi::Value& value);
|
|
193
|
+
inline void setContext(cairo_t *ctx) { _context = ctx; }
|
|
194
|
+
inline cairo_t *context(){ return _context; }
|
|
195
|
+
inline Canvas *canvas(){ return _canvas; }
|
|
196
|
+
inline bool hasShadow();
|
|
197
|
+
void inline setSourceRGBA(rgba_t color);
|
|
198
|
+
void inline setSourceRGBA(cairo_t *ctx, rgba_t color);
|
|
199
|
+
void setTextPath(double x, double y);
|
|
200
|
+
void blur(cairo_surface_t *surface, int radius);
|
|
201
|
+
void shadow(void (fn)(cairo_t *cr));
|
|
202
|
+
void shadowStart();
|
|
203
|
+
void shadowApply();
|
|
204
|
+
void savePath();
|
|
205
|
+
void restorePath();
|
|
206
|
+
void saveState();
|
|
207
|
+
void restoreState();
|
|
208
|
+
void inline setFillRule(Napi::Value value);
|
|
209
|
+
void fill(bool preserve = false);
|
|
210
|
+
void stroke(bool preserve = false);
|
|
211
|
+
void save();
|
|
212
|
+
void restore();
|
|
213
|
+
void setFontFromState();
|
|
214
|
+
void resetState();
|
|
215
|
+
inline PangoLayout *layout(){ return _layout; }
|
|
216
|
+
~Context2d();
|
|
217
|
+
Napi::Env env;
|
|
218
|
+
|
|
219
|
+
private:
|
|
220
|
+
void _resetPersistentHandles();
|
|
221
|
+
Napi::Value _getFillColor();
|
|
222
|
+
Napi::Value _getStrokeColor();
|
|
223
|
+
Napi::Value get_current_transform();
|
|
224
|
+
void _setFillColor(Napi::Value arg);
|
|
225
|
+
void _setFillPattern(Napi::Value arg);
|
|
226
|
+
void _setStrokeColor(Napi::Value arg);
|
|
227
|
+
void _setStrokePattern(Napi::Value arg);
|
|
228
|
+
void checkFonts();
|
|
229
|
+
void paintText(const Napi::CallbackInfo&, bool);
|
|
230
|
+
text_align_t resolveTextAlignment();
|
|
231
|
+
Napi::Reference<Napi::Value> _fillStyle;
|
|
232
|
+
Napi::Reference<Napi::Value> _strokeStyle;
|
|
233
|
+
Canvas *_canvas;
|
|
234
|
+
cairo_t *_context = nullptr;
|
|
235
|
+
cairo_path_t *_path;
|
|
236
|
+
PangoLayout *_layout = nullptr;
|
|
237
|
+
int fontSerial = 1;
|
|
238
|
+
};
|
package/src/CharData.h
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
// This is used for classifying characters according to the definition of tokens
|
|
2
|
+
// in the CSS standards, but could be extended for any other future uses
|
|
3
|
+
|
|
4
|
+
#pragma once
|
|
5
|
+
|
|
6
|
+
#include <cstdint>
|
|
7
|
+
|
|
8
|
+
namespace CharData {
|
|
9
|
+
static constexpr uint8_t Whitespace = 0x1;
|
|
10
|
+
static constexpr uint8_t Newline = 0x2;
|
|
11
|
+
static constexpr uint8_t Hex = 0x4;
|
|
12
|
+
static constexpr uint8_t Nmstart = 0x8;
|
|
13
|
+
static constexpr uint8_t Nmchar = 0x10;
|
|
14
|
+
static constexpr uint8_t Sign = 0x20;
|
|
15
|
+
static constexpr uint8_t Digit = 0x40;
|
|
16
|
+
static constexpr uint8_t NumStart = 0x80;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
using namespace CharData;
|
|
20
|
+
|
|
21
|
+
constexpr const uint8_t charData[256] = {
|
|
22
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, // 0-8
|
|
23
|
+
Whitespace, // 9 (HT)
|
|
24
|
+
Whitespace | Newline, // 10 (LF)
|
|
25
|
+
0, // 11 (VT)
|
|
26
|
+
Whitespace | Newline, // 12 (FF)
|
|
27
|
+
Whitespace | Newline, // 13 (CR)
|
|
28
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 14-31
|
|
29
|
+
Whitespace, // 32 (Space)
|
|
30
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 33-42
|
|
31
|
+
Sign | NumStart, // 43 (+)
|
|
32
|
+
0, // 44
|
|
33
|
+
Nmchar | Sign | NumStart, // 45 (-)
|
|
34
|
+
0, 0, // 46-47
|
|
35
|
+
Nmchar | Digit | NumStart | Hex, // 48 (0)
|
|
36
|
+
Nmchar | Digit | NumStart | Hex, // 49 (1)
|
|
37
|
+
Nmchar | Digit | NumStart | Hex, // 50 (2)
|
|
38
|
+
Nmchar | Digit | NumStart | Hex, // 51 (3)
|
|
39
|
+
Nmchar | Digit | NumStart | Hex, // 52 (4)
|
|
40
|
+
Nmchar | Digit | NumStart | Hex, // 53 (5)
|
|
41
|
+
Nmchar | Digit | NumStart | Hex, // 54 (6)
|
|
42
|
+
Nmchar | Digit | NumStart | Hex, // 55 (7)
|
|
43
|
+
Nmchar | Digit | NumStart | Hex, // 56 (8)
|
|
44
|
+
Nmchar | Digit | NumStart | Hex, // 57 (9)
|
|
45
|
+
0, 0, 0, 0, 0, 0, 0, // 58-64
|
|
46
|
+
Nmstart | Nmchar | Hex, // 65 (A)
|
|
47
|
+
Nmstart | Nmchar | Hex, // 66 (B)
|
|
48
|
+
Nmstart | Nmchar | Hex, // 67 (C)
|
|
49
|
+
Nmstart | Nmchar | Hex, // 68 (D)
|
|
50
|
+
Nmstart | Nmchar | Hex, // 69 (E)
|
|
51
|
+
Nmstart | Nmchar | Hex, // 70 (F)
|
|
52
|
+
Nmstart | Nmchar, // 71 (G)
|
|
53
|
+
Nmstart | Nmchar, // 72 (H)
|
|
54
|
+
Nmstart | Nmchar, // 73 (I)
|
|
55
|
+
Nmstart | Nmchar, // 74 (J)
|
|
56
|
+
Nmstart | Nmchar, // 75 (K)
|
|
57
|
+
Nmstart | Nmchar, // 76 (L)
|
|
58
|
+
Nmstart | Nmchar, // 77 (M)
|
|
59
|
+
Nmstart | Nmchar, // 78 (N)
|
|
60
|
+
Nmstart | Nmchar, // 79 (O)
|
|
61
|
+
Nmstart | Nmchar, // 80 (P)
|
|
62
|
+
Nmstart | Nmchar, // 81 (Q)
|
|
63
|
+
Nmstart | Nmchar, // 82 (R)
|
|
64
|
+
Nmstart | Nmchar, // 83 (S)
|
|
65
|
+
Nmstart | Nmchar, // 84 (T)
|
|
66
|
+
Nmstart | Nmchar, // 85 (U)
|
|
67
|
+
Nmstart | Nmchar, // 86 (V)
|
|
68
|
+
Nmstart | Nmchar, // 87 (W)
|
|
69
|
+
Nmstart | Nmchar, // 88 (X)
|
|
70
|
+
Nmstart | Nmchar, // 89 (Y)
|
|
71
|
+
Nmstart | Nmchar, // 90 (Z)
|
|
72
|
+
0, // 91
|
|
73
|
+
Nmstart, // 92 (\)
|
|
74
|
+
0, 0, // 93-94
|
|
75
|
+
Nmstart | Nmchar, // 95 (_)
|
|
76
|
+
0, // 96
|
|
77
|
+
Nmstart | Nmchar | Hex, // 97 (a)
|
|
78
|
+
Nmstart | Nmchar | Hex, // 98 (b)
|
|
79
|
+
Nmstart | Nmchar | Hex, // 99 (c)
|
|
80
|
+
Nmstart | Nmchar | Hex, // 100 (d)
|
|
81
|
+
Nmstart | Nmchar | Hex, // 101 (e)
|
|
82
|
+
Nmstart | Nmchar | Hex, // 102 (f)
|
|
83
|
+
Nmstart | Nmchar, // 103 (g)
|
|
84
|
+
Nmstart | Nmchar, // 104 (h)
|
|
85
|
+
Nmstart | Nmchar, // 105 (i)
|
|
86
|
+
Nmstart | Nmchar, // 106 (j)
|
|
87
|
+
Nmstart | Nmchar, // 107 (k)
|
|
88
|
+
Nmstart | Nmchar, // 108 (l)
|
|
89
|
+
Nmstart | Nmchar, // 109 (m)
|
|
90
|
+
Nmstart | Nmchar, // 110 (n)
|
|
91
|
+
Nmstart | Nmchar, // 111 (o)
|
|
92
|
+
Nmstart | Nmchar, // 112 (p)
|
|
93
|
+
Nmstart | Nmchar, // 113 (q)
|
|
94
|
+
Nmstart | Nmchar, // 114 (r)
|
|
95
|
+
Nmstart | Nmchar, // 115 (s)
|
|
96
|
+
Nmstart | Nmchar, // 116 (t)
|
|
97
|
+
Nmstart | Nmchar, // 117 (u)
|
|
98
|
+
Nmstart | Nmchar, // 118 (v)
|
|
99
|
+
Nmstart | Nmchar, // 119 (w)
|
|
100
|
+
Nmstart | Nmchar, // 120 (x)
|
|
101
|
+
Nmstart | Nmchar, // 121 (y)
|
|
102
|
+
Nmstart | Nmchar, // 122 (z)
|
|
103
|
+
0, 0, 0, 0, 0, // 123-127
|
|
104
|
+
// Non-ASCII
|
|
105
|
+
Nmstart | Nmchar, // 128
|
|
106
|
+
Nmstart | Nmchar, // 129
|
|
107
|
+
Nmstart | Nmchar, // 130
|
|
108
|
+
Nmstart | Nmchar, // 131
|
|
109
|
+
Nmstart | Nmchar, // 132
|
|
110
|
+
Nmstart | Nmchar, // 133
|
|
111
|
+
Nmstart | Nmchar, // 134
|
|
112
|
+
Nmstart | Nmchar, // 135
|
|
113
|
+
Nmstart | Nmchar, // 136
|
|
114
|
+
Nmstart | Nmchar, // 137
|
|
115
|
+
Nmstart | Nmchar, // 138
|
|
116
|
+
Nmstart | Nmchar, // 139
|
|
117
|
+
Nmstart | Nmchar, // 140
|
|
118
|
+
Nmstart | Nmchar, // 141
|
|
119
|
+
Nmstart | Nmchar, // 142
|
|
120
|
+
Nmstart | Nmchar, // 143
|
|
121
|
+
Nmstart | Nmchar, // 144
|
|
122
|
+
Nmstart | Nmchar, // 145
|
|
123
|
+
Nmstart | Nmchar, // 146
|
|
124
|
+
Nmstart | Nmchar, // 147
|
|
125
|
+
Nmstart | Nmchar, // 148
|
|
126
|
+
Nmstart | Nmchar, // 149
|
|
127
|
+
Nmstart | Nmchar, // 150
|
|
128
|
+
Nmstart | Nmchar, // 151
|
|
129
|
+
Nmstart | Nmchar, // 152
|
|
130
|
+
Nmstart | Nmchar, // 153
|
|
131
|
+
Nmstart | Nmchar, // 154
|
|
132
|
+
Nmstart | Nmchar, // 155
|
|
133
|
+
Nmstart | Nmchar, // 156
|
|
134
|
+
Nmstart | Nmchar, // 157
|
|
135
|
+
Nmstart | Nmchar, // 158
|
|
136
|
+
Nmstart | Nmchar, // 159
|
|
137
|
+
Nmstart | Nmchar, // 160
|
|
138
|
+
Nmstart | Nmchar, // 161
|
|
139
|
+
Nmstart | Nmchar, // 162
|
|
140
|
+
Nmstart | Nmchar, // 163
|
|
141
|
+
Nmstart | Nmchar, // 164
|
|
142
|
+
Nmstart | Nmchar, // 165
|
|
143
|
+
Nmstart | Nmchar, // 166
|
|
144
|
+
Nmstart | Nmchar, // 167
|
|
145
|
+
Nmstart | Nmchar, // 168
|
|
146
|
+
Nmstart | Nmchar, // 169
|
|
147
|
+
Nmstart | Nmchar, // 170
|
|
148
|
+
Nmstart | Nmchar, // 171
|
|
149
|
+
Nmstart | Nmchar, // 172
|
|
150
|
+
Nmstart | Nmchar, // 173
|
|
151
|
+
Nmstart | Nmchar, // 174
|
|
152
|
+
Nmstart | Nmchar, // 175
|
|
153
|
+
Nmstart | Nmchar, // 176
|
|
154
|
+
Nmstart | Nmchar, // 177
|
|
155
|
+
Nmstart | Nmchar, // 178
|
|
156
|
+
Nmstart | Nmchar, // 179
|
|
157
|
+
Nmstart | Nmchar, // 180
|
|
158
|
+
Nmstart | Nmchar, // 181
|
|
159
|
+
Nmstart | Nmchar, // 182
|
|
160
|
+
Nmstart | Nmchar, // 183
|
|
161
|
+
Nmstart | Nmchar, // 184
|
|
162
|
+
Nmstart | Nmchar, // 185
|
|
163
|
+
Nmstart | Nmchar, // 186
|
|
164
|
+
Nmstart | Nmchar, // 187
|
|
165
|
+
Nmstart | Nmchar, // 188
|
|
166
|
+
Nmstart | Nmchar, // 189
|
|
167
|
+
Nmstart | Nmchar, // 190
|
|
168
|
+
Nmstart | Nmchar, // 191
|
|
169
|
+
Nmstart | Nmchar, // 192
|
|
170
|
+
Nmstart | Nmchar, // 193
|
|
171
|
+
Nmstart | Nmchar, // 194
|
|
172
|
+
Nmstart | Nmchar, // 195
|
|
173
|
+
Nmstart | Nmchar, // 196
|
|
174
|
+
Nmstart | Nmchar, // 197
|
|
175
|
+
Nmstart | Nmchar, // 198
|
|
176
|
+
Nmstart | Nmchar, // 199
|
|
177
|
+
Nmstart | Nmchar, // 200
|
|
178
|
+
Nmstart | Nmchar, // 201
|
|
179
|
+
Nmstart | Nmchar, // 202
|
|
180
|
+
Nmstart | Nmchar, // 203
|
|
181
|
+
Nmstart | Nmchar, // 204
|
|
182
|
+
Nmstart | Nmchar, // 205
|
|
183
|
+
Nmstart | Nmchar, // 206
|
|
184
|
+
Nmstart | Nmchar, // 207
|
|
185
|
+
Nmstart | Nmchar, // 208
|
|
186
|
+
Nmstart | Nmchar, // 209
|
|
187
|
+
Nmstart | Nmchar, // 210
|
|
188
|
+
Nmstart | Nmchar, // 211
|
|
189
|
+
Nmstart | Nmchar, // 212
|
|
190
|
+
Nmstart | Nmchar, // 213
|
|
191
|
+
Nmstart | Nmchar, // 214
|
|
192
|
+
Nmstart | Nmchar, // 215
|
|
193
|
+
Nmstart | Nmchar, // 216
|
|
194
|
+
Nmstart | Nmchar, // 217
|
|
195
|
+
Nmstart | Nmchar, // 218
|
|
196
|
+
Nmstart | Nmchar, // 219
|
|
197
|
+
Nmstart | Nmchar, // 220
|
|
198
|
+
Nmstart | Nmchar, // 221
|
|
199
|
+
Nmstart | Nmchar, // 222
|
|
200
|
+
Nmstart | Nmchar, // 223
|
|
201
|
+
Nmstart | Nmchar, // 224
|
|
202
|
+
Nmstart | Nmchar, // 225
|
|
203
|
+
Nmstart | Nmchar, // 226
|
|
204
|
+
Nmstart | Nmchar, // 227
|
|
205
|
+
Nmstart | Nmchar, // 228
|
|
206
|
+
Nmstart | Nmchar, // 229
|
|
207
|
+
Nmstart | Nmchar, // 230
|
|
208
|
+
Nmstart | Nmchar, // 231
|
|
209
|
+
Nmstart | Nmchar, // 232
|
|
210
|
+
Nmstart | Nmchar, // 233
|
|
211
|
+
Nmstart | Nmchar, // 234
|
|
212
|
+
Nmstart | Nmchar, // 235
|
|
213
|
+
Nmstart | Nmchar, // 236
|
|
214
|
+
Nmstart | Nmchar, // 237
|
|
215
|
+
Nmstart | Nmchar, // 238
|
|
216
|
+
Nmstart | Nmchar, // 239
|
|
217
|
+
Nmstart | Nmchar, // 240
|
|
218
|
+
Nmstart | Nmchar, // 241
|
|
219
|
+
Nmstart | Nmchar, // 242
|
|
220
|
+
Nmstart | Nmchar, // 243
|
|
221
|
+
Nmstart | Nmchar, // 244
|
|
222
|
+
Nmstart | Nmchar, // 245
|
|
223
|
+
Nmstart | Nmchar, // 246
|
|
224
|
+
Nmstart | Nmchar, // 247
|
|
225
|
+
Nmstart | Nmchar, // 248
|
|
226
|
+
Nmstart | Nmchar, // 249
|
|
227
|
+
Nmstart | Nmchar, // 250
|
|
228
|
+
Nmstart | Nmchar, // 251
|
|
229
|
+
Nmstart | Nmchar, // 252
|
|
230
|
+
Nmstart | Nmchar, // 253
|
|
231
|
+
Nmstart | Nmchar, // 254
|
|
232
|
+
Nmstart | Nmchar // 255
|
|
233
|
+
};
|