Modify

Opened 7 years ago

Closed 5 years ago

#16764 closed defect (othersoftware)

Tamil font not displaying in Tags /membership

Reported by: mahir78@… Owned by: mahir78@…
Priority: normal Milestone:
Component: Core Version: latest
Keywords: template_report i18n india tamil webstart javabug Cc:

Description (last modified by Don-vip)

What steps will reproduce the problem?

  1. In name:ta attribute, shows square boxes instead of tamil characters

What is the expected result?

What happens instead?

Please provide any additional information below. Attach a screenshot if possible.

Tag not showing Tamil

another file

URL:https://josm.openstreetmap.de/svn/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2018-08-22 19:44:25 +0200 (Wed, 22 Aug 2018)
Build-Date:2018-08-22 17:46:33
Revision:14178
Relative:URL: ^/trunk

Identification: JOSM/1.5 (14178 en) Windows 7 64-Bit
OS Build number: Windows 7 Professional (7601)
Memory Usage: 247 MB / 247 MB (91 MB allocated, but free)
Java version: 1.8.0_181-b13, Oracle Corporation, Java HotSpot(TM) Client VM
Screen: \Display0 1366x768
Maximum Screen Size: 1366x768
VM arguments: [-Djava.security.manager, -Djava.security.policy=file:<java.home>\lib\security\javaws.policy, -DtrustProxy=true, -Djnlpx.home=<java.home>\bin, -Djnlpx.origFilenameArg=%UserProfile%\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\56\1ee8cfb8-62631c7b, -Djnlpx.remove=false, -Djava.util.Arrays.useLegacyMergeSort=true, -Djnlpx.splashport=53852, -Djnlp.application.href=https://josm.openstreetmap.de/download/josm.jnlp, -Djnlpx.jvm=<java.home>\bin\javaw.exe]
Dataset consistency test: No problems found

Plugins:
+ ColorPlugin (1511895663)
+ DirectDownload (34593)
+ buildings_tools (34572)

Tagging presets:
+ http://zibi.openstreetmap.org.pl/kendzi/k/Simple3dPreset/s3db-preset.zip
+ https://josm.openstreetmap.de/josmfile?page=Presets/Access_Mapping_Indonesia&zip=1
+ https://josm.openstreetmap.de/josmfile?page=Presets/Bus_lanes&zip=1
+ https://josm.openstreetmap.de/josmfile?page=Presets/Addr2&zip=1

Map paint styles:
- https://josm.openstreetmap.de/josmfile?page=Styles/Schools&zip=1
+ https://github.com/GlassOceanos/indoor-JOSM-style/archive/master.zip
+ https://josm.openstreetmap.de/josmfile?page=Styles/ColourTag&zip=1

Last errors/warnings:
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: Unable to convert property color to type class java.awt.Color: found         of type class java.lang.String!

Change History (25)

comment:1 by Don-vip, 7 years ago

Priority: blockernormal

comment:2 by Don-vip, 7 years ago

Owner: changed from team to mahir78@…

Can you please attach a screenshot?

by mahir78@…, 7 years ago

Attachment: Tamil-box.jpg added

Tag not showing Tamil

by mahir78@…, 7 years ago

Attachment: Tamil-box2.jpg added

another file

comment:3 by anonymous, 7 years ago

It seems Tamil language files are missing? I started translating in launchpad.

in reply to:  3 comment:4 by stoecker, 7 years ago

Replying to anonym:

It seems Tamil language files are missing? I started translating in launchpad.

That's appreciated and please continue, but unrelated to this issue.

You're missing somehow the required fonts to display the characters. Java is sometimes a bit picky regarding fonts.

comment:5 by Don-vip, 7 years ago

Description: modified (diff)

comment:6 by Don-vip, 7 years ago

Translations are included in JOSM once they reach 2000 translated strings in core. Please continue and bring in more people to help you, we'll add this new language to JOSM with great pleasure!

comment:7 by Don-vip, 7 years ago

Keywords: i18n india tamil added

comment:8 by Don-vip, 7 years ago

Keywords: webstart added

On Windows 10 it works fine when running JOSM from Eclipse but I can reproduce the issue when using WebStart.

comment:9 by Don-vip, 7 years ago

We tune Java fonts before AWT is initialized. In this case I have the intuition we attempt to tune fonts while AWT has already been initialized by WebStart.

This makes WebStart run in debug mode, waiting for a connection from a debugger (Eclipse):

set JAVA_TOOL_OPTIONS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9988
set JAVAWS_TRACE_NATIVE=1
javaws https://josm.openstreetmap.de/download/josm-latest.jnlp

It works and allows me to add a breakpoint where AWT initializes the font configuration:

First run, with the Java Console enabled in Java Control Panel:

	sun.awt.windows.WFontConfiguration(sun.awt.FontConfiguration).findFontConfigFile() line: not available	
	sun.awt.windows.WFontConfiguration(sun.awt.FontConfiguration).<init>(sun.font.SunFontManager) line: not available	
	sun.awt.windows.WFontConfiguration.<init>(sun.font.SunFontManager) line: not available	
	sun.awt.Win32FontManager.createFontConfiguration() line: not available	
	sun.font.SunFontManager$2.run() line: not available	
	java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
	sun.awt.Win32FontManager(sun.font.SunFontManager).<init>() line: not available	
	sun.awt.Win32FontManager.<init>() line: not available	
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.lang.reflect.Constructor<?>, java.lang.Object[]) line: not available [native method]	
	sun.reflect.NativeConstructorAccessorImpl.newInstance(java.lang.Object[]) line: not available	
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(java.lang.Object[]) line: not available	
	java.lang.reflect.Constructor<T>.newInstance(java.lang.Object...) line: not available	
	java.lang.Class<T>.newInstance() line: not available	
	sun.font.FontManagerFactory$1.run() line: not available	
	java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
	sun.font.FontManagerFactory.getInstance() line: not available	
	java.awt.Font.getFont2D() line: not available	
	java.awt.Font.access$000(java.awt.Font) line: not available	
	java.awt.Font$FontAccessImpl.getFont2D(java.awt.Font) line: not available	
	sun.font.FontUtilities.getFont2D(java.awt.Font) line: not available	
	sun.font.FontUtilities.fontSupportsDefaultEncoding(java.awt.Font) line: not available	
	com.sun.java.swing.plaf.windows.WindowsLookAndFeel$WindowsFontProperty.configureValue(java.lang.Object) line: not available	
	com.sun.java.swing.plaf.windows.WindowsLookAndFeel$WindowsFontProperty(com.sun.java.swing.plaf.windows.DesktopProperty).createValue(javax.swing.UIDefaults) line: not available	
	javax.swing.UIDefaults.getFromHashtable(java.lang.Object) line: not available	
	javax.swing.UIDefaults.get(java.lang.Object) line: not available	
	javax.swing.MultiUIDefaults.get(java.lang.Object) line: not available	
	javax.swing.MultiUIDefaults(javax.swing.UIDefaults).getFont(java.lang.Object) line: not available	
	javax.swing.UIManager.getFont(java.lang.Object) line: not available	
	javax.swing.LookAndFeel.installColorsAndFont(javax.swing.JComponent, java.lang.String, java.lang.String, java.lang.String) line: not available	
	javax.swing.plaf.basic.BasicPanelUI.installDefaults(javax.swing.JPanel) line: not available	
	javax.swing.plaf.basic.BasicPanelUI.installUI(javax.swing.JComponent) line: not available	
	javax.swing.JPanel(javax.swing.JComponent).setUI(javax.swing.plaf.ComponentUI) line: not available	
	javax.swing.JPanel.setUI(javax.swing.plaf.PanelUI) line: not available	
	javax.swing.JPanel.updateUI() line: not available	
	javax.swing.JPanel.<init>(java.awt.LayoutManager, boolean) line: not available	
	javax.swing.JPanel.<init>(boolean) line: not available	
	javax.swing.JPanel.<init>() line: not available	
	javax.swing.JRootPane.createGlassPane() line: not available	
	javax.swing.JRootPane.<init>() line: not available	
	com.sun.deploy.uitoolkit.impl.awt.ui.SwingConsoleWindow(javax.swing.JFrame).createRootPane() line: not available	
	com.sun.deploy.uitoolkit.impl.awt.ui.SwingConsoleWindow(javax.swing.JFrame).frameInit() line: not available	
	com.sun.deploy.uitoolkit.impl.awt.ui.SwingConsoleWindow(javax.swing.JFrame).<init>(java.lang.String) line: not available	
	com.sun.deploy.uitoolkit.impl.awt.ui.SwingConsoleWindow.<init>(com.sun.deploy.uitoolkit.ui.ConsoleController) line: not available	
	com.sun.deploy.uitoolkit.impl.awt.ui.SwingConsoleWindow$1.run() line: not available	
	java.awt.event.InvocationEvent.dispatch() line: not available	
	java.awt.EventQueue.dispatchEventImpl(java.awt.AWTEvent, java.lang.Object) line: not available	
	java.awt.EventQueue.access$500(java.awt.EventQueue, java.awt.AWTEvent, java.lang.Object) line: not available	
	java.awt.EventQueue$3.run() line: not available	
	java.awt.EventQueue$3.run() line: not available	
	java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>, java.security.AccessControlContext) line: not available [native method]	
	java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(java.security.PrivilegedAction<T>, java.security.AccessControlContext, java.security.AccessControlContext) line: not available	
	java.awt.EventQueue.dispatchEvent(java.awt.AWTEvent) line: not available	
	java.awt.EventDispatchThread.pumpOneEventForFilters(int) line: not available	
	java.awt.EventDispatchThread.pumpEventsForFilter(int, java.awt.Conditional, java.awt.EventFilter) line: not available	
	java.awt.EventDispatchThread.pumpEventsForHierarchy(int, java.awt.Conditional, java.awt.Component) line: not available	
	java.awt.EventDispatchThread.pumpEvents(int, java.awt.Conditional) line: not available	
	java.awt.EventDispatchThread.pumpEvents(java.awt.Conditional) line: not available	
	java.awt.EventDispatchThread.run() line: not available	

Second run, with the Java Console disabled:

	sun.awt.windows.WFontConfiguration(sun.awt.FontConfiguration).findFontConfigFile() line: not available
	sun.awt.windows.WFontConfiguration(sun.awt.FontConfiguration).<init>(sun.font.SunFontManager) line: not available	
	sun.awt.windows.WFontConfiguration.<init>(sun.font.SunFontManager) line: not available	
	sun.awt.Win32FontManager.createFontConfiguration() line: not available	
	sun.font.SunFontManager$2.run() line: not available	
	java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
	sun.awt.Win32FontManager(sun.font.SunFontManager).<init>() line: not available	
	sun.awt.Win32FontManager.<init>() line: not available	
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.lang.reflect.Constructor<?>, java.lang.Object[]) line: not available [native method]	
	sun.reflect.NativeConstructorAccessorImpl.newInstance(java.lang.Object[]) line: not available	
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(java.lang.Object[]) line: not available	
	java.lang.reflect.Constructor<T>.newInstance(java.lang.Object...) line: not available	
	java.lang.Class<T>.newInstance() line: not available	
	sun.font.FontManagerFactory$1.run() line: not available	
	java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
	sun.font.FontManagerFactory.getInstance() line: not available	
	java.awt.Font.getFont2D() line: not available	
	java.awt.Font.access$000(java.awt.Font) line: not available	
	java.awt.Font$FontAccessImpl.getFont2D(java.awt.Font) line: not available	
	sun.font.FontUtilities.getFont2D(java.awt.Font) line: not available	
	sun.font.FontUtilities.fontSupportsDefaultEncoding(java.awt.Font) line: not available	
	com.sun.java.swing.plaf.windows.WindowsLookAndFeel$WindowsFontProperty.configureValue(java.lang.Object) line: not available	
	com.sun.java.swing.plaf.windows.WindowsLookAndFeel$WindowsFontProperty(com.sun.java.swing.plaf.windows.DesktopProperty).createValue(javax.swing.UIDefaults) line: not available	
	javax.swing.UIDefaults.getFromHashtable(java.lang.Object) line: not available	
	javax.swing.UIDefaults.get(java.lang.Object) line: not available	
	javax.swing.MultiUIDefaults.get(java.lang.Object) line: not available	
	javax.swing.MultiUIDefaults(javax.swing.UIDefaults).getFont(java.lang.Object) line: not available	
	javax.swing.UIManager.getFont(java.lang.Object) line: not available	
	javax.swing.LookAndFeel.installColorsAndFont(javax.swing.JComponent, java.lang.String, java.lang.String, java.lang.String) line: not available	
	javax.swing.plaf.basic.BasicPanelUI.installDefaults(javax.swing.JPanel) line: not available	
	javax.swing.plaf.basic.BasicPanelUI.installUI(javax.swing.JComponent) line: not available	
	javax.swing.JPanel(javax.swing.JComponent).setUI(javax.swing.plaf.ComponentUI) line: not available	
	javax.swing.JPanel.setUI(javax.swing.plaf.PanelUI) line: not available	
	javax.swing.JPanel.updateUI() line: not available	
	javax.swing.JPanel.<init>(java.awt.LayoutManager, boolean) line: not available	
	javax.swing.JPanel.<init>(boolean) line: not available	
	javax.swing.JPanel.<init>() line: not available	
	com.sun.deploy.ui.DialogHelper.getContentPane() line: not available	
	com.sun.deploy.ui.ProgressDialog(com.sun.deploy.ui.DialogTemplate).setProgressContent(java.lang.String, java.lang.String, java.lang.String, boolean, int) line: not available	
	com.sun.deploy.ui.ProgressDialog.<init>(com.sun.deploy.ui.AppInfo, java.awt.Component, java.lang.String, java.lang.String, boolean) line: not available	
	com.sun.deploy.ui.UIFactory$13.execute() line: not available	
	com.sun.javaws.ui.JavawsSysRun.delegate(com.sun.deploy.util.DeploySysAction) line: not available	
	com.sun.deploy.util.DeploySysRun.execute(com.sun.deploy.util.DeploySysAction) line: not available	
	com.sun.deploy.ui.UIFactory.createProgressDialog(com.sun.deploy.ui.AppInfo, java.awt.Component, java.lang.String, java.lang.String, boolean) line: not available	
	com.sun.deploy.uitoolkit.impl.awt.ui.DownloadWindow.lazyInitializeIfNeeded() line: not available	
	com.sun.deploy.uitoolkit.impl.awt.ui.DownloadWindow.access$900(com.sun.deploy.uitoolkit.impl.awt.ui.DownloadWindow) line: not available	
	com.sun.deploy.uitoolkit.impl.awt.ui.DownloadWindow$12.run() line: not available	
	java.awt.event.InvocationEvent.dispatch() line: not available	
	java.awt.EventQueue.dispatchEventImpl(java.awt.AWTEvent, java.lang.Object) line: not available	
	java.awt.EventQueue.access$500(java.awt.EventQueue, java.awt.AWTEvent, java.lang.Object) line: not available	
	java.awt.EventQueue$3.run() line: not available	
	java.awt.EventQueue$3.run() line: not available	
	java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>, java.security.AccessControlContext) line: not available [native method]	
	java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(java.security.PrivilegedAction<T>, java.security.AccessControlContext, java.security.AccessControlContext) line: not available	
	java.awt.EventQueue.dispatchEvent(java.awt.AWTEvent) line: not available	
	java.awt.EventDispatchThread.pumpOneEventForFilters(int) line: not available	
	java.awt.EventDispatchThread.pumpEventsForFilter(int, java.awt.Conditional, java.awt.EventFilter) line: not available	
	java.awt.EventDispatchThread.pumpEventsForHierarchy(int, java.awt.Conditional, java.awt.Component) line: not available	
	java.awt.EventDispatchThread.pumpEvents(int, java.awt.Conditional) line: not available	
	java.awt.EventDispatchThread.pumpEvents(java.awt.Conditional) line: not available	
	java.awt.EventDispatchThread.run() line: not available	

comment:10 by Don-vip, 7 years ago

Interestingly, it display something with Java 10 + WebStart. Maybe because a new font "Tunga" has been added for Kannada in the default fontconfig.properties.src? I don't know if it's proper tamil letters? I have the same display with Java 8 run from Eclipse:


by Don-vip, 7 years ago

Attachment: java_tamil.png added

comment:11 by stoecker, 7 years ago

@mahir: Can you please give a specific node/way by id and make a screen-shot how it looks correctly (displayed outside JOSM, e.g. in webbrowser).

by mahir78@…, 7 years ago

Attachment: pattukkottai.png added

by mahir78@…, 7 years ago

Attachment: josm-pattukkottai.png added

JOSM

comment:12 by anonymous, 7 years ago

https://www.openstreetmap.org/edit#map=17/10.41500/79.32147 Please find the two images as requested. one from iD and another JOSM.

JOSM: JOSM Correct:

Last edited 7 years ago by stoecker (previous) (diff)

by Don-vip, 7 years ago

Attachment: java_tamil_2.png added

comment:13 by Don-vip, 7 years ago

OK thanks, this is what I got. All the same except the third character. Is it a variant?


comment:14 by Mahir, 7 years ago

still not good. ligature issue still there. Can you assign a seperate unicode font for tamil?

by stoecker, 7 years ago

Attachment: openSUSE.png added

Same display for openSUSE Linux

comment:15 by stoecker, 7 years ago

As reference. This is what it looks like on my openSUSE Linux:

Same display for openSUSE Linux

Last edited 7 years ago by stoecker (previous) (diff)

by simon04, 5 years ago

Attachment: 2020-08-29-095207.png added

comment:16 by simon04, 5 years ago

https://www.openstreetmap.org/node/5302919561 – பட்டுக்கோட்டை

Using Java 14 on Windows:

Relative:URL: ^/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2020-08-28 22:38:26 +0200 (Fri, 28 Aug 2020)
Revision:16952
Build-Date:2020-08-29 01:30:50
URL:https://josm.openstreetmap.de/svn/trunk

Identification: JOSM/1.5 (16952 en_GB) Windows 10 64-Bit
OS Build number: Windows 10 Pro 2004 (19041)
Memory Usage: 165 MB / 2046 MB (36 MB allocated, but free)
Java version: 14.0.2+12, AdoptOpenJDK, OpenJDK 64-Bit Server VM
Look and Feel: com.sun.java.swing.plaf.windows.WindowsLookAndFeel
Screen: \Display0 2880x1800 (scaling 1.0x1.0)
Maximum Screen Size: 2880x1800
Best cursor sizes: 16x16 -> 32x32, 32x32 -> 32x32
Dataset consistency test: No problems found

comment:17 by stoecker, 5 years ago

Keywords: javabug added
Resolution: othersoftware
Status: newclosed

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.