[OpenJDK 2D-Dev] RFR: (JDK-8068619) - remove internal layout function to match ICU and harfbuzz

Steven Loomis steven.loomis at oracle.com
Thu Mar 5 23:28:16 UTC 2015


Bug:https://bugs.openjdk.java.net/browse/JDK-8068619
webrev:http://cr.openjdk.java.net/~srl/8068619/webrev.3/

No change from before, just using cr.openjdk.java.net to host

NB ICU (and Harfbuzz) have already applied this change.
-s

On 2/26/2015 11:18 AM, Steven Loomis wrote:
> Should be a fairly simple request, deletes a function (unused by the 
> JDK) which was removed from ICU and harfbuzz for security purposes.
> cc: to the harfbuzz-dev list, I am requesting to land this in jdk9 
> first as it is not strictly harfbuzz related.
>
> To be removed:
>
>     virtual const void *LEFontInstance::getFontTable(LETag tableTag) 
> const = 0;
>
> This version returns the address of memory without any size indication.
>
> Rationale is for syncup with ICU and with Harfbuzz's version of this API.
> The version used by the JDK takes a size_t length.
> Again this function is NOT called  anywhere in the JDK, and is 
> internal as far as JDK's API goes.
>
>
> Bug:https://bugs.openjdk.java.net/browse/JDK-8068619
>
> cr.openjdk.java.net locked me out after one successful post.  So the 
> main .h change  is at this URL: 
> http://cr.openjdk.java.net/~srl/8068619/webrev.0/
>
> And the complete patch ( webrev.2) is below.. I will repost it to cr 
> once cr lets me back in.
>
> ------------------
>
> --- 
> old/jdk/src/java.desktop/share/native/libfontmanager/FontInstanceAdapter.cpp 
> 2015-02-26 11:12:45.113980779 -0800
> +++ 
> new/jdk/src/java.desktop/share/native/libfontmanager/FontInstanceAdapter.cpp 
> 2015-02-26 11:12:44.974981686 -0800
> @@ -67,12 +67,6 @@
>  };
>
>
> -const void *FontInstanceAdapter::getFontTable(LETag tableTag) const
> -{
> -  size_t ignored = 0;
> -  return getFontTable(tableTag, ignored);
> -}
> -
>  static const LETag cacheMap[LAYOUTCACHE_ENTRIES] = {
>    GPOS_TAG, GDEF_TAG, GSUB_TAG, MORT_TAG, MORX_TAG, KERN_TAG
>  };
> --- 
> old/jdk/src/java.desktop/share/native/libfontmanager/FontInstanceAdapter.h 
> 2015-02-26 11:12:45.548977941 -0800
> +++ 
> new/jdk/src/java.desktop/share/native/libfontmanager/FontInstanceAdapter.h 
> 2015-02-26 11:12:45.394978946 -0800
> @@ -85,7 +85,6 @@
>
>      // tables are cached with the native font scaler data
>      // only supports gsub, gpos, gdef, mort tables at present
> -    virtual const void *getFontTable(LETag tableTag) const;
>      virtual const void *getFontTable(LETag tableTag, size_t &len) const;
>
>      virtual void *getKernPairs() const {
> --- 
> old/jdk/src/java.desktop/share/native/libfontmanager/layout/LEFontInstance.h 
> 2015-02-26 11:12:46.042974718 -0800
> +++ 
> new/jdk/src/java.desktop/share/native/libfontmanager/layout/LEFontInstance.h 
> 2015-02-26 11:12:45.881975768 -0800
> @@ -181,28 +181,6 @@
>       *
>       * Subclasses which represent composite fonts should always 
> return <code>NULL</code>.
>       *
> -     * Note that implementing this function does not allow for range 
> checking.
> -     * Subclasses that desire the safety of range checking must 
> implement the
> -     * variation which has a length parameter.
> -     *
> -     * @param tableTag - the four byte table tag. (e.g. 'cmap')
> -     *
> -     * @return the address of the table in memory, or <code>NULL</code>
> -     *         if the table doesn't exist.
> -     *
> -     * @stable ICU 2.8
> -     */
> -    virtual const void *getFontTable(LETag tableTag) const = 0;
> -
> -    /**
> -     * This method reads a table from the font. Note that in general,
> -     * it only makes sense to call this method on an 
> <code>LEFontInstance</code>
> -     * which represents a physical font - i.e. one which has been 
> returned by
> -     * <code>getSubFont()</code>. This is because each subfont in a 
> composite font
> -     * will have different tables, and there's no way to know which 
> subfont to access.
> -     *
> -     * Subclasses which represent composite fonts should always 
> return <code>NULL</code>.
> -     *
>       * This version sets a length, for range checking.
>       * Note that range checking can only be accomplished if this 
> function is
>       * implemented in subclasses.
> @@ -213,7 +191,7 @@
>       *         if the table doesn't exist.
>       * @internal
>       */
> -    virtual const void* getFontTable(LETag tableTag, size_t &length) 
> const { length=-1; return getFontTable(tableTag); } /* -1 = unknown 
> length */
> +    virtual const void* getFontTable(LETag tableTag, size_t &length) 
> const = 0;
>
>      virtual void *getKernPairs() const = 0;
>      virtual void  setKernPairs(void *pairs) const = 0;




More information about the 2d-dev mailing list