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

Reply via email to