You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#include "readBin.jsxinc"varf=newFile(File.openDialog("Select target FONT."));f.encoding='BINARY';if(f.open("r")){alert(getPSName(f));}functiongetPSName(f){try{varot=readOfstTbl();//offsetTablevarnmTb=readTD(ot[1]);//explore nameTables f.seek(nmTb[2]);//move to name table.varnr=[];varresult="";vark=0,num=0,str="";//read name table headervarfmt=readUShort(f);//formatvarlen=readUShort(f);//countvarofst=readUShort(f);//string offsetfor(vari=0;i<len;i++){nr=[readUShort(f),//platform IDreadUShort(f),//encoding IDreadUShort(f),//language IDreadUShort(f),//name IDreadUShort(f),//lengthreadUShort(f)+ofst+nmTb[2]];//offset + name table string offset + name tables start offsetif(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();returnresult;}catch(e){alert(e)}}functionreadOfstTbl(){//to read offset tablevardt=["",0,0,0,0];vard;vara=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);//numTablesdt[2]=readBytes(f);//searchRangedt[3]=readBytes(f);//entrySelectordt[4]=readBytes(f);//rangeShiftreturndt;}functionreadTD(num){vara=0;for(j=0;j<num;j++){dat=["",0,0,0];for(i=0;i<4;i++)dat[0]+=f.readch();//tableTag identifyerdat[1]=readULong(f);//checksumdat[2]=readULong(f);//offsetdat[3]=readULong(f);//lengthif(dat[0]=="name")returndat;//in this case, no need other info and discard it.}}
0 commit comments