Skip to content

Commit 3505421

Browse files
authored
removed unnecessary character.
1 parent 3a2854a commit 3505421

File tree

1 file changed

+73
-1
lines changed

1 file changed

+73
-1
lines changed

readPSName.jsx

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,73 @@
1-
#include "readBin.jsxinc"var f = new File(File.openDialog ("Select target FONT."));f.encoding = 'BINARY';if (f.open("r")){ alert(getPSName(f)); }function getPSName(f){ try{ var ot = readOfstTbl(); //offsetTable var nmTb = readTD(ot[1]); //explore nameTables f.seek (nmTb[2]); //move to name table. var nr = []; var result =""; var k = 0, num = 0, str = ""; //read name table header var fmt = readUShort (f); //format var len = readUShort (f); //count var ofst = readUShort (f); //string offset for (var i=0;i<len;i++){ nr = [readUShort (f), //platform ID readUShort (f), //encoding ID readUShort (f), //language ID readUShort (f), //name ID readUShort (f), //length readUShort (f) + ofst + nmTb[2]]; //offset + name table string offset + name tables start offset if (nr[3]==6) break; //ID = 6 as postscript name. } f.seek(nr[5]); //jump to strings and read it. for (k=0;k<nr[4];k++) result += f.readch(); return result; } catch(e){ alert(e) } }function readOfstTbl(){ //to read offset table var dt = ["",0,0,0,0]; var d; var a = f.readch(); if (a=="O"){ //sfntVersion, in case of "otf" dt[0] = a; for (i=0;i<3;i++) dt[0] += f.readch(); } else { //sfntVersion, incase of "ttf" dt[0] = "0x0" + a.charCodeAt(0).toString (16); for (i=0;i<3;i++) { a = f.readch(); d = a.charCodeAt(0).toString (16); if (d.length==1) d = "0" + d; dt[0] += d; } } dt[1] = readBytes(f); //numTables dt[2] = readBytes(f); //searchRange dt[3] = readBytes(f); //entrySelector dt[4] = readBytes(f); //rangeShift return dt; }function readTD(num){ var a=0; for (j=0;j<num;j++){ dat = ["",0,0,0]; for (i=0;i<4;i++) dat[0] += f.readch(); //tableTag identifyer dat[1] = readULong(f); //checksum dat[2] = readULong(f); //offset dat[3] = readULong(f); //length if (dat[0]=="name") return dat; //in this case, no need other info and discard it. } }
1+
#include "readBin.jsxinc"
2+
3+
var f = new File(File.openDialog ("Select target FONT."));
4+
f.encoding = 'BINARY';
5+
if (f.open("r")){
6+
alert(getPSName(f));
7+
}
8+
9+
function getPSName(f){
10+
try{
11+
var ot = readOfstTbl(); //offsetTable
12+
var nmTb = readTD(ot[1]); //explore nameTables
13+
f.seek (nmTb[2]); //move to name table.
14+
var nr = [];
15+
var result ="";
16+
var k = 0, num = 0, str = "";
17+
//read name table header
18+
var fmt = readUShort (f); //format
19+
var len = readUShort (f); //count
20+
var ofst = readUShort (f); //string offset
21+
for (var i=0;i<len;i++){
22+
nr = [readUShort (f), //platform ID
23+
readUShort (f), //encoding ID
24+
readUShort (f), //language ID
25+
readUShort (f), //name ID
26+
readUShort (f), //length
27+
readUShort (f) + ofst + nmTb[2]]; //offset + name table string offset + name tables start offset
28+
if (nr[3]==6) break; //ID = 6 as postscript name.
29+
}
30+
f.seek(nr[5]); //jump to strings and read it.
31+
for (k=0;k<nr[4];k++) result += f.readch();
32+
return result;
33+
}
34+
catch(e){
35+
alert(e)
36+
}
37+
}
38+
39+
function readOfstTbl(){ //to read offset table
40+
var dt = ["",0,0,0,0];
41+
var d;
42+
var a = f.readch();
43+
if (a=="O"){ //sfntVersion, in case of "otf"
44+
dt[0] = a;
45+
for (i=0;i<3;i++) dt[0] += f.readch();
46+
}
47+
else { //sfntVersion, incase of "ttf"
48+
dt[0] = "0x0" + a.charCodeAt(0).toString (16);
49+
for (i=0;i<3;i++) {
50+
a = f.readch();
51+
d = a.charCodeAt(0).toString (16);
52+
if (d.length==1) d = "0" + d;
53+
dt[0] += d;
54+
}
55+
}
56+
dt[1] = readBytes(f); //numTables
57+
dt[2] = readBytes(f); //searchRange
58+
dt[3] = readBytes(f); //entrySelector
59+
dt[4] = readBytes(f); //rangeShift
60+
return dt;
61+
}
62+
63+
function readTD(num){
64+
var a=0;
65+
for (j=0;j<num;j++){
66+
dat = ["",0,0,0];
67+
for (i=0;i<4;i++) dat[0] += f.readch(); //tableTag identifyer
68+
dat[1] = readULong(f); //checksum
69+
dat[2] = readULong(f); //offset
70+
dat[3] = readULong(f); //length
71+
if (dat[0]=="name") return dat; //in this case, no need other info and discard it.
72+
}
73+
}

0 commit comments

Comments
 (0)