intellifont-engine 1.2.0 → 2.0.0
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 +355 -255
- package/browser/canvas-dna.js +626 -0
- package/browser/demo.html +759 -0
- package/browser/image-pipeline.js +1182 -0
- package/browser/intellifont-inspector.js +299 -0
- package/index.d.ts +103 -0
- package/index.js +760 -194
- package/intellifont-engine.node +0 -0
- package/package.json +63 -58
package/README.md
CHANGED
|
@@ -1,255 +1,355 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
##
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
//
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
**
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
###
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
1
|
+
# Intellifont — AI-Powered Font Recognition Engine
|
|
2
|
+
|
|
3
|
+
**Identify any font in seconds.** Intellifont uses AI-driven visual matching to recognize fonts from images, documents, websites, and web pages. Completely offline, private, and runs in your browser or Node.js. No internet required, no data sent to servers.
|
|
4
|
+
|
|
5
|
+
Works on screenshots, PDFs, Word documents, PowerPoint presentations, and images. Returns the top matching fonts with confidence scores.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Where to Get Intellifont
|
|
10
|
+
|
|
11
|
+
**Choose your platform:**
|
|
12
|
+
|
|
13
|
+
| Platform | Installation | Use Case |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| **Chrome Extension** | [Download v2.0.0](https://github.com/magic-emperor/Intellifont/releases/download/v2.0.0/intellifont-chrome-2.0.0.zip) \| [Load unpacked](#browser-extension-setup) | Right-click on any image in Chrome |
|
|
16
|
+
| **Firefox Extension** | [Download v2.0.0](https://github.com/magic-emperor/Intellifont/releases/download/v2.0.0/intellifont-firefox-2.0.0.zip) \| [Load unpacked](#browser-extension-setup) | Right-click on any image in Firefox |
|
|
17
|
+
| **NPM Package** | `npm install intellifont-engine` | Identify fonts in Node.js apps |
|
|
18
|
+
| **WASM** | `npm install intellifont-wasm` | Identify fonts in browsers / serverless |
|
|
19
|
+
| **Server API** | `git clone && npm start` | REST API on localhost:3001 |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## What It Can Do
|
|
24
|
+
|
|
25
|
+
| Input | Method | Accuracy |
|
|
26
|
+
|---|---|---|
|
|
27
|
+
| **Font file** (TTF/OTF/WOFF) | Direct file analysis | ~95% |
|
|
28
|
+
| **Website font** | URL inspection | ~95% |
|
|
29
|
+
| **PDF / Document** | Embedded font extraction | ~95% |
|
|
30
|
+
| **Text in image** | Visual analysis | 92% top-1 \* |
|
|
31
|
+
|
|
32
|
+
\* *Accuracy varies by image quality. We actively improve this with every release.*
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Quick Start
|
|
37
|
+
|
|
38
|
+
### For Users — Browser Extension
|
|
39
|
+
**Chrome & Firefox** — load unpacked (coming to stores):
|
|
40
|
+
|
|
41
|
+
1. Clone: `git clone https://github.com/magic-emperor/Intellifont.git`
|
|
42
|
+
2. **Chrome**: `chrome://extensions` Developer Mode Load unpacked select `extension/`
|
|
43
|
+
3. **Firefox**: `about:debugging` Load Temporary Add-on select `extension-firefox/manifest.json`
|
|
44
|
+
4. Right-click any image **"Identify font in image"**
|
|
45
|
+
|
|
46
|
+
### For Developers — NPM Package
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm install intellifont-engine
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```javascript
|
|
53
|
+
const intellifont = require('intellifont-engine');
|
|
54
|
+
|
|
55
|
+
// Identify font from a file
|
|
56
|
+
const matches = intellifont.identifyVisualFont('./sample.ttf', 'Hello');
|
|
57
|
+
console.log(matches);
|
|
58
|
+
// Output:
|
|
59
|
+
// [
|
|
60
|
+
// { family: 'Roboto', confidence: 0.98 },
|
|
61
|
+
// { family: 'Open Sans', confidence: 0.94 },
|
|
62
|
+
// ...
|
|
63
|
+
// ]
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### WASM (Browser / Serverless)
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npm install intellifont-wasm
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```javascript
|
|
73
|
+
import init from 'intellifont-wasm';
|
|
74
|
+
|
|
75
|
+
const engine = await init();
|
|
76
|
+
const results = engine.identifyFont(glyphMetrics, 8);
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Browser Extension Setup
|
|
82
|
+
|
|
83
|
+
### Installing the Chrome Extension
|
|
84
|
+
|
|
85
|
+
1. **Download** the extension: [intellifont-chrome-2.0.0.zip](https://github.com/magic-emperor/Intellifont/releases/download/v2.0.0/intellifont-chrome-2.0.0.zip)
|
|
86
|
+
2. **Extract** the ZIP file to a folder (e.g., `Downloads/intellifont-chrome`)
|
|
87
|
+
3. Open **Chrome** and go to `chrome://extensions`
|
|
88
|
+
4. Enable **Developer Mode** (toggle in top-right corner)
|
|
89
|
+
5. Click **Load unpacked**
|
|
90
|
+
6. Select the extracted `intellifont-chrome` folder
|
|
91
|
+
7. Extension appears in your toolbar
|
|
92
|
+
8. **Use it**: Right-click any image "Identify font in image"
|
|
93
|
+
|
|
94
|
+
### Installing the Firefox Extension
|
|
95
|
+
|
|
96
|
+
1. **Download** the extension: [intellifont-firefox-2.0.0.zip](https://github.com/magic-emperor/Intellifont/releases/download/v2.0.0/intellifont-firefox-2.0.0.zip)
|
|
97
|
+
2. **Extract** the ZIP file to a folder (e.g., `Downloads/intellifont-firefox`)
|
|
98
|
+
3. Open **Firefox** and go to `about:debugging`
|
|
99
|
+
4. Click **This Firefox** (left sidebar)
|
|
100
|
+
5. Click **Load Temporary Add-on**
|
|
101
|
+
6. Select any file from the extracted `intellifont-firefox` folder (e.g., `manifest.json`)
|
|
102
|
+
7. Extension appears in your toolbar
|
|
103
|
+
8. **Use it**: Right-click any image "Identify font"
|
|
104
|
+
|
|
105
|
+
### How to Use the Extension
|
|
106
|
+
|
|
107
|
+
1. **Right-click on any image** on any webpage
|
|
108
|
+
2. Select **"Identify font in image"** (or "Identify font in image region..." for partial image)
|
|
109
|
+
3. Wait for analysis (usually 1-2 seconds)
|
|
110
|
+
4. A popup appears with:
|
|
111
|
+
- **Top matching fonts** (confidence % shown)
|
|
112
|
+
- **Font family, weight, style** for each match
|
|
113
|
+
- Copy button for easy access
|
|
114
|
+
|
|
115
|
+
### Known Extension Limitations
|
|
116
|
+
|
|
117
|
+
- Only works on images you can right-click (no cross-origin restrictions thanks to local processing)
|
|
118
|
+
- Image must contain **readable text** (8px+ font size)
|
|
119
|
+
- Accuracy varies by image quality (see [Accuracy](#accuracy-by-condition))
|
|
120
|
+
- **Rotation**: Deskew images first if heavily tilted
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Delivery Channels
|
|
125
|
+
|
|
126
|
+
### **Browser Extension** (Chrome & Firefox)
|
|
127
|
+
Right-click on images identify fonts. Offline first, 100% private.
|
|
128
|
+
|
|
129
|
+
**Download:**
|
|
130
|
+
- **Chrome**: [Download v2.0.0 ZIP](https://github.com/magic-emperor/Intellifont/releases/download/v2.0.0/intellifont-chrome-2.0.0.zip)
|
|
131
|
+
- **Firefox**: [Download v2.0.0 ZIP](https://github.com/magic-emperor/Intellifont/releases/download/v2.0.0/intellifont-firefox-2.0.0.zip)
|
|
132
|
+
|
|
133
|
+
**Installation** (see [Browser Extension Setup](#browser-extension-setup) below):
|
|
134
|
+
1. Extract the ZIP file
|
|
135
|
+
2. Load unpacked in Chrome/Firefox Developer Mode
|
|
136
|
+
3. Right-click any image "Identify font"
|
|
137
|
+
|
|
138
|
+
**Coming soon**: Chrome Web Store & Firefox Add-ons (submit after testing)
|
|
139
|
+
|
|
140
|
+
### **NPM Package** (`intellifont-engine`)
|
|
141
|
+
```bash
|
|
142
|
+
npm install intellifont-engine
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
20+ functions for font identification, analysis, and caching:
|
|
146
|
+
- `identifyVisualFont()` — Identify from TTF/OTF file
|
|
147
|
+
- `identifyVisualFontBuffer()` — Identify from buffer
|
|
148
|
+
- `aiSuggestSimilar()` — Find similar fonts (ML)
|
|
149
|
+
- `getFontSuggestions()` — Name-based search
|
|
150
|
+
- `analyzeImage()` — Full image processing
|
|
151
|
+
|
|
152
|
+
**TypeScript types included.**
|
|
153
|
+
|
|
154
|
+
### **WASM Module**
|
|
155
|
+
Pure JavaScript, zero native dependencies. Perfect for browsers, serverless, Deno.
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
npm install intellifont-wasm
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### **API Server**
|
|
162
|
+
```bash
|
|
163
|
+
cd server && npm start
|
|
164
|
+
# POST /api/identify — upload image
|
|
165
|
+
# GET /api/identify-url?url=... — scan web page
|
|
166
|
+
# POST /api/identify-document — analyze PDF/DOCX
|
|
167
|
+
# GET /api/similar?font=Roboto — find alternatives
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Accuracy by Condition
|
|
173
|
+
|
|
174
|
+
| Scenario | Accuracy |
|
|
175
|
+
|---|---|
|
|
176
|
+
| Font file (TTF/OTF) | ~95% |
|
|
177
|
+
| Web font (downloaded) | ~95% |
|
|
178
|
+
| PDF/Document embedded font | ~95% |
|
|
179
|
+
| Image: clean text | 92% top-1 |
|
|
180
|
+
| Image: mixed conditions | 57% top-5 |
|
|
181
|
+
|
|
182
|
+
*Image accuracy depends on text quality, size, contrast, and clarity. Rotation is a known limitation (improving).*
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## How It Works
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
Input (Image / Document / Font / URL)
|
|
190
|
+
|
|
191
|
+
[Preprocessing] Binarize, deskew, extract text regions
|
|
192
|
+
|
|
193
|
+
[Glyph Analysis] Compute pixel metrics (density, symmetry, strokes, serif)
|
|
194
|
+
|
|
195
|
+
[Visual Matching] Compare 64—64 thumbnails against 2,042 fonts
|
|
196
|
+
|
|
197
|
+
[ML Enhancement] Optional: CosFace embeddings for better ranking
|
|
198
|
+
|
|
199
|
+
[Return Top 8] Sorted by confidence score
|
|
200
|
+
|
|
201
|
+
Output: Font family, weight, confidence %
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Key points:**
|
|
205
|
+
- **Visual matching**: Character-agnostic (label-independent)
|
|
206
|
+
- **ML-powered**: Trained on 2,042 real fonts
|
|
207
|
+
- **Offline**: All data bundled, no network calls
|
|
208
|
+
- **Private**: Images never leave your device
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Full API Reference
|
|
213
|
+
|
|
214
|
+
### Node.js Exports
|
|
215
|
+
|
|
216
|
+
**Core Identification**
|
|
217
|
+
```javascript
|
|
218
|
+
identifyVisualFont(fontPath: string, characters: string, limit?: number): VisualMatch[]
|
|
219
|
+
identifyVisualFontBuffer(buffer: Buffer, characters: string, limit?: number): VisualMatch[]
|
|
220
|
+
aiSuggestSimilar(fontPath: string, limit?: number): AiSuggestion[]
|
|
221
|
+
getFontSuggestions(fontName: string, includeInternet?: boolean): Promise<Suggestion[]>
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**Image Processing**
|
|
225
|
+
```javascript
|
|
226
|
+
analyzeImage(imageSource: string | Buffer): Promise<ImageAnalysisResult>
|
|
227
|
+
extractGlyphSignature(fontPath: string, character: string): GlyphSignature
|
|
228
|
+
compareGlyphSignatures(fontPathA: string, fontPathB: string, character: string): number
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**Utilities**
|
|
232
|
+
```javascript
|
|
233
|
+
normalizeFontName(fontName: string): string
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**Cache Management**
|
|
237
|
+
```javascript
|
|
238
|
+
pinFont(fontName: string): void
|
|
239
|
+
unpinFont(fontName: string): void
|
|
240
|
+
listPinnedFonts(): string[]
|
|
241
|
+
cleanupCache(aggressive?: boolean): number
|
|
242
|
+
getCacheStats(): CacheStats
|
|
243
|
+
getEngineStats(): EngineStats
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Full TypeScript types in `index.d.ts`.
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Browser Support
|
|
251
|
+
|
|
252
|
+
| Browser | Version | Status |
|
|
253
|
+
|---|---|---|
|
|
254
|
+
| Chrome | 80+ | Full |
|
|
255
|
+
| Firefox | 109+ | Full |
|
|
256
|
+
| Edge | 80+ | Full |
|
|
257
|
+
| Safari | 14+ | Planned |
|
|
258
|
+
|
|
259
|
+
WASM module works on 99%+ of users' devices.
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Database
|
|
264
|
+
|
|
265
|
+
**2,042 fonts** covering:
|
|
266
|
+
- Google Fonts (complete)
|
|
267
|
+
- System fonts (Windows, macOS, Linux)
|
|
268
|
+
- Popular design fonts
|
|
269
|
+
- Open-source typefaces
|
|
270
|
+
|
|
271
|
+
**Included in extension and NPM:**
|
|
272
|
+
- Glyph signatures: 2 MB
|
|
273
|
+
- Pixel signatures: 1.7 MB
|
|
274
|
+
- Visual thumbnails: 15 MB
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Performance
|
|
279
|
+
|
|
280
|
+
| Task | Time | Notes |
|
|
281
|
+
|---|---|---|
|
|
282
|
+
| Identify 1 glyph | 5-50ms | CPU-bound |
|
|
283
|
+
| Full image analysis | 100-500ms | Includes preprocessing |
|
|
284
|
+
| ML similarity ranking | 10-100ms | Optional |
|
|
285
|
+
|
|
286
|
+
No initialization delay. Ready immediately.
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Privacy & Security
|
|
291
|
+
|
|
292
|
+
**100% Offline** — All processing on your device
|
|
293
|
+
**No Tracking** — Zero telemetry
|
|
294
|
+
**No Uploads** — Images never leave your computer
|
|
295
|
+
**Open Source** — Inspect the code
|
|
296
|
+
**Apache 2.0** — Free for commercial use
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Installation
|
|
301
|
+
|
|
302
|
+
### From NPM
|
|
303
|
+
```bash
|
|
304
|
+
npm install intellifont-engine
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### From Source (Development)
|
|
308
|
+
```bash
|
|
309
|
+
git clone https://github.com/magic-emperor/Intellifont.git
|
|
310
|
+
cd Intellifont
|
|
311
|
+
|
|
312
|
+
# Build Rust bindings
|
|
313
|
+
cd Rust/font-resolver
|
|
314
|
+
cargo build --release
|
|
315
|
+
cd bindings/node
|
|
316
|
+
npm install
|
|
317
|
+
npm run build
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## Known Limitations
|
|
323
|
+
|
|
324
|
+
- **Rotation**: Tilted text is difficult (deskew first)
|
|
325
|
+
- **Rare fonts**: Only covers 2,042 fonts (expand DB for your use case)
|
|
326
|
+
- **Stylized text**: Heavily styled/outlined text has lower accuracy
|
|
327
|
+
- **Small text**: < 8px is hard to analyze
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Contributing
|
|
332
|
+
|
|
333
|
+
Found a bug? Want to help? Open an issue or PR on [GitHub](https://github.com/magic-emperor/Intellifont).
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## License
|
|
338
|
+
|
|
339
|
+
**Apache License 2.0.** See [LICENSE](LICENSE).
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## Credits
|
|
344
|
+
|
|
345
|
+
- **Rust** engine with NAPI-RS bindings
|
|
346
|
+
- **WebAssembly** for browser support
|
|
347
|
+
- **CosFace** ML embeddings
|
|
348
|
+
- **2,042 test fonts** for training
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
** 2026 Intellifont Engine. Built by the Intellifont Team.**
|
|
353
|
+
|
|
354
|
+
Questions? Email [faizan77603@gmail.com](mailto:faizan77603@gmail.com) or open an issue on [GitHub](https://github.com/magic-emperor/Intellifont).
|
|
355
|
+
|