Rev 16722 | Rev 16844 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 16722 | Rev 16834 | ||
---|---|---|---|
Line 726... | Line 726... | ||
726 | 3=xyoffset |
726 | 3=xyoffset |
727 | 4=centered |
727 | 4=centered |
728 | */ |
728 | */ |
729 | fprintf(js_include_file,"\n/* draw sub sup imitation in canvas */\ |
729 | fprintf(js_include_file,"\n/* draw sub sup imitation in canvas */\ |
730 | function draw_subsup(ctx,x,y,txt,use_offset){\ |
730 | function draw_subsup(ctx,x,y,txt,use_offset){\ |
- | 731 | var fnt = ctx.font;\ |
|
- | 732 | var S = fnt.replace(/[A-Za-z]/g, '');\ |
|
- | 733 | var s = 0.8*S;\ |
|
- | 734 | var px;if(fnt.indexOf('px')>0){px = 'px';}else{if(fnt.indexOf('em')>0){px = 'em';}else{px = 'pt';}};\ |
|
731 | var C;var c;var len = txt.length;var baseline = 'middle';var space = 0;ctx.save();var subsup=0;\ |
735 | var C;var c;var len = txt.length;var baseline = 'middle';var space = 0;ctx.save();var subsup=0;\ |
732 | var m = 0.4*(ctx.measureText(txt).width);\ |
736 | var m = 0.4*(ctx.measureText(txt).width);\ |
733 | var h = ctx.measureText('M').width;\ |
737 | var h = ctx.measureText('M').width;\ |
734 | switch(use_offset){\ |
738 | switch(use_offset){\ |
735 | case 0:break;\ |
739 | case 0:break;\ |
Line 737... | Line 741... | ||
737 | case 2:x=x+h;break;\ |
741 | case 2:x=x+h;break;\ |
738 | case 3:x=x+h;y=y-h;;break;\ |
742 | case 3:x=x+h;y=y-h;;break;\ |
739 | case 4:x=x-m;break;\ |
743 | case 4:x=x-m;break;\ |
740 | default:break;\ |
744 | default:break;\ |
741 | };\ |
745 | };\ |
742 | var S = parseInt(ctx.font) || 10;var s = 0.8*(parseInt(ctx.font)) || 8;\ |
- | |
743 | ctx.font = S+ |
746 | ctx.font = S+px+' Helvetica';ctx.textBaseline = baseline;\ |
744 | for( c = 0 ; c < len ;c++){\ |
747 | for( c = 0 ; c < len ;c++){\ |
745 | C = txt.charAt(c);space = 0;\ |
748 | C = txt.charAt(c);space = 0;\ |
746 | if(C == '_'){ctx.font = s+ |
749 | if(C == '_'){ctx.font = s+px+' Helvetica';subsup = 1;c++;space = 3;baseline='top';C = txt.charAt(c);}\ |
747 | else\ |
750 | else\ |
748 | if(C == '^'){ctx.font = s+ |
751 | if(C == '^'){ctx.font = s+px+' Helvetica';subsup = 1;c++;space = 3;baseline='bottom';C = txt.charAt(c);}\ |
749 | else\ |
752 | else\ |
750 | if(C == ' '){ctx.font = S+ |
753 | if(C == ' '){ctx.font = S+px+' Helvetica';if(subsup == 1){space = 0.6*s - (ctx.measureText('M').width);subsup = 0;};baseline = 'middle';}\ |
751 | else\ |
754 | else\ |
752 | if(C >= '0' && C <= '9'){ctx.font = s+'px Helvetica';}\ |
755 | if(C >= '0' && C <= '9'){ctx.font = s+'px Helvetica';}\ |
753 | else{ctx.font = S+ |
756 | else{ctx.font = S+px+' Helvetica';};\ |
754 | ctx.textBaseline = baseline;ctx.fillText(C,x,y);x = space + x + ctx.measureText(C).width;\ |
757 | ctx.textBaseline = baseline;ctx.fillText(C,x,y);x = space + x + ctx.measureText(C).width;\ |
755 | };\ |
758 | };\ |
756 | ctx.stroke();\ |
759 | ctx.stroke();\ |
757 | ctx.restore();\ |
760 | ctx.restore();\ |
758 | return;\ |
761 | return;\ |