├── package.json ├── README.md ├── index.js ├── vendors.json └── labels.json /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "Brandon Benvie (http://bbenvie.com)", 3 | "name": "font", 4 | "description": "Read font file data in javascript using buffers.", 5 | "version": "0.0.4", 6 | "repository": { 7 | "type": "git", 8 | "url": "git://github.com/Benvie/font.git" 9 | }, 10 | "main": "index.js", 11 | "engines": { 12 | "node": "0.6" 13 | }, 14 | "dependencies": { 15 | "reified": "~0.2.4" 16 | }, 17 | "devDependencies": {}, 18 | "optionalDependencies": {} 19 | } 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # font 2 | 3 | Work in progress but it currently reads a lot of info already. 4 | 5 | 6 | ## Usage 7 | 8 | ``` 9 | npm install font 10 | ``` 11 | 12 | ```javascript 13 | var font = require('font'); 14 | 15 | // get an array of fonts from the OS's font directory 16 | font.listFonts(); 17 | 18 | // loads a file from either the font directory or a full path 19 | font.loadFont('filename.ttf') 20 | 21 | // the constructor and prototype 22 | font.Font 23 | ``` 24 | 25 | ## Provides 26 | 27 | It's currently very much not done but here's what you get so far: 28 | 29 | 30 | ```javascript 31 | { filename: 'DejaVuSansMono.ttf', 32 | name: 'DejaVuSansMono', 33 | index: 34 | { version: 'TrueType', 35 | tableCount: 18, 36 | range: 256, 37 | selector: 4, 38 | shift: 32 }, 39 | tables: 40 | [ { tag: 'FFTM', 41 | checksum: 1407076357, 42 | contents: { type: ‹VoidPtr›, address: 300 }, 43 | length: 28 }, 44 | { tag: 'GDEF', 45 | checksum: 2053270988, 46 | contents: { type: ‹VoidPtr›, address: 328 }, 47 | length: 176 }, 48 | { tag: 'GPOS', 49 | checksum: 1094198046, 50 | contents: { type: ‹VoidPtr›, address: 504 }, 51 | length: 14582 }, 52 | { tag: 'GSUB', 53 | checksum: 1445877738, 54 | contents: { type: ‹VoidPtr›, address: 15088 }, 55 | length: 1212 }, 56 | { tag: 'OS/2', 57 | checksum: 2298243506, 58 | contents: 59 | { version: 1, 60 | avgCharWidth: 1233, 61 | weightClass: 'Semi-light', 62 | widthClass: 'Medium', 63 | typer: 0, 64 | subscript: 65 | { size: { width: 1331, height: 1433 }, 66 | position: { x: 0, y: 286 } }, 67 | superscript: 68 | { size: { width: 1331, height: 1433 }, 69 | position: { x: 0, y: 983 } }, 70 | strikeout: { size: 102, position: 530 }, 71 | class: [ 0, 0 ], 72 | panose: 73 | { familyType: [ 'Script' ], 74 | serifStyle: [ 'Cove', 'Obtuse Cove', 'Obtuse Square Cove' ], 75 | weight: [ 'Light', 'Thin' ], 76 | proportion: [ 'Old Style', 'Expanded' ], 77 | contrast: [ 'None', 'Very Low' ], 78 | strokeVariation: [ 'Gradual/Horizontal' ], 79 | armStyle: [ 'Straight Arms/Vertical' ], 80 | letterform: [ 'Normal/Weighted' ], 81 | midline: [ 'Standard/Pointed' ], 82 | xHeight: [ 'Constant/Large' ] }, 83 | unicodePages: 84 | [ 'Alphabetic Presentation Forms', 85 | 'Arabic ', 86 | 'Arabic Presentation Forms-B', 87 | 'Arabic Supplement', 88 | 'Arrows ', 89 | 'Basic Latin', 90 | 'Block Elements ', 91 | 'Box Drawing', 92 | 'Combining Diacritical Marks', 93 | 'Combining Diacritical Marks Supplement ', 94 | 'Control Pictures ', 95 | 'Currency Symbols ', 96 | 'Cyrillic ', 97 | 'Cyrillic Extended-A', 98 | 'Cyrillic Extended-B', 99 | 'Cyrillic Supplement', 100 | 'Dingbats ', 101 | 'Geometric Shapes ', 102 | 'Georgian ', 103 | 'Georgian Supplement', 104 | 'Greek Extended ', 105 | 'Greek and Coptic ', 106 | 'IPA Extensions ', 107 | 'Lao', 108 | 'Latin Extended Additional', 109 | 'Latin Extended-A ', 110 | 'Latin Extended-B ', 111 | 'Latin Extended-C ', 112 | 'Latin Extended-D ', 113 | 'Latin-1 Supplement ', 114 | 'Letterlike Symbols ', 115 | 'Mathematical Alphanumeric Symbols', 116 | 'Mathematical Operators ', 117 | 'Miscellaneous Mathematical Symbols-A ', 118 | 'Miscellaneous Mathematical Symbols-B ', 119 | 'Miscellaneous Symbols', 120 | 'Miscellaneous Symbols and Arrows ', 121 | 'Miscellaneous Technical', 122 | 'Modifier Tone Letters', 123 | 'Non-Plane 0 *', 124 | 'Number Forms ', 125 | 'Phonetic Extensions', 126 | 'Phonetic Extensions Supplement ', 127 | 'Private Use Area (plane 0) ', 128 | 'Spacing Modifier Letters ', 129 | 'Specials ', 130 | 'Superscripts And Subscripts', 131 | 'Supplemental Arrows-A', 132 | 'Supplemental Arrows-B', 133 | 'Supplemental Mathematical Operators' ], 134 | vendorID: 'PfEd', 135 | selection: 64, 136 | firstChar: 32, 137 | lastChar: 65535, 138 | typographic: { ascender: 1556, descender: -492, lineGap: 410 }, 139 | winTypograph: { ascender: 1901, descender: 483 }, 140 | codePages1: 141 | [ '0', 142 | 'Latin 1', 143 | 'Latin 2: Eastern Europe', 144 | 'Cyrillic', 145 | 'Greek', 146 | 'Turkish', 147 | 'Arabic', 148 | 'Windows Baltic', 149 | 'Vietnamese', 150 | 'Macintosh Character Set (US Roman)', 151 | 'OEM Character Set' ], 152 | codePages2: 153 | [ 'IBM Greek', 154 | 'MS-DOS Russian', 155 | 'MS-DOS Nordic', 156 | 'Arabic', 157 | 'MS-DOS Canadian French', 158 | 'MS-DOS Icelandic', 159 | 'MS-DOS Portuguese', 160 | 'IBM Turkish', 161 | 'IBM Cyrillic; primarily Russian', 162 | 'Latin 2', 163 | 'MS-DOS Baltic', 164 | 'Greek; former 437 G', 165 | 'WE/Latin 1' ], 166 | xHeight: 0, 167 | capHeight: 0, 168 | defaultChar: 5, 169 | breakChar: 0, 170 | maxContext: 3 }, 171 | length: 86 }, 172 | { tag: 'cmap', 173 | checksum: 230425762, 174 | contents: { type: ‹VoidPtr›, address: 16388 }, 175 | length: 5538 }, 176 | { tag: 'cvt ', 177 | checksum: 3918989068, 178 | contents: { type: ‹VoidPtr›, address: 21928 }, 179 | length: 560 }, 180 | { tag: 'fpgm', 181 | checksum: 1526885343, 182 | contents: { type: ‹VoidPtr›, address: 22488 }, 183 | length: 172 }, 184 | { tag: 'gasp', 185 | checksum: 458759, 186 | contents: { type: ‹VoidPtr›, address: 22660 }, 187 | length: 12 }, 188 | { tag: 'glyf', 189 | checksum: 1883368785, 190 | contents: { type: ‹VoidPtr›, address: 22672 }, 191 | length: 239352 }, 192 | { tag: 'head', 193 | checksum: 3992135760, 194 | contents: 195 | { version: '0100', 196 | fontRevision: 150732, 197 | checkSumAdj: 2633691831, 198 | magicNumber: 1594834165, 199 | flags: 31, 200 | unitsPerEm: 2048, 201 | created: Thu Aug 27 2009 10:28:40 GMT-0400 (US Eastern Daylight Time), 202 | modified: Thu Aug 27 2009 10:28:40 GMT-0400 (US Eastern Daylight Time), 203 | min: { x: -1142, y: -767 }, 204 | max: { x: 1470, y: 2133 }, 205 | macStyle: 0, 206 | lowestRecPPEM: 8, 207 | fontDirHint: 0, 208 | indexToLocFormat: 1, 209 | glyphDataFormat: 0 }, 210 | length: 54 }, 211 | { tag: 'hhea', 212 | checksum: 146276871, 213 | contents: { type: ‹VoidPtr›, address: 262080 }, 214 | length: 36 }, 215 | { tag: 'hmtx', 216 | checksum: 243468867, 217 | contents: { type: ‹VoidPtr›, address: 262116 }, 218 | length: 6346 }, 219 | { tag: 'loca', 220 | checksum: 362015968, 221 | contents: { type: ‹VoidPtr›, address: 268464 }, 222 | length: 12680 }, 223 | { tag: 'maxp', 224 | checksum: 302449703, 225 | contents: { type: ‹VoidPtr›, address: 281144 }, 226 | length: 32 }, 227 | { tag: 'name', 228 | checksum: 1625352837, 229 | contents: { type: ‹VoidPtr›, address: 281176 }, 230 | length: 8469 }, 231 | { tag: 'post', 232 | checksum: 2878182796, 233 | contents: { type: ‹VoidPtr›, address: 289648 }, 234 | length: 30055 }, 235 | { tag: 'prep', 236 | checksum: 986169351, 237 | contents: { type: ‹VoidPtr›, address: 319704 }, 238 | length: 1819 } ] } 239 | 240 | ``` -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | var path = require('path'); 3 | var exists = fs.existsSync || path.existsSync; 4 | 5 | var vendors = require('./vendors'); 6 | var labels = require('./labels'); 7 | 8 | 9 | 10 | module.exports = Font; 11 | 12 | // There's essentially type styles of usage. One which is more declarative like this 13 | // One where everything uses the `reified` function magic. It's mostly a matter of style. 14 | 15 | var reified = require('reified'), 16 | BitfieldT = reified.BitfieldType, 17 | StructT = reified.StructType, 18 | ArrayT = reified.ArrayType, 19 | CharT = reified.CharType, 20 | PointerT = reified.PointerType, 21 | NumT = reified.NumericType, 22 | Int8 = NumT.Int8, 23 | Int16 = NumT.Int16, 24 | Int32 = NumT.Int32, 25 | Int64 = NumT.Int64, 26 | Uint8 = NumT.Uint8, 27 | Uint16 = NumT.Uint16, 28 | Uint32 = NumT.Uint32, 29 | Uint64 = NumT.Uint64, 30 | Float32 = NumT.Float32, 31 | Float64 = NumT.Float64; 32 | 33 | 34 | reified.defaultEndian = 'BE'; 35 | 36 | var flatten = Function.apply.bind([].concat, []); 37 | function inspect(o){ console.log(require('util').inspect(o, false, 6)) } 38 | function flattener(reify){ 39 | var ret = reify(); 40 | return Object.keys(ret).reduce(function(r,s){ 41 | return r.concat(ret[s]); 42 | }, []).sort(); 43 | } 44 | 45 | 46 | function Font(buffer, filename){ 47 | this.filename = filename; 48 | this.name = filename.slice(0, -path.extname(filename).length); 49 | 50 | // FontIndex is the entry point 51 | this.index = new FontIndex(buffer); 52 | 53 | // initialize tables using table count from the index 54 | this.tables = new TableHead[this.index.tableCount](buffer, this.index.bytes); 55 | 56 | // loop through the tables casting the pointer to the correct struct type based on tag 57 | this.tables.forEach(function(table){ 58 | var tag = table.tag.reify(); 59 | if (tag in TableTypes) { 60 | table.contents.cast(TableTypes[tag]); 61 | } 62 | }); 63 | } 64 | 65 | // convenience function to automatically reify any structs put onto the container 66 | Font.prototype.reify = function reify(){ 67 | return Object.keys(this).reduce(function(r,s){ 68 | r[s] = this[s].reify ? this[s].reify() : this[s]; 69 | return r; 70 | }.bind(this), {}); 71 | } 72 | 73 | 74 | Font.fontFolder = path.resolve({ 75 | win32: '/Windows/fonts', 76 | darwin: '/Library/Fonts', 77 | linux: '/usr/share/fonts/truetype' 78 | }[process.platform]); 79 | 80 | Font.listFonts = function listFonts(){ return fs.readdirSync(Font.fontFolder) } 81 | 82 | Font.load = function load(filename){ 83 | var resolved = path._makeLong(path.resolve(Font.fontFolder, filename)); 84 | if (exists(resolved)) { 85 | return new Font(fs.readFileSync(resolved), filename); 86 | } else { 87 | throw new Error(resolved + ' not found'); 88 | } 89 | } 90 | 91 | 92 | 93 | // ########################### 94 | // ### Commonly used Types ### 95 | // ########################### 96 | 97 | var Point = StructT('Point', { 98 | x: Int16, 99 | y: Int16 100 | }); 101 | 102 | var Dimensions = StructT('Dimensions', { 103 | width: Int16, 104 | height: Int16 105 | }); 106 | 107 | var Metrics = StructT('Metrics', { 108 | size: Dimensions, 109 | position: Point 110 | }); 111 | 112 | var LongDateTime = reified('Uint64').typeDef('LongDateTime', function(reify){ 113 | return new Date((reify()[1] - 2082844800) * 1000); 114 | }); 115 | 116 | var Tag = CharT(4).typeDef('Tag'); 117 | 118 | var Version = ArrayT('Version', Uint8, 4).reifier(function(reify){ 119 | return this.join(''); 120 | }); 121 | 122 | // ############################################################################### 123 | // ### FontIndex starts the file and tells the number of Tables in the Index #### 124 | // ############################################################################### 125 | 126 | var TTFVersion = Uint8[4].typeDef('TTFVersion', function(reify){ 127 | var val = this.join(''); 128 | return val === '0100' ? 'TrueType' : val === 'OTTO' ? 'OpenType' : 'Unknown'; 129 | }); 130 | 131 | var FontIndex = new StructT('FontIndex', { 132 | version : TTFVersion, 133 | tableCount : Uint16, 134 | range : Uint16, 135 | selector : Uint16, 136 | shift : Uint16 137 | }); 138 | 139 | FontIndex.version 140 | 141 | // ###################################################################### 142 | // ### After the FontIndex are TableHeads with pointers to each table ### 143 | // ###################################################################### 144 | 145 | var TableHead = StructT('Table', { 146 | tag : Tag, 147 | checksum : Uint32, 148 | contents : reified.VoidPtr, 149 | length : Uint32 150 | }); 151 | 152 | var TableTypes = {}; 153 | 154 | 155 | // ################################################################## 156 | // ### Head contains general font metrics and important constants ### 157 | // ################################################################## 158 | 159 | TableTypes.head = StructT('Head', { 160 | version : Version, 161 | fontRevision : Int32 , 162 | checkSumAdj : Uint32, 163 | magicNumber : Uint32, 164 | flags : Uint16, 165 | unitsPerEm : Uint16, 166 | created : LongDateTime, 167 | modified : LongDateTime, 168 | min : Point, 169 | max : Point, 170 | macStyle : Uint16, 171 | lowestRecPPEM : Uint16, 172 | fontDirHint : Int16, 173 | indexToLocFormat : Int16, 174 | glyphDataFormat : Int16, 175 | }); 176 | 177 | 178 | // ################################################################################## 179 | // ### OS2 is the 'compatability' table containing a lot of useful stats and info ### 180 | // ################################################################################## 181 | 182 | // ### PANOSE is a set of 10 bitfields whose mapping is in labels.json ### 183 | Object.keys(labels.panose).forEach(function(label){ 184 | labels.panose[label] = BitfieldT(label, labels.panose[label], 1); 185 | }); 186 | 187 | // ### Unicode pages are 4 bitfields mapping to blocks which map to ranges, labels.json ### 188 | var UnicodePages = StructT('UnicodePages', labels.unicodeBlocks.reduce(function(ret, blocks, index){ 189 | // custome reify function for mapping the code pages to their names, then flattening all the arrays 190 | 191 | ret[index] = BitfieldT('UnicodePages'+index, blocks, 4).reifier(function(reify){ 192 | return flatten(reify().map(function(s){ 193 | return s.split(',').map(function(ss){ 194 | return labels.unicodeRanges[ss]; 195 | }); 196 | })); 197 | }); 198 | 199 | return ret; 200 | }, {})).reifier(flattener); 201 | 202 | 203 | 204 | TableTypes['OS/2'] = StructT('OS2', { 205 | version : Uint16, 206 | avgCharWidth : Int16, 207 | weightClass : Uint16.typeDef('WeightClass', function(){ return labels.weights[this / 100 - 1] }), 208 | widthClass : Uint16.typeDef('WidthClass', function(){ return labels.widths[this - 1] }), 209 | typer : Uint16, 210 | subscript : Metrics, 211 | superscript : Metrics, 212 | strikeout : StructT('Strikeout', 213 | { size : Int16, 214 | position : Int16 }), 215 | class : Int8[2], 216 | panose : StructT('PANOSE', labels.panose), 217 | unicodePages : UnicodePages, 218 | vendorID : Tag, 219 | selection : Uint16, 220 | firstChar : Uint16, 221 | lastChar : Uint16, 222 | typographic : StructT('Typographic', 223 | { ascender : Int16, 224 | descender : Int16, 225 | lineGap : Int16 }), 226 | winTypograph : StructT('WindowsTypographic', 227 | { ascender : Uint16, 228 | descender : Uint16 }), 229 | codePages : StructT('CodePages', { 230 | 1 : BitfieldT('CodePages1', labels.codePageNames[0], 4), 231 | 2 : BitfieldT('CodePages2', labels.codePageNames[1], 4) }).reifier(flattener), 232 | xHeight : Int16, 233 | capHeight : Int16, 234 | defaultChar : Uint16, 235 | breakChar : Uint16, 236 | maxContext : Uint16 237 | }); 238 | 239 | 240 | 241 | 242 | var NameIndex = StructT('NameIndex', { 243 | format : Uint16, 244 | length : Uint16, 245 | contents : Uint16 246 | }); 247 | 248 | var NameRecord = StructT('NameRecord', { 249 | platformID : Uint16, 250 | encodingID : Uint16, 251 | languageID : Uint16, 252 | nameID : Uint16, 253 | length : Uint16, 254 | contents : Uint16, 255 | }); 256 | -------------------------------------------------------------------------------- /vendors.json: -------------------------------------------------------------------------------- 1 | { "!ETF": "!Exclamachine Type Foundry", 2 | "$pro": "CheapProFonts", 3 | "1ASC": "Ascender Corporation", 4 | "1BOU": "Boutros International", 5 | "2REB": "2Rebels", 6 | "39BC": "Finley's Barcode Fonts", 7 | "3ip ": "Three Islands Press", 8 | "4FEB": "4th february", 9 | "5PTS": "Five Points Technology", 10 | "918 ": "RavenType", 11 | "A&S ": "Art&Sign Studio", 12 | "A2 ": "A2-Type", 13 | "aaff": "AstroAcademia Font Foundry", 14 | "ABBO": "Arabic Dictionary Lab", 15 | "ABC ": "Altek Instruments", 16 | "ABOU": "Aboutype, Inc.", 17 | "ACUT": "Acute Type", 18 | "ADBE": "Adobe", 19 | "ADG ": "Apply Design Group", 20 | "AEF ": "Altered Ego Fonts", 21 | "AGFA": "Monotype Imaging (replaced by MONO)", 22 | "AID ": "Artistic Imposter Design", 23 | "AKOF": "AKOFAType", 24 | "ALFA": "Alphabets", 25 | "ALPH": "Alphameric Broadcast Solutions Limited", 26 | "ALPN": "Alpona Portal", 27 | "ALS ": "Art. Lebedev Studio", 28 | "alte": "Altemus", 29 | "ALTS": "Altsys / Made with Fontographer", 30 | "AMUT": "Kwesi Amuti", 31 | "ANDO": "Osam Ando", 32 | "anty": "Anatoletype", 33 | "AOP ": "an Art Of Pengwyn", 34 | "APLY": "Apply Interactive", 35 | "APOS": "Apostrophic Laboratories", 36 | "APPL": "Apple", 37 | "ARBX": "Arabetics", 38 | "ARCH": "Architext", 39 | "ARPH": "Arphic Technology Co.", 40 | "ARS ": "EN ARS Ltd.", 41 | "ArTy": "Archive Type", 42 | "ASL ": "Abneil Software Ltd fonts", 43 | "ASSA": "astype", 44 | "ASYM": "Applied Symbols", 45 | "ATEC": "Page Technology Marketing, Inc.", 46 | "ATF1": "Australian Type Foundry", 47 | "ATFS": "Andrew Tyler's fonts", 48 | "AURE": "Aure Font Design", 49 | "AUTO": "Autodidakt", 50 | "AVP ": "Aviation Partners", 51 | "AZLS": "Azalea Software, Inc.", 52 | "B&H ": "Bigelow & Holmes", 53 | "BARS": "CIA (BAR CODES) UK", 54 | "BASE": "Baseline Fonts", 55 | "BAT ": "BUREAU DES AFFAIRES TYPOGRAPHIQUES", 56 | "BCP ": "Barcode Products Ltd", 57 | "BERT": "Berthold", 58 | "BITM": "Bitmap Software", 59 | "BITS": "Bitstream", 60 | "bizf": "Bizfonts.com", 61 | "BLAB": "BaseLab", 62 | "BLAH": "Mister Bla's Fontworx", 63 | "BLI ": "Blissym Language Institute", 64 | "BOLD": "Bold Monday", 65 | "BORW": "em2 Solutions", 66 | "BOYB": "BoyBeaver Fonts", 67 | "BREM": "Mark Bremmer", 68 | "BROS": "Michael Brosnan", 69 | "BRTC": "ITSCO - Bar Code Fonts", 70 | "BS ": "Barcodesoft", 71 | "BUBU": "BUBULogix", 72 | "BWFW": "B/W Fontworks", 73 | "C&C ": "Carter & Cone", 74 | "C21 ": "Club 21", 75 | "CAK ": "pluginfonts.com", 76 | "CANO": "Canon", 77 | "CASL": "H.W. Caslon & Company Ltd.", 78 | "CB ": "Christian Büning", 79 | "CBDO": "Borges Lettering & Design", 80 | "CDAC": "Centre for Development of Advanced Computing", 81 | "cdd ": "Crazy Diamond Design", 82 | "CDFP": "VT2000 Technical Services", 83 | "CELB": "Celebrity Fontz", 84 | "CF ": "Colophon Foundry", 85 | "CFA ": "Computer Fonts Australia", 86 | "CFF ": "Characters Font Foundry", 87 | "CJCJ": "Creative Juncture", 88 | "CKTP": "CakeType", 89 | "CLM ": "Culmus Project", 90 | "COMM": "Commercial Type", 91 | "CONR": "Connare.com", 92 | "COOL": "Cool Fonts", 93 | "CORD": "corduroy", 94 | "CR8 ": "CR8 Software Solutions", 95 | "CT ": "CastleType", 96 | "CTDL": "China Type Designs Ltd.", 97 | "CTL ": "Chaitanya Type Library", 98 | "cwwf": "Computers World Wide/AC Capital Funding", 99 | "CYPE": "Club Type", 100 | "DAMA": "Dalton Maag Limited", 101 | "DBFF": "DesignBase", 102 | "DD ": "Devon DeLapp", 103 | "Deco": "DecoType (replaced by DT)", 104 | "DELV": "Delve Fonts", 105 | "dezc": "Dezcom", 106 | "DFS ": "Datascan Font Service Ltd", 107 | "DGL ": "Digital Graphic Labs foundry", 108 | "DS ": "Dainippon Screen Mfg. Co., Inc.", 109 | "DSBV": "Datascan bv", 110 | "DSCI": "Design Science Inc.", 111 | "DSGN": "DizajnDesign", 112 | "DSKY": "Jacek Dziubinski", 113 | "DSSR": "Dresser Johnson", 114 | "DSST": "Dubina Nikolay", 115 | "DST ": "DSType", 116 | "DT ": "DecoType", 117 | "DTC ": "Digital Typeface Corp.", 118 | "DTF ": "Dunwich Type Founders", 119 | "DTL ": "Dutch Type Library", 120 | "DTPS": "DTP-Software", 121 | "dtpT": "dtpTypes Limited", 122 | "DUXB": "Duxbury Systems, Inc.", 123 | "DYNA": "DynaLab", 124 | "EDGE": "Rivers Edge Corp.", 125 | "EF ": "Elsner+Flake", 126 | "EFF ": "Electronic Font Foundry", 127 | "EFI ": "Elfring Fonts Inc.", 128 | "EFNT": "E Fonts L.L.C.", 129 | "EFWS": "eFilm World", 130 | "ELSE": "Elseware", 131 | "EMGR": "Emigre", 132 | "EPSN": "Epson", 133 | "ESIG": "E-Signature", 134 | "EVER": "Evertype", 135 | "FA ": "FontArte Type Foundry", 136 | "FAT ": "Fatype", 137 | "FBI ": "The Font Bureau, Inc.", 138 | "FCAB": "The Font Cabinet", 139 | "FCAN": "fontage canada", 140 | "FCTP": "Facetype", 141 | "FDI ": "FDI fonts.info", 142 | "FeoN": "Feòrag NìcBhrìde", 143 | "FGOD": "FontGod", 144 | "FJTY": "Frank Jonen - Illustration & Typography", 145 | "FMFO": "Studio Liddell Graphic Design", 146 | "FNTF": "Fontfoundry", 147 | "FoFa": "FontFabrik", 148 | "FONT": "Font Source", 149 | "FOUN": "The Foundry", 150 | "FRML": "formlos", 151 | "FS ": "Formula Solutions", 152 | "FSE ": "Font Source Europe", 153 | "FSI ": "FontShop International", 154 | "FSL ": "FontSurfer Ltd", 155 | "fsmi": "Fontsmith", 156 | "FTFT": "FontFont", 157 | "FTGD": "Font Garden", 158 | "FTH ": "For the Hearts", 159 | "FTN ": "Fountain", 160 | "FTPT": "Fontpartners", 161 | "FWKS": "Fontworks", 162 | "FWRE": "Fontware Limited", 163 | "GALA": "Galápagos Design Group, Inc.", 164 | "GALO": "Gerald Gallo", 165 | "GARI": "Gary Ritchie", 166 | "GATF": "Greater Albion Typefounders", 167 | "GD ": "GD Fonts", 168 | "GF ": "GarageFonts", 169 | "GIA ": "Georgian Internet Avenue", 170 | "GLCF": "GLC foundry", 171 | "GLYF": "Glyph Systems", 172 | "GNU ": "Free Software Foundation, Inc.", 173 | "GOAT": "Dingbat Dungeon", 174 | "GOGO": "Fonts-A-Go-Go", 175 | "GOHE": "GoHebrew, division of GoME2.com Inc.", 176 | "GPI ": "Gamma Productions, Inc.", 177 | "GRIL": "Grilled cheese", 178 | "GRIM": "Legacy publishing", 179 | "grro": "grafikk RØren", 180 | "GT ": "Graphity!", 181 | "H&FJ": "Hoefler & Frere-Jones", 182 | "HA ": "HoboArt", 183 | "HAD ": "Hoffmann Angelic Design", 184 | "HAIL": "Hail Design", 185 | "HAUS": "TypeHaus", 186 | "HEB ": "Sivan Toledo", 187 | "HFJ ": "Hoefler & Frere-Jones (replaced by H&FJ)", 188 | "HIH ": "HiH Retrofonts", 189 | "HILL": "Hill Systems", 190 | "HJZ ": "Hans J. Zinken", 191 | "HL ": "High-Logic", 192 | "HM ": "Haiku Monkey", 193 | "HoP ": "House of Pretty", 194 | "HOUS": "House Industries", 195 | "HP ": "Hewlett-Packard", 196 | "HS ": "HermesSOFT Company", 197 | "HTF ": "The Hoefler Type Foundry, Inc.", 198 | "HXTP": "Hexatype", 199 | "HY ": "HanYang Information & Communication", 200 | "IBM ": "IBM", 201 | "IDAU": "IDAutomation.com, Inc.", 202 | "IDEE": "IDEE TYPOGRAFICA", 203 | "IDF ": "International Digital Fonts", 204 | "IKOF": "IKOffice GmbH", 205 | "ILP ": "Indigenous Languages Project", 206 | "IMPR": "Impress", 207 | "INGT": "Ingrimayne Type", 208 | "INRA": "INRAY Inc.", 209 | "INVC": "Invoice Central", 210 | "INVD": "TYPE INVADERS", 211 | "ISE ": "ISE-Aditi Info. Pvt . Ltd.", 212 | "ITC ": "ITC", 213 | "ITF ": "Red Rooster Collection (ITF, Inc.)", 214 | "ITFO": "Indian Type Foundry", 215 | "JABM": "JAB'M Foundry", 216 | "JAF ": "Just Another Foundry", 217 | "JAKE": "Jake Tilson Studio", 218 | "JBLT": "JEAN-BAPTISTE LEVÉE TYPOGRAPHY", 219 | "JF ": "Jan Fromm", 220 | "JPTT": "Jeremy Tankard Typography Ltd", 221 | "JY ": "JIYUKOBO Ltd.", 222 | "KATF": "Kingsley/ATF", 223 | "KDW ": "Kataoka Design Works", 224 | "KF ": "Karakta Fonthome", 225 | "KLIM": "Klim Typographic Design", 226 | "KLTF": "Karsten Luecke", 227 | "KNST": "Konst.ru", 228 | "KORK": "Khork OÜ", 229 | "KOVL": "Koval Type Foundry", 230 | "KRKO": "Kreative Software", 231 | "KRND": "Karandash Type & Graphics Foundry", 232 | "KTF ": "Kustomtype", 233 | "KUBA": "Kuba Tatarkiewicz", 234 | "LAIT": "la laiterie", 235 | "LANS": "Lanston Type Company", 236 | "LARA": "Larabiefonts", 237 | "LAUD": "Carolina Laudon", 238 | "LAYT": "LAYOUT SARL", 239 | "LEAF": "Interleaf, Inc.", 240 | "LETR": "Letraset", 241 | "LGX ": "Logix Research Institute, Inc.", 242 | "LHF ": "Letterhead Fonts", 243 | "LING": "Linguist's Software", 244 | "LINO": "Linotype GmbH", 245 | "LIVE": "Livedesign", 246 | "LNTO": "Lineto", 247 | "LORO": "LoRo Productions", 248 | "LP ": "LetterPerfect Fonts", 249 | "LT ": "Le Typophage", 250 | "LTRX": "Lighttracks", 251 | "LTTR": "LettError", 252 | "LUD ": "Ludlow", 253 | "LuFo": "LucasFonts", 254 | "MACR": "Macromedia / Made with Fontographer", 255 | "MADT": "MADType", 256 | "MAPS": "Tom Mouat's Map Symbol Fonts", 257 | "MATS": "Match Fonts", 258 | "MC ": "Cerajewski Computer Consulting", 259 | "MCOW": "Mountaincow", 260 | "MDSN": "Moraitis Design", 261 | "MEH ": "Steve Mehallo", 262 | "MEIR": "Meir Sadan", 263 | "MESA": "FontMesa,", 264 | "MF ": "Magic Fonts", 265 | "MFNT": "Masterfont", 266 | "MILL": "Millan", 267 | "MJ ": "Majus Corporation", 268 | "MJR ": "Majur Inc.", 269 | "MLBU": "Malibu Dream Designs, LLC", 270 | "MLGC": "Micrologic Software", 271 | "mlss": "Mark Simonson Studio LLC", 272 | "MMFT": "Michel M.", 273 | "MMIK": "Monomonnik", 274 | "MODI": "Modular Infotech Private Limited.", 275 | "MOHT": "Al Mohtaraf Assaudi Ltd", 276 | "MONB": "Monib", 277 | "MONE": "Meta One Limited", 278 | "MONO": "Monotype Imaging", 279 | "MOON": "Moonlight Type and Technolog", 280 | "MRSW": "Morisawa & Company, Ltd.", 281 | "MRV ": "Morovia Corporation", 282 | "MS ": "Microsoft Corp.", 283 | "MSCR": "Majus Corporation", 284 | "MSE ": "MSE-iT", 285 | "MT ": "Monotype Imaging (replaced by MONO)", 286 | "MTF ": "Miss Tiina Fonts", 287 | "MTY ": "Motoya Co. ,LTD.", 288 | "MUTF": "Murasu Systems Sdn. Bhd", 289 | "MVty": "MV Typo", 290 | "MYFO": "MyFonts.com", 291 | "NB ": "No Bodoni Typography", 292 | "ncnd": "&cond", 293 | "NDTC": "Neufville Digital", 294 | "NEC ": "NEC Corporation", 295 | "NICK": "Nick's Fonts", 296 | "NIS ": "NIS Corporation", 297 | "NORF": "Norfok Incredible Font Design", 298 | "NOVA": "NOVATYPE", 299 | "OHG ": "Our House Graphic Design", 300 | "OPTM": "Optimo", 301 | "OPTO": "Opto", 302 | "ORBI": "Orbit Enterprises, Inc.", 303 | "OURT": "Ourtype", 304 | "P22 ": "P22 Inc.", 305 | "PARA": "ParaType Inc.", 306 | "PD ": "Pangea design", 307 | "PDWX": "Parsons Design Workx", 308 | "PF ": "Phil's Fonts, Inc.", 309 | "PIXL": "Pixilate", 310 | "PKDD": "Philip Kelly Digital Design", 311 | "PLAT": "PLATINUM technology", 312 | "PRFS": "Production First Software", 313 | "PRGR": "Paragraph", 314 | "PRTF": "Process Type Foundry", 315 | "PSIS": "PhotoShopIsland.com", 316 | "PSY ": "PSY/OPS", 317 | "PT ": "Playtype APS", 318 | "PTF ": "Porchez Typofonderie", 319 | "PTMI": "Page Technology Marketing, Inc.", 320 | "PTYP": "preussTYPE", 321 | "PYRS": "PYRS Fontlab Ltd. / Made with FontLab", 322 | "QMSI": "QMS/Imagen", 323 | "QRAT": "Quadrat Communications", 324 | "READ": "ReadyType", 325 | "REAL": "Underware", 326 | "RJPS": "Reall Graphics", 327 | "RKFN": "R K Fonts", 328 | "RL ": "Ruben Holthuijsen", 329 | "RLTF": "Rebeletter Studios", 330 | "robo": "Buro Petr van Blokland", 331 | "RRT ": "Red Rooster Collection (ITF, Inc.)", 332 | "RST ": "Rosetta", 333 | "RUDY": "RudynFluffy", 334 | "RYOB": "Ryobi Limited", 335 | "SAND": "Sandoll", 336 | "SAPL": "Fonderie sans plomb", 337 | "SAX ": "s.a.x. Software gmbh", 338 | "SBT ": "SelfBuild Type Foundry", 339 | "Sean": "The FontSite", 340 | "SFS ": "Sarumadhu Services Pvt. Ltd.", 341 | "SFUN": "Software Union", 342 | "SG ": "Scooter Graphics", 343 | "SHAM": "ShamFonts / Shamrock Int.", 344 | "SHFT": "Shift", 345 | "SHOT": "Shotype", 346 | "SHUB": "The Software Hub", 347 | "SIG ": "vLetter, Inc", 348 | "SIL ": "SIL International (SIL)", 349 | "SIT ": "Summit Information Technologies Pvt.Ltd,", 350 | "skz ": "Celtic Lady's Fonts", 351 | "SL ": "Silesian Letters", 352 | "SN ": "SourceNet", 353 | "SOHO": "Soft Horizons", 354 | "SOS ": "Standing Ovations Software", 355 | "STC ": "Sorkin Type Co", 356 | "STF ": "Brian Sooy & Co + Sooy Type Foundry", 357 | "Stor": "Storm Type Foundry", 358 | "STYP": "Stone Type Foundry", 359 | "SUNW": "sunwalk fontworks", 360 | "SVTD": "Synthview", 361 | "SWFT": "Swfte International", 362 | "SXRA": "Page42 Type Foundry", 363 | "SYN ": "SynFonts", 364 | "SYRC": "Syriac Computing Institute", 365 | "TBFF": "TrueBlue Font Foundry", 366 | "TC ": "Typeco", 367 | "TDR ": "Tansin A. Darcos & Co.", 368 | "TERM": "Terminal Design, Inc.", 369 | "TF ": "Treacyfaces / Headliners", 370 | "TF3D": "TattooFont3D", 371 | "THIN": "Thinstroke Design LLC", 372 | "TILD": "Tilde, SIA", 373 | "TIMO": "Tim Romano", 374 | "TIMR": "Tim Rolands", 375 | "TIPO": "Tipo", 376 | "TIRO": "Tiro Typeworks", 377 | "TJS ": "Typejockeys", 378 | "TMF ": "The MicroFoundry", 379 | "TPMA": "typoma", 380 | "TPSP": "Type Supply", 381 | "TPTC": "Test Pilot Collective", 382 | "TPTQ": "Typotheque", 383 | "TR ": "Type Revivals", 384 | "TS ": "TamilSoft Corporation", 385 | "TSPC": "Typespec Ltd", 386 | "TSTY": "Torleiv Georg Sverdrup", 387 | "TT ": "TypeTogether", 388 | "TTG ": "Twardoch Typography", 389 | "TYCU": "TypeCulture", 390 | "TYFR": "typographies.fr", 391 | "TYPA": "Typadelic", 392 | "TYPE": "Type Associates Pty Ltd", 393 | "TYPO": "Typodermic", 394 | "TYPR": "Type Project", 395 | "TYRE": "typerepublic", 396 | "UA ": "UnAuthorized Type", 397 | "UNDT": "ÜNDT", 398 | "URW ": "URW++", 399 | "UT ": "Unitype Inc", 400 | "VINT": "Vinterstille", 401 | "VKP ": "Vijay K. Patel", 402 | "VLKF": "Visualogik Technology & Design", 403 | "VLNL": "VetteLetters.nl", 404 | "VMT ": "VMType", 405 | "VOG ": "Martin Vogel", 406 | "VROM": "Vladimir Romanov", 407 | "VS ": "VorSicht GmbH", 408 | "VT ": "VISUALTYPE SRL", 409 | "WASP": "Wasp Barcode Technologies", 410 | "WILL": "Willerstorfer Font Foundry", 411 | "WM ": "Webmakers India", 412 | "XFC ": "Xerox Font Services", 413 | "Y&Y ": "Y&Y, Inc.", 414 | "YDS ": "Yellow Design Studio", 415 | "YN ": "Yanone", 416 | "YOFF": "Your Own Font Foundry", 417 | "YOKO": "Yokokaku", 418 | "YOUR": "YourFonts.com", 419 | "ZANE": "Unrender", 420 | "ZeGr": "Zebra Font Factory", 421 | "zeta": "Tangram Studio", 422 | "ZSFT": "Zsoft" } -------------------------------------------------------------------------------- /labels.json: -------------------------------------------------------------------------------- 1 | { "panose": { 2 | "familyType": [ "Text and Display", "Script", "Decorative", "Pictorial" ], 3 | 4 | "serifStyle": [ "Cove", "Obtuse Cove", "Square Cove", "Obtuse Square Cove", "Square", "Thin", "Bone", 5 | "Exaggerated", "Triangle", "Normal Sans", "Obtuse Sans", "Perp Sans", "Flared", "Rounded" ], 6 | 7 | "weight": [ "Very Light", "Light", "Thin", "Book", "Medium", "Demi", "Bold", "Heavy", "Black", "Nord" ], 8 | 9 | "proportion": [ "Old Style", "Modern", "Even Width", "Expanded", "Condensed", "Very Expanded", 10 | "Very Condensed", "Monospaced" ], 11 | 12 | "contrast": [ "None", "Very Low", "Low", "Medium Low", "Medium", "Medium High", "High", "Very High" ], 13 | 14 | "strokeVariation": [ "Gradual/Diagonal", "Gradual/Transitional", "Gradual/Vertical", "Gradual/Horizontal", 15 | "Rapid/Vertical", "Rapid/Horizontal", "Instant/Vertical" ], 16 | 17 | "armStyle": [ "Straight Arms/Horizontal", "Straight Arms/Wedge", "Straight Arms/Vertical", 18 | "Straight Arms/Single Serif", "Straight Arms/Double Serif", "Non-Straight Arms/Horizontal", 19 | "Non-Straight Arms/Wedge", "Non-Straight Arms/Vertical", "Non-Straight Arms/Single Serif", 20 | "Non-Straight Arms/Double Serif" ], 21 | 22 | "letterform": [ "Normal/Contact", "Normal/Weighted", "Normal/Boxed", "Normal/Flattened", "Normal/Rounded", 23 | "Normal/Off Center", "Normal/Square", "Oblique/Contact", "Oblique/Weighted", "Oblique/Boxed", 24 | "Oblique/Flattened", "Oblique/Rounded", "Oblique/Off Center", "Oblique/Square" ], 25 | 26 | "midline": [ "Standard/Trimmed", "Standard/Pointed", "Standard/Serifed", "High/Trimmed", "High/Pointed", 27 | "High/Serifed", "Constant/Trimmed", "Constant/Pointed", "Constant/Serifed", "Low/Trimmed", 28 | "Low/Pointed", "Low/Serifed" ], 29 | 30 | "xHeight": [ "Constant/Small", "Constant/Standard", "Constant/Large", "Ducking/Small", "Ducking/Standard", 31 | "Ducking/Large" ] }, 32 | "tables": { 33 | "acnt": "accent attachment", 34 | "avar": "axis variation", 35 | "BASE": "baseline data", 36 | "bdat": "bitmap data", 37 | "bhed": "bitmap font header", 38 | "bloc": "bitmap location", 39 | "bsln": "baseline", 40 | "CFF ": "postscript font program (compact font format)", 41 | "cmap": "character code mapping", 42 | "cvar": "cvt variation", 43 | "cvt ": "control value", 44 | "EBDT": "embedded bitmap data", 45 | "EBLC": "embedded bitmap location data", 46 | "EBSC": "embedded bitmap scaling control", 47 | "DSIG": "digital signature", 48 | "fdsc": "font descriptor", 49 | "feat": "layout feature", 50 | "fmtx": "font metrics", 51 | "fpgm": "font program", 52 | "fvar": "font variation", 53 | "gasp": "grid-fitting and scan-conversion procedure", 54 | "GDEF": "glyph definition data", 55 | "GPOS": "glyph positioning data", 56 | "GSUB": "glyph substitution data", 57 | "glyf": "glyph outline", 58 | "gvar": "glyph variation", 59 | "hdmx": "horizontal device metrics", 60 | "head": "font header", 61 | "hhea": "horizontal header", 62 | "hmtx": "horizontal metrics", 63 | "hsty": "horizontal style", 64 | "JSTF": "justification data", 65 | "just": "justification", 66 | "kern": "kerning", 67 | "lcar": "ligature caret", 68 | "loca": "glyph location", 69 | "LTSH": "linear threshold data", 70 | "maxp": "maximum profile", 71 | "mort": "metamorphosis", 72 | "morx": "extended metamorphosis", 73 | "name": "naming table", 74 | "opbd": "optical bounds", 75 | "OS/2": "compatibility", 76 | "PCLT": "pcl 5 data", 77 | "post": "glyph name and postscript compatibility", 78 | "prep": "control value program", 79 | "prop": "properties", 80 | "trak": "tracking", 81 | "VDMX": "vertical device metrics", 82 | "VORG": "vertical origin", 83 | "vhea": "vertical header", 84 | "vmtx": "vertical metrics", 85 | "Zapf": "glyph referenc" 86 | }, 87 | 88 | "head": { 89 | "flags": [ "Baseline at y=0", 90 | "Sidebearing at x=0", 91 | "Instructions may depend on point size", 92 | "Force ppem to integer values", 93 | "Advance widths might not scale linearly", 94 | 0,0,0,0,0,0, 95 | "Font data is lossless", 96 | "Font converted", 97 | "Font optimized for ClearType™", 98 | "Last Resort font", 99 | "Reserved" ] 100 | }, 101 | 102 | "selection": [ "italic", "underscore", "negative", "outlined", "strikeout ", 103 | "bold", "regular", "use_typo_metrics", "wws", "oblique"] , 104 | 105 | "weights": [ "Ultra-light", "Extra-light", "Light", "Semi-light", "Medium", "Semi-bold", 106 | "Bold", "Extra-bold", "Ultra-bold" ], 107 | 108 | "widths": [ "Ultra-condensed", "Extra-condensed", "Condensed", "Semi-condensed", "Medium", 109 | "Semi-expanded", "Expanded", "Extra-expanded", "Ultra-expanded" ], 110 | 111 | "classes": { 112 | "No Classification": [ "No Classification" ], 113 | "OldStyle Serif": [ "NC", "IBM Rounded Legibility", "Garalde", "Venetian", "Modified Venetian", 114 | "Dutch Modern", "Dutch Traditional", "Contemporary", "Calligraphic" ], 115 | "Transitional Serif": [ "NC", "Direct Line", "Script" ], 116 | "Modern Serif": [ "NC", "Italian", "Script" ], 117 | "Clarendon Serif": [ "NC", "Clarendon", "Modern", "Traditional", "Newspaper", "Stub Serif", "Monotone", "Typewriter" ], 118 | "Slab Serif": [ "NC", "Monotone", "Humanist", "Geometric", "Swiss", "Typewriter" ], 119 | "Reserved": [], 120 | "Freeform Serif": [ "NC", "Modern" ], 121 | "Sans Serif": [ "NS", "IBM Neo-grotesque Gothic", "Humanist", "Low-x Round Geometric", "High-x Round Geometric", 122 | "Neo-grotesque Gothic", "Modified Neo-grotesque Gothic", "Typewriter Gothic", "Reserved", "Reserved", "Matrix" ], 123 | "Ornamental": [ "NC", "Engraver", "Black Letter", "Decorative", "Three Dimensional" ], 124 | "Script": [ "NC", "Uncial", "Brush Joined", "Formal Joined", "Monotone Joined", "Calligraphic", "Brush Unjoined", 125 | "Formal Unjoined", "Monotone Unjoined" ], 126 | "Reserved": [], 127 | "Symbolic": [ "NC", "Reserved", "Reserved", "Mixed Serif", "Reserved", "Reserved", "Oldstyle Serif", "Neo-grotesque Sans Serif" ] 128 | }, 129 | 130 | "nameIDs": [ "Copyright", "FontFamily", "FontSubfamily", "UID", "FullName", "Version", 131 | "PostscriptName", "Trademark", "Manufacturer", "Designer", "Description", 132 | "VendorURL", "DesignerURL", "LicenseDescription", "LicenseURL", 133 | "Reserved", "PreferredFamily", "PreferredSubfamily", "CompatibleFull", 134 | "SampleText", "PostScriptCID", "WWSFamily", "WWSSubfamily" ], 135 | "platformIDs": [ "Unicode", "Macintosh", "ISO", "Windows", "Custom" ], 136 | 137 | "encodingIDS": [ "utf8", "utf8" ], 138 | 139 | "codePageNames": [ [ "Latin 1", 140 | "Latin 2: Eastern Europe", 141 | "Cyrillic", 142 | "Greek", 143 | "Turkish", 144 | "Hebrew", 145 | "Arabic", 146 | "Windows Baltic", 147 | "Vietnamese", 148 | "Reserved for Alternate ANSI",0,0,0,0,0,0, 149 | "Thai", 150 | "JIS/Japan", 151 | "Chinese Simplified-PRC/Singapore", 152 | "Korean Wansung", 153 | "Chinese Traditional-Taiwan/Hong Kong", 154 | "Korean Johab", 155 | "Reserved for Alternate ANSI & OEM",0,0,0,0,0,0, 156 | "Macintosh Character Set (US Roman)", 157 | "OEM Character Set", 158 | "Symbol Character Set" ], 159 | [ "Reserved for OEM",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 160 | "IBM Greek", 161 | "MS-DOS Russian", 162 | "MS-DOS Nordic", 163 | "Arabic", 164 | "MS-DOS Canadian French", 165 | "Hebrew", 166 | "MS-DOS Icelandic", 167 | "MS-DOS Portuguese", 168 | "IBM Turkish", 169 | "IBM Cyrillic; primarily Russian", 170 | "Latin 2", 171 | "MS-DOS Baltic", 172 | "Greek; former 437 G", 173 | "Arabic; ASMO 708", 174 | "WE/Latin 1", 175 | "US" ] ], 176 | "codePages": { "MS-DOS Canadian French": 863, 177 | "MS-DOS Nordic": 865, 178 | "Greek": 1253, 179 | "WE/Latin 1": 850, 180 | "Korean Johab": 1361, 181 | "Arabic; ASMO 708": 708, 182 | "US": 437, 183 | "Windows Baltic": 1257, 184 | "Latin 2": 852, 185 | "MS-DOS Russian": 866, 186 | "MS-DOS Baltic": 775, 187 | "Chinese Traditional-Taiwan/Hong Kong": 950, 188 | "Vietnamese": 1258, 189 | "Korean Wansung": 949, 190 | "Hebrew": 862, 191 | "Greek; former 437 G": 737, 192 | "IBM Cyrillic; primarily Russian": 855, 193 | "MS-DOS Icelandic": 861, 194 | "Chinese Simplified-PRC/Singapore": 936, 195 | "IBM Turkish": 857, 196 | "MS-DOS Portuguese": 860, 197 | "Latin 2: Eastern Europe": 1250, 198 | "Thai": 874, 199 | "Latin 1": 1252, 200 | "IBM Greek": 869, 201 | "Turkish": 1254, 202 | "Arabic": 864, 203 | "JIS/Japan": 932, 204 | "Cyrillic": 1251 }, 205 | 206 | "unicodeBlocks": [ [ [ "0000-007F" ], 207 | [ "0080-00FF" ], 208 | [ "0100-017F" ], 209 | [ "0180-024F" ], 210 | [ "0250-02AF", "1D00-1D7F", "1D80-1DBF" ], 211 | [ "02B0-02FF", "A700-A71F" ], 212 | [ "0300-036F", "1DC0-1DFF" ], 213 | [ "0370-03FF" ], 214 | [ "2C80-2CFF" ], 215 | [ "0400-04FF", "0500-052F", "2DE0-2DFF", "A640-A69F" ], 216 | [ "0530-058F" ], 217 | [ "0590-05FF" ], 218 | [ "A500-A63F" ], 219 | [ "0600-06FF", "0750-077F" ], 220 | [ "07C0-07FF" ], 221 | [ "0900-097F" ], 222 | [ "0980-09FF" ], 223 | [ "0A00-0A7F" ], 224 | [ "0A80-0AFF" ], 225 | [ "0B00-0B7F" ], 226 | [ "0B80-0BFF" ], 227 | [ "0C00-0C7F" ], 228 | [ "0C80-0CFF" ], 229 | [ "0D00-0D7F" ], 230 | [ "0E00-0E7F" ], 231 | [ "0E80-0EFF" ], 232 | [ "10A0-10FF", "2D00-2D2F" ], 233 | [ "1B00-1B7F" ], 234 | [ "1100-11FF" ], 235 | [ "1E00-1EFF", "2C60-2C7F", "A720-A7FF" ], 236 | [ "1F00-1FFF" ], 237 | [ "2000-206F", "2E00-2E7F" ] ], 238 | [ [ "2070-209F" ], 239 | [ "20A0-20CF" ], 240 | [ "20D0-20FF" ], 241 | [ "2100-214F" ], 242 | [ "2150-218F" ], 243 | [ "2190-21FF", "27F0-27FF", "2900-297F", "2B00-2BFF" ], 244 | [ "2200-22FF", "2A00-2AFF", "27C0-27EF", "2980-29FF" ], 245 | [ "2300-23FF" ], 246 | [ "2400-243F" ], 247 | [ "2440-245F" ], 248 | [ "2460-24FF" ], 249 | [ "2500-257F" ], 250 | [ "2580-259F" ], 251 | [ "25A0-25FF" ], 252 | [ "2600-26FF" ], 253 | [ "2700-27BF" ], 254 | [ "3000-303F" ], 255 | [ "3040-309F" ], 256 | [ "30A0-30FF", "31F0-31FF" ], 257 | [ "3100-312F", "31A0-31BF" ], 258 | [ "3130-318F" ], 259 | [ "A840-A87F" ], 260 | [ "3200-32FF" ], 261 | [ "3300-33FF" ], 262 | [ "AC00-D7AF" ], 263 | [ "D800-DFFF" ], 264 | [ "10900-1091F" ], 265 | [ "4E00-9FFF", "2E80-2EFF", "2F00-2FDF", "2FF0-2FFF", "3400-4DBF", "20000-2A6DF", "3190-319F" ], 266 | [ "E000-F8FF" ], 267 | [ "31C0-31EF", "F900-FAFF", "2F800-2FA1F" ], 268 | [ "FB00-FB4F" ], 269 | [ "FB50-FDFF" ] ], 270 | [ [ "FE20-FE2F" ], 271 | [ "FE10-FE1F", "FE30-FE4F" ], 272 | [ "FE50-FE6F" ], 273 | [ "FE70-FEFF" ], 274 | [ "FF00-FFEF" ], 275 | [ "FFF0-FFFF" ], 276 | [ "0F00-0FFF" ], 277 | [ "0700-074F" ], 278 | [ "0780-07BF" ], 279 | [ "0D80-0DFF" ], 280 | [ "1000-109F" ], 281 | [ "1200-137F", "1380-139F", "2D80-2DDF" ], 282 | [ "13A0-13FF" ], 283 | [ "1400-167F" ], 284 | [ "1680-169F" ], 285 | [ "16A0-16FF" ], 286 | [ "1780-17FF", "19E0-19FF" ], 287 | [ "1800-18AF" ], 288 | [ "2800-28FF" ], 289 | [ "A000-A48F", "A490-A4CF" ], 290 | [ "1700-171F", "1720-173F", "1740-175F", "1760-177F" ], 291 | [ "10300-1032F" ], 292 | [ "10330-1034F" ], 293 | [ "10400-1044F" ], 294 | [ "1D000-1D0FF", "1D100-1D1FF", "1D200-1D24F" ], 295 | [ "1D400-1D7FF" ], 296 | [ "FF000-FFFFD", "100000-10FFFD" ], 297 | [ "FE00-FE0F", "E0100-E01EF" ], 298 | [ "E0000-E007F" ], 299 | [ "1900-194F" ], 300 | [ "1950-197F" ], 301 | [ "1980-19DF" ] ], 302 | [ [ "1A00-1A1F" ], 303 | [ "2C00-2C5F" ], 304 | [ "2D30-2D7F" ], 305 | [ "4DC0-4DFF" ], 306 | [ "A800-A82F" ], 307 | [ "10000-1007F", "10080-100FF", "10100-1013F" ], 308 | [ "10140-1018F" ], 309 | [ "10380-1039F" ], 310 | [ "103A0-103DF" ], 311 | [ "10450-1047F" ], 312 | [ "10480-104AF" ], 313 | [ "10800-1083F" ], 314 | [ "10A00-10A5F" ], 315 | [ "1D300-1D35F" ], 316 | [ "12000-123FF", "12400-1247F" ], 317 | [ "1D360-1D37F" ], 318 | [ "1B80-1BBF" ], 319 | [ "1C00-1C4F" ], 320 | [ "1C50-1C7F" ], 321 | [ "A880-A8DF" ], 322 | [ "A900-A92F" ], 323 | [ "A930-A95F" ], 324 | [ "AA00-AA5F" ], 325 | [ "10190-101CF" ], 326 | [ "101D0-101FF" ], 327 | [ "102A0-102DF", "10280-1029F", "10920-1093F" ], 328 | [ "1F030-1F09F", "1F000-1F02F" ] ] ], 329 | "unicodeRanges": { "0000-007F": "Basic Latin", 330 | "0080-00FF": "Latin-1 Supplement ", 331 | "0100-017F": "Latin Extended-A ", 332 | "0180-024F": "Latin Extended-B ", 333 | "0250-02AF": "IPA Extensions ", 334 | "1D00-1D7F": "Phonetic Extensions", 335 | "1D80-1DBF": "Phonetic Extensions Supplement ", 336 | "02B0-02FF": "Spacing Modifier Letters ", 337 | "A700-A71F": "Modifier Tone Letters", 338 | "0300-036F": "Combining Diacritical Marks", 339 | "1DC0-1DFF": "Combining Diacritical Marks Supplement ", 340 | "0370-03FF": "Greek and Coptic ", 341 | "2C80-2CFF": "Coptic ", 342 | "0400-04FF": "Cyrillic ", 343 | "0500-052F": "Cyrillic Supplement", 344 | "2DE0-2DFF": "Cyrillic Extended-A", 345 | "A640-A69F": "Cyrillic Extended-B", 346 | "0530-058F": "Armenian ", 347 | "0590-05FF": "Hebrew ", 348 | "A500-A63F": "Vai", 349 | "0600-06FF": "Arabic ", 350 | "0750-077F": "Arabic Supplement", 351 | "07C0-07FF": "NKo", 352 | "0900-097F": "Devanagari ", 353 | "0980-09FF": "Bengali", 354 | "0A00-0A7F": "Gurmukhi ", 355 | "0A80-0AFF": "Gujarati ", 356 | "0B00-0B7F": "Oriya", 357 | "0B80-0BFF": "Tamil", 358 | "0C00-0C7F": "Telugu ", 359 | "0C80-0CFF": "Kannada", 360 | "0D00-0D7F": "Malayalam", 361 | "0E00-0E7F": "Thai ", 362 | "0E80-0EFF": "Lao", 363 | "10A0-10FF": "Georgian ", 364 | "2D00-2D2F": "Georgian Supplement", 365 | "1B00-1B7F": "Balinese ", 366 | "1100-11FF": "Hangul Jamo", 367 | "1E00-1EFF": "Latin Extended Additional", 368 | "2C60-2C7F": "Latin Extended-C ", 369 | "A720-A7FF": "Latin Extended-D ", 370 | "1F00-1FFF": "Greek Extended ", 371 | "2000-206F": "General Punctuation", 372 | "2E00-2E7F": "Supplemental Punctuation ", 373 | "2070-209F": "Superscripts And Subscripts", 374 | "20A0-20CF": "Currency Symbols ", 375 | "20D0-20FF": "Combining Diacritical Marks For Symbols", 376 | "2100-214F": "Letterlike Symbols ", 377 | "2150-218F": "Number Forms ", 378 | "2190-21FF": "Arrows ", 379 | "27F0-27FF": "Supplemental Arrows-A", 380 | "2900-297F": "Supplemental Arrows-B", 381 | "2B00-2BFF": "Miscellaneous Symbols and Arrows ", 382 | "2200-22FF": "Mathematical Operators ", 383 | "2A00-2AFF": "Supplemental Mathematical Operators", 384 | "27C0-27EF": "Miscellaneous Mathematical Symbols-A ", 385 | "2980-29FF": "Miscellaneous Mathematical Symbols-B ", 386 | "2300-23FF": "Miscellaneous Technical", 387 | "2400-243F": "Control Pictures ", 388 | "2440-245F": "Optical Character Recognition", 389 | "2460-24FF": "Enclosed Alphanumerics ", 390 | "2500-257F": "Box Drawing", 391 | "2580-259F": "Block Elements ", 392 | "25A0-25FF": "Geometric Shapes ", 393 | "2600-26FF": "Miscellaneous Symbols", 394 | "2700-27BF": "Dingbats ", 395 | "3000-303F": "CJK Symbols And Punctuation", 396 | "3040-309F": "Hiragana ", 397 | "30A0-30FF": "Katakana ", 398 | "31F0-31FF": "Katakana Phonetic Extensions ", 399 | "3100-312F": "Bopomofo ", 400 | "31A0-31BF": "Bopomofo Extended", 401 | "3130-318F": "Hangul Compatibility Jamo", 402 | "A840-A87F": "Phags-pa ", 403 | "3200-32FF": "Enclosed CJK Letters And Months", 404 | "3300-33FF": "CJK Compatibility", 405 | "AC00-D7AF": "Hangul Syllables ", 406 | "D800-DFFF": "Non-Plane 0 *", 407 | "10900-1091F": "Phoenician ", 408 | "4E00-9FFF": "CJK Unified Ideographs ", 409 | "2E80-2EFF": "CJK Radicals Supplement", 410 | "2F00-2FDF": "Kangxi Radicals", 411 | "2FF0-2FFF": "Ideographic Description Characters ", 412 | "3400-4DBF": "CJK Unified Ideographs Extension A ", 413 | "20000-2A6DF": "CJK Unified Ideographs Extension B ", 414 | "3190-319F": "Kanbun ", 415 | "E000-F8FF": "Private Use Area (plane 0) ", 416 | "31C0-31EF": "CJK Strokes", 417 | "F900-FAFF": "CJK Compatibility Ideographs ", 418 | "2F800-2FA1F": "CJK Compatibility Ideographs Supplement", 419 | "FB00-FB4F": "Alphabetic Presentation Forms", 420 | "FB50-FDFF": "Arabic Presentation Forms-A", 421 | "FE20-FE2F": "Combining Half Marks ", 422 | "FE10-FE1F": "Vertical Forms ", 423 | "FE30-FE4F": "CJK Compatibility Forms", 424 | "FE50-FE6F": "Small Form Variants", 425 | "FE70-FEFF": "Arabic Presentation Forms-B", 426 | "FF00-FFEF": "Halfwidth And Fullwidth Forms", 427 | "FFF0-FFFF": "Specials ", 428 | "0F00-0FFF": "Tibetan", 429 | "0700-074F": "Syriac ", 430 | "0780-07BF": "Thaana ", 431 | "0D80-0DFF": "Sinhala", 432 | "1000-109F": "Myanmar", 433 | "1200-137F": "Ethiopic ", 434 | "1380-139F": "Ethiopic Supplement", 435 | "2D80-2DDF": "Ethiopic Extended", 436 | "13A0-13FF": "Cherokee ", 437 | "1400-167F": "Unified Canadian Aboriginal Syllabics", 438 | "1680-169F": "Ogham", 439 | "16A0-16FF": "Runic", 440 | "1780-17FF": "Khmer", 441 | "19E0-19FF": "Khmer Symbols", 442 | "1800-18AF": "Mongolian", 443 | "2800-28FF": "Braille Patterns ", 444 | "A000-A48F": "Yi Syllables ", 445 | "A490-A4CF": "Yi Radicals", 446 | "1700-171F": "Tagalog", 447 | "1720-173F": "Hanunoo", 448 | "1740-175F": "Buhid", 449 | "1760-177F": "Tagbanwa ", 450 | "10300-1032F": "Old Italic ", 451 | "10330-1034F": "Gothic ", 452 | "10400-1044F": "Deseret", 453 | "1D000-1D0FF": "Byzantine Musical Symbols", 454 | "1D100-1D1FF": "Musical Symbols", 455 | "1D200-1D24F": "Ancient Greek Musical Notation ", 456 | "1D400-1D7FF": "Mathematical Alphanumeric Symbols", 457 | "FF000-FFFFD": "Private Use (plane 15) ", 458 | "100000-10FFFD": "Private Use (plane 16) ", 459 | "FE00-FE0F": "Variation Selectors", 460 | "E0100-E01EF": "Variation Selectors Supplement ", 461 | "E0000-E007F": "Tags ", 462 | "1900-194F": "Limbu", 463 | "1950-197F": "Tai Le ", 464 | "1980-19DF": "New Tai Lue", 465 | "1A00-1A1F": "Buginese ", 466 | "2C00-2C5F": "Glagolitic ", 467 | "2D30-2D7F": "Tifinagh ", 468 | "4DC0-4DFF": "Yijing Hexagram Symbols", 469 | "A800-A82F": "Syloti Nagri ", 470 | "10000-1007F": "Linear B Syllabary ", 471 | "10080-100FF": "Linear B Ideograms ", 472 | "10100-1013F": "Aegean Numbers ", 473 | "10140-1018F": "Ancient Greek Numbers", 474 | "10380-1039F": "Ugaritic ", 475 | "103A0-103DF": "Old Persian", 476 | "10450-1047F": "Shavian", 477 | "10480-104AF": "Osmanya", 478 | "10800-1083F": "Cypriot Syllabary", 479 | "10A00-10A5F": "Kharoshthi ", 480 | "1D300-1D35F": "Tai Xuan Jing Symbols", 481 | "12000-123FF": "Cuneiform", 482 | "12400-1247F": "Cuneiform Numbers and Punctuation", 483 | "1D360-1D37F": "Counting Rod Numerals", 484 | "1B80-1BBF": "Sundanese", 485 | "1C00-1C4F": "Lepcha ", 486 | "1C50-1C7F": "Ol Chiki ", 487 | "A880-A8DF": "Saurashtra ", 488 | "A900-A92F": "Kayah Li ", 489 | "A930-A95F": "Rejang ", 490 | "AA00-AA5F": "Cham ", 491 | "10190-101CF": "Ancient Symbols", 492 | "101D0-101FF": "Phaistos Disc", 493 | "102A0-102DF": "Carian ", 494 | "10280-1029F": "Lycian ", 495 | "10920-1093F": "Lydian ", 496 | "1F030-1F09F": "Domino Tiles ", 497 | "1F000-1F02F": "Mahjong Tiles" } 498 | } --------------------------------------------------------------------------------