1.1 --- a/src/share/classes/sun/font/TrueTypeFont.java Tue Mar 24 10:53:04 2009 -0700
1.2 +++ b/src/share/classes/sun/font/TrueTypeFont.java Thu Apr 02 10:16:53 2009 -0700
1.3 @@ -543,17 +543,6 @@
1.4 ByteBuffer os2_Table = getTableBuffer(os_2Tag);
1.5 setStyle(os2_Table);
1.6 setCJKSupport(os2_Table);
1.7 -
1.8 - ByteBuffer head_Table = getTableBuffer(headTag);
1.9 - int upem = -1;
1.10 - if (head_Table != null && head_Table.capacity() >= 18) {
1.11 - ShortBuffer sb = head_Table.asShortBuffer();
1.12 - upem = sb.get(9) & 0xffff;
1.13 - }
1.14 - setStrikethroughMetrics(os2_Table, upem);
1.15 -
1.16 - ByteBuffer post_Table = getTableBuffer(postTag);
1.17 - setUnderlineMetrics(post_Table, upem);
1.18 }
1.19
1.20 /* The array index corresponds to a bit offset in the TrueType
1.21 @@ -1011,8 +1000,26 @@
1.22 }
1.23
1.24 public void getStyleMetrics(float pointSize, float[] metrics, int offset) {
1.25 +
1.26 + if (ulSize == 0f && ulPos == 0f) {
1.27 +
1.28 + ByteBuffer head_Table = getTableBuffer(headTag);
1.29 + int upem = -1;
1.30 + if (head_Table != null && head_Table.capacity() >= 18) {
1.31 + ShortBuffer sb = head_Table.asShortBuffer();
1.32 + upem = sb.get(9) & 0xffff;
1.33 + }
1.34 +
1.35 + ByteBuffer os2_Table = getTableBuffer(os_2Tag);
1.36 + setStrikethroughMetrics(os2_Table, upem);
1.37 +
1.38 + ByteBuffer post_Table = getTableBuffer(postTag);
1.39 + setUnderlineMetrics(post_Table, upem);
1.40 + }
1.41 +
1.42 metrics[offset] = stPos * pointSize;
1.43 metrics[offset+1] = stSize * pointSize;
1.44 +
1.45 metrics[offset+2] = ulPos * pointSize;
1.46 metrics[offset+3] = ulSize * pointSize;
1.47 }