1 package org.jmol.awtjs2d; 2 3 import org.jmol.util.Font; 4 5 /** 6 * methods required by Jmol that access java.awt.Font 7 * 8 * private to org.jmol.awtjs2d 9 * 10 */ 11 12 class JSFont { 13 newFont(String fontFace, boolean isBold, boolean isItalic, float fontSize, String type)14 static Object newFont(String fontFace, boolean isBold, boolean isItalic, float fontSize, String type) { 15 // "px" are different from "pt" here. 16 // "pt" is the height of an X, ascent. 17 // "px" is the ascent + descent. 18 fontFace = (fontFace.equals("Monospaced") ? "Courier" : fontFace.startsWith("Sans") ? "Helvetica Neue, Sans-serif" : "Serif"); 19 return (isBold ? "bold " : "") 20 + (isItalic ? "italic " : "") 21 + fontSize + type + " " + fontFace; 22 } 23 24 /** 25 * @param font 26 * @param context 27 * @return the context 28 */ getFontMetrics(Font font, Object context)29 static Object getFontMetrics(Font font, Object context) { 30 /** 31 * 32 * @j2sNative 33 * 34 * if (context.font != font.font) { 35 * context.font = font.font; 36 * font.font = context.font; 37 * context._fontAscent = Math.ceil(font.fontSize); //pt, not px 38 * // the descent is actually (px - pt) 39 * // but I know of no way of getting access to the drawn height 40 * context._fontDescent = Math.ceil(font.fontSize * 0.25);//approx 41 * } 42 */ 43 { 44 } 45 return context; 46 } 47 48 /** 49 * @param context 50 * @return height of the font 51 */ getAscent(Object context)52 static int getAscent(Object context) { 53 /** 54 * 55 * @j2sNative 56 * 57 * return Math.ceil(context._fontAscent); 58 */ 59 { 60 return 0; 61 } 62 } 63 64 /** 65 * @param context 66 * @return descent of "g" 67 */ getDescent(Object context)68 static int getDescent(Object context) { 69 /** 70 * 71 * @j2sNative 72 * 73 * return Math.ceil(context._fontDescent); 74 */ 75 { 76 return 0; 77 } 78 } 79 80 /** 81 * @param font 82 * @param context 83 * @param text 84 * @return width 85 */ stringWidth(Font font, Object context, String text)86 static int stringWidth(Font font, Object context, String text) { 87 /** 88 * @j2sNative 89 * context.font = font.font; 90 * return Math.ceil(context.measureText(text).width); 91 */ 92 { 93 return 0; 94 } 95 } 96 } 97