OpenJDK / portola / portola
changeset 2693:f87942d1edba
6753173: No need to read all the TrueType 'post' table to get underline info
Reviewed-by: igor, jgodinez
author | prr |
---|---|
date | Thu, 02 Apr 2009 10:16:53 -0700 |
parents | f5bcb8ee6555 |
children | ab517576696d |
files | jdk/src/share/classes/sun/font/TrueTypeFont.java |
diffstat | 1 files changed, 18 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/jdk/src/share/classes/sun/font/TrueTypeFont.java Tue Mar 24 10:53:04 2009 -0700 +++ b/jdk/src/share/classes/sun/font/TrueTypeFont.java Thu Apr 02 10:16:53 2009 -0700 @@ -543,17 +543,6 @@ ByteBuffer os2_Table = getTableBuffer(os_2Tag); setStyle(os2_Table); setCJKSupport(os2_Table); - - ByteBuffer head_Table = getTableBuffer(headTag); - int upem = -1; - if (head_Table != null && head_Table.capacity() >= 18) { - ShortBuffer sb = head_Table.asShortBuffer(); - upem = sb.get(9) & 0xffff; - } - setStrikethroughMetrics(os2_Table, upem); - - ByteBuffer post_Table = getTableBuffer(postTag); - setUnderlineMetrics(post_Table, upem); } /* The array index corresponds to a bit offset in the TrueType @@ -1011,8 +1000,26 @@ } public void getStyleMetrics(float pointSize, float[] metrics, int offset) { + + if (ulSize == 0f && ulPos == 0f) { + + ByteBuffer head_Table = getTableBuffer(headTag); + int upem = -1; + if (head_Table != null && head_Table.capacity() >= 18) { + ShortBuffer sb = head_Table.asShortBuffer(); + upem = sb.get(9) & 0xffff; + } + + ByteBuffer os2_Table = getTableBuffer(os_2Tag); + setStrikethroughMetrics(os2_Table, upem); + + ByteBuffer post_Table = getTableBuffer(postTag); + setUnderlineMetrics(post_Table, upem); + } + metrics[offset] = stPos * pointSize; metrics[offset+1] = stSize * pointSize; + metrics[offset+2] = ulPos * pointSize; metrics[offset+3] = ulSize * pointSize; }