[
https://issues.apache.org/jira/browse/PDFBOX-4304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16603892#comment-16603892
]
Tilman Hausherr commented on PDFBOX-4304:
-----------------------------------------
None were made. I gotta read all that when I have more time.
> Glyph Substitution Table lookup Cache doesn't clear by disabling a feature.
> ---------------------------------------------------------------------------
>
> Key: PDFBOX-4304
> URL: https://issues.apache.org/jira/browse/PDFBOX-4304
> Project: PDFBox
> Issue Type: Bug
> Components: FontBox
> Affects Versions: 2.0.11
> Reporter: Ali Safe
> Priority: Major
> Attachments: FDK_aban.ttf
>
>
> When I want to use GlyphSubstitutionTable to find the substituted gid for a
> specific glyph that have 3 forms of substitutions, I found the same gid for
> each three forms.
> The font are a Persian font that have 3 substituted forms for some of it's
> glyphs. I enabled the 'init', 'medi' and 'fina' features one by one and then
> disable them. But all of these give me the same result.
> When I saw the GlyphSubstitutionTable class and getSubstitution(gid,
> scriptTags, enabledFeatures) method in it, I saw a lookupCache that first
> check for gid only, and if the gid existed returns the result, and if it's
> not in lookupCache do other parsing and calculations. I think every time that
> some features are disabled or enabled, this cache must be cleared. And also
> the cache lookup must be a mapping of three of the function input argument,
> because they are affect the result of calculations. At least the lookupCache
> must be a mapping of gid and enabledFeatures.
> And when more than one feature are enabled, the lookup cache maps each gid to
> only one substituted glyph, but in many languages there more than one
> substitutions form for some glyphs. When I enable more than one features only
> the last enabled feature will be affected.
> I used this code and attached the mentioned font file...
> // Persian Beh Letter with code 1576 in the font
> // Enable init feature
> ttf.enableGsubFeature("init");
> CmapLookup cMapLookupInit = ttf.getUnicodeCmapLookup();
> int glyphIdInit = cMapLookupInit.getGlyphId(1576);
> ttf.disableGsubFeature("init");
> // Enable medi feature
> ttf.enableGsubFeature("medi");
> CmapLookup cMapLookupMedi = ttf.getUnicodeCmapLookup();
> int glyphIdMedi = cMapLookupMedi.getGlyphId(1576);
> ttf.disableGsubFeature("medi");
> // Now the glypIdMedi and glyphIdInit have same values...
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]