Matthias Reischenbacher commented on FOP-2704:

Just to clarify: The <complex-scripts> configuration or -nocs command line 
option will work, if the fonts are declared in the FOP configuration file. When 
using the font auto detection the Roboto font will not work, because the 
"advanced" font features are turned on by default (see FontInfoFinder.find() 
method and the hardcoded "boolean useAdvanced = true;" variable). We will have 
to change that eventually, because the user agent setting is completely ignored 
{quote}This is a workaround disables too many font features. What would mean to 
support the "coverage set class table" ?
Good question, hopefully some of the font experts can answer that. :)

> Google fonts Roboto font (updated 2017) UnsupportedOperationException: 
> coverage set class table not yet supported
> -----------------------------------------------------------------------------------------------------------------
>                 Key: FOP-2704
>                 URL: https://issues.apache.org/jira/browse/FOP-2704
>             Project: FOP
>          Issue Type: Bug
>          Components: font/opentype
>    Affects Versions: 2.1, 2.2
>            Reporter: Dan Caprioara
>            Priority: Major
>         Attachments: Roboto-Regular.ttf, Roboto-Thin.ttf
> Steps:
> # Download the Roboto TTF font from Google Fonts. 
> # Create a configuration file with a triplet pointing to the "roboto-regular" 
> or "roboto-thin" TTF file.
> You get:
> {code}
> java.lang.UnsupportedOperationException: coverage set class table not yet 
> supported
>       at 
> org.apache.fop.complexscripts.fonts.GlyphClassTable$CoverageSetClassTable.<init>(GlyphClassTable.java:262)
>       at 
> org.apache.fop.complexscripts.fonts.GlyphClassTable.createClassTable(GlyphClassTable.java:88)
>       at 
> org.apache.fop.complexscripts.fonts.OTFAdvancedTypographicTableReader_Original.readGDEFMarkGlyphsTableFormat1(OTFAdvancedTypographicTableReader_Original.java:3344)
>       at 
> org.apache.fop.complexscripts.fonts.OTFAdvancedTypographicTableReader.readGDEFMarkGlyphsTableFormat1(OTFAdvancedTypographicTableReader.java:69)
>       at 
> org.apache.fop.complexscripts.fonts.OTFAdvancedTypographicTableReader_Original.readGDEFMarkGlyphsTable(OTFAdvancedTypographicTableReader_Original.java:3357)
>       at 
> org.apache.fop.complexscripts.fonts.OTFAdvancedTypographicTableReader_Original.readGDEF(OTFAdvancedTypographicTableReader_Original.java:3427)
>       at 
> org.apache.fop.complexscripts.fonts.OTFAdvancedTypographicTableReader_Original.readAll(OTFAdvancedTypographicTableReader_Original.java:80)
>       at 
> org.apache.fop.fonts.truetype.OpenFont.handleCharacterSpacing(OpenFont.java:786)
>       at org.apache.fop.fonts.truetype.OpenFont.readFont(OpenFont.java:755)
>       at 
> org.apache.fop.fonts.truetype.OFFontLoader.read(OFFontLoader.java:109)
>       at org.apache.fop.fonts.truetype.OFFontLoader.read(OFFontLoader.java:93)
> {code}
> There are two changes that should be done to the 
> {{OTFAdvancedTypographicTableReader}}.
> # The method {{readGDEFMarkGlyphsTableFormat1}} should catch this exception
> # The method {{constructLookupsLanguage}} should check if the {{languages}} 
> parameter is null.
> After these changes, the PDF is produced and it looks good. I am not sure 
> what are the side effects on the font that is embedded into the PDF..

This message was sent by Atlassian JIRA

Reply via email to