On Mon, 16 May 2022 08:12:54 GMT, Tomator <d...@openjdk.java.net> wrote:
>> When I used BlueJ, I found a problem with Chinese display. >> /javafx.graphics/com/sun/javafx/font/CompositeGlyphMapper.java#getGlyphCode >> may return a negative number when no font library is specified in Linux,and >> this could cause java.lang.ArrayIndexOutOfBoundsException error.So >> javafx.graphics/com/sun/prism/impl/GlyphCache.java#getCachedGlyph shou >> check the glyphCode. >> The crash demo like this: >> `import javafx.application.Application; >> import javafx.scene.Scene; >> import javafx.scene.control.Menu; >> import javafx.scene.control.MenuBar; >> import javafx.scene.control.MenuItem; >> import javafx.scene.layout.BorderPane; >> import javafx.stage.Stage; >> >> public class MenuExample extends Application { >> public static void main(String[] args) { >> launch(args); >> } >> >> @Override >> public void start(Stage primaryStage) throws Exception { >> BorderPane root = new BorderPane(); >> Scene scene = new Scene(root,200,300); >> MenuBar menubar = new MenuBar(); >> Menu FileMenu = new Menu("文本"); >> MenuItem filemenu1=new MenuItem("新建"); >> MenuItem filemenu2=new MenuItem("Save"); >> MenuItem filemenu3=new MenuItem("Exit"); >> Menu EditMenu=new Menu("Edit"); >> MenuItem EditMenu1=new MenuItem("Cut"); >> MenuItem EditMenu2=new MenuItem("Copy"); >> MenuItem EditMenu3=new MenuItem("Paste"); >> EditMenu.getItems().addAll(EditMenu1,EditMenu2,EditMenu3); >> root.setTop(menubar); >> FileMenu.getItems().addAll(filemenu1,filemenu2,filemenu3); >> menubar.getMenus().addAll(FileMenu,EditMenu); >> primaryStage.setScene(scene); >> primaryStage.setTitle("TEST"); >> primaryStage.show(); >> >> } >> } ` >> >> the error: >> `java.lang.ArrayIndexOutOfBoundsException: Index -25 out of bounds for >> length 32 >> at com.sun.prism.impl.GlyphCache.getCachedGlyph(GlyphCache.java:332) >> at com.sun.prism.impl.GlyphCache.render(GlyphCache.java:148) >> at >> com.sun.prism.impl.ps.BaseShaderGraphics.drawString(BaseShaderGraphics.java:2101) >> at com.sun.javafx.sg.prism.NGText.renderText(NGText.java:312) >> at com.sun.javafx.sg.prism.NGText.renderContent2D(NGText.java:270) >> at com.sun.javafx.sg.prism.NGShape.renderContent(NGShape.java:261) >> at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072) >> at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964) >> at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:270) >> at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:578) >> at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072) >> at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964) >> at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:270) >> at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:578) >> at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072) >> at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964) >> at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:270) >> at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:578) >> at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072) >> at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964) >> at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:270) >> at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:578) >> at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072) >> at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964) >> at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:270) >> at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:578) >> at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072) >> at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964) >> at >> com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:479) >> at >> com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:328) >> at >> com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91) >> ` > >> > > > >> > > thanks,I'll wait for the bug > @Tomator01 thank you for your interest in contributing to the OpenJFX project. > > In order for any comments that you add to this (or any other) PR to be > retained, you will need to accept the OpenJDK Terms of Use as shown above. > This is a one-time step. > > Please read the > [CONTRIBUTING](https://github.com/openjdk/jfx/blob/master/CONTRIBUTING.md) > guidelines, in particular the [Before submitting a pull > request](https://github.com/openjdk/jfx/blob/master/CONTRIBUTING.md#before-submitting-a-pull-request) > section, for steps needed to advance this pull request, including: > > * Sign and submit the OCA, then indicate that you have done so with the > `/signed` command > * Submit a bug report with a test case at > [bugreport.java.com](https://bugreport.java.com/) Hello,i have signed oca ,and pull /signed command ,so I'm just wait for OCA to pass? ------------- PR: https://git.openjdk.java.net/jfx/pull/795