java.lang.IllegalStateException: Cannot find table 'loca' in the font file

java.lang.IllegalStateException: Cannot find table 'loca' in the font file.
        at asposewobfuscated.zzBK.zzYk(Unknown Source)
        at asposewobfuscated.zzBK.zzZ(Unknown Source)
        at asposewobfuscated.zzBK.zzZ(Unknown Source)
        at asposewobfuscated.zzR8.zzY(Unknown Source)
        at asposewobfuscated.zzG7.zzY(Unknown Source)
        at asposewobfuscated.zzGA.zzIJ(Unknown Source)
        at asposewobfuscated.zzF3.zzX(Unknown Source)
        at asposewobfuscated.zzFU.zzZ(Unknown Source)
        at asposewobfuscated.zzGY.zzX(Unknown Source)
        at asposewobfuscated.zzH0.endDocument(Unknown Source)
        at asposewobfuscated.zzF9.endDocument(Unknown Source)
        at com.aspose.words.zzZ6K.zzZUw(Unknown Source)
        at com.aspose.words.zz0G.zzZ(Unknown Source)
        at com.aspose.words.zzZH5.zzZ(Unknown Source)
        at com.aspose.words.Document.zzZ(Unknown Source)
        at com.aspose.words.Document.zzZ(Unknown Source)
        at com.aspose.words.Document.zzZ(Unknown Source)
        at com.aspose.words.Document.save(Unknown Source)
        at com.nexlogica.dhr.workflow.GenerateNotificationAttachment.generateAppealConfirmationAttachment(Unknown Source)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at com.documentum.bps.outbound.bof.runtime.BOFClient.invokeMethod(BOFClient.java:111)
        at com.documentum.bps.outbound.bof.runtime.BofModuleService.executeServiceOperation(BofModuleService.java:149)
        at com.documentum.bps.outbound.AbstractService.executeServiceInternal(AbstractService.java:122)
        at com.documentum.bps.outbound.AbstractService.execute(AbstractService.java:79)
        at com.documentum.bpm.services.BPSIntegrationFramework.executeService(BPSIntegrationFramework.java:260)
        at com.documentum.bpm.services.BPSIntegrationFramework.executeMethod(BPSIntegrationFramework.java:92)
        at com.documentum.bpm.services.BPSIntegrationMethod.executeMethod(BPSIntegrationMethod.java:26)
        at com.documentum.bpm.rtutil.GenericWorkflowMethod.execute(GenericWorkflowMethod.java:123)
        at com.documentum.bpm.rtutil.GenericWorkflowMethod.execute(GenericWorkflowMethod.java:290)
        at com.documentum.bpm.rtutil.GenericWorkflowMethod.execute(GenericWorkflowMethod.java:65)
        at com.documentum.mthdservlet.DfMethodRunner.runIt(Unknown Source)
        at com.documentum.mthdservlet.AMethodRunner.runAndReturnStatus(Unknown Source)
        at com.documentum.mthdservlet.DoMethod.invokeMethod(Unknown Source)
        at com.documentum.mthdservlet.DoMethod.doPost(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:696)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891)
        at org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1703)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1190)
        at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$2.completed(Nio2Endpoint.java:634)
        at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$2.completed(Nio2Endpoint.java:612)
        at org.apache.tomcat.util.net.SecureNio2Channel$1.completed(SecureNio2Channel.java:1008)
        at org.apache.tomcat.util.net.SecureNio2Channel$1.completed(SecureNio2Channel.java:936)
        at java.base/sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:129)
        at java.base/sun.nio.ch.Invoker$2.run(Invoker.java:221)
        at java.base/sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:113)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Thread.java:833)

we are using aspose-words-18.9-jdk16.jar and latest Aspose.Total.Java.lic from Aspose team

@mayuresh3187 You are using a quite old version of Aspose.Words. Please try using the latest 24.10 version and let us know if the problem still persists. If so, please attach the problematic document and code that will allow us to reproduce the problem.

GenerateNotificationAttachment.docx (18.9 KB)

issue still persists even after using aspose-words-24.9-jdk17.jar, please advise

@mayuresh3187 Unfortunately, I cannot reproduce the problem on my side. According to the provided stack trace the problem occurs upon reading some font. Could you please provide code that will allow us to reproduce the problem and the problematic font file? We will check the issue and provide you more information.

What is the jdk version to be used for using Aspose words 24.9 JAR file?

@mayuresh3187 JDK7 is used:
https://releases.aspose.com/words/java/

Please see our documentation to learn more about Aspose.Words system requirements:
https://docs.aspose.com/words/java/system-requirements/

will it work with Redhat OpenJDK jdk-17.0.8?

@mayuresh3187 Yes, it will work with OpenJDK jdk-17.0.8.

I have attached fonts folder from linux host for your reference.
fonts.zip (8.8 MB)

Also we are using linux OS version- 5.14.0-284.30.1.el9_2.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Aug 25 09:13:12 EDT 2023 x86_64 x86_64 x86_64 GNU/Linux to run the java code to generate PDF using ASPOSE words JAVA JAR file. Will it work with this?

@mayuresh3187 I have tested with your fonts on my side and everything works fine. I will ask my colleagues to test on their side.

did you test it on the same OS( Linux RHEL version) ?

Also is it possible for you to join Microsoft teams meeting to troubleshoot this further? IF yes, please share the convenient time and your email ID

@mayuresh3187 I have tested on Windows and on Debian Linux. Ew will check in other environments and provide you more information.

@alexey.noskov do you have any updates on this? This is a time sensitive issue for us.
We would like to know whether this works on RHEL 7.x version or not.

@mayuresh3187 I have asked our Java team to take a look at this shortly. Please accept our apologies for your inconvenience.

@mayuresh3187,

In some versions of Linux, you need to manually specify the path to the required fonts. In this case, try to use the following:

FontSettings fontSettings = new FontSettings();
fontSettings.setFontsFolder("path/to/fonts", true);
...
document.setFontSettings(fontSettings);
...