[ 
https://issues.apache.org/jira/browse/PDFBOX-3759?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tobias Fischer updated PDFBOX-3759:
-----------------------------------
    Attachment: fontbox-2.0.5-ttfsubsetter_scrambled-OpenType-kerning.png
       Summary: TTFSubsetter scrambles OpenType ligature and kerning tables 
(and probably others as well)  (was: TTFSubsetter scrambles OpenType ligature 
table (and probably others as well))

The OpenType {{kern}} kerning table is also affected by this, as the following 
screenshot shows:

!fontbox-2.0.5-ttfsubsetter_scrambled-OpenType-kerning.png!

The kerning for the letter "T" (and others) is lost, although the letter "T" is 
part of the subset.

> TTFSubsetter scrambles OpenType ligature and kerning tables (and probably 
> others as well)
> -----------------------------------------------------------------------------------------
>
>                 Key: PDFBOX-3759
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-3759
>             Project: PDFBox
>          Issue Type: Bug
>          Components: FontBox
>    Affects Versions: 2.0.5
>            Reporter: Tobias Fischer
>            Priority: Critical
>         Attachments: 
> fontbox-2.0.5-ttfsubsetter_scrambled-OpenType-kerning.png, 
> fontbox-2.0.5-ttfsubsetter_scrambled-OpenType-ligatures.png, 
> Subset-DejaVuSans_scrambled-OpenType-tables.ttf
>
>
> When using the TTFSubsetter as standalone software and subsetting an 
> OpenType/TrueType font, the {{liga}} OpenType ligature table gets scrambled 
> "randomly".
> E.g. when viewing the source font "DejaVuSans.ttf" in FontLab Studio, the 
> OpenType {{liga}} table is shown as follows:
> {code}
> feature liga {
>  script arab;
> lookup liga33 {
> lookupflag IgnoreMarks RightToLeft;
>     sub uniFEDF uniFE88 by uniFEF9;
>     sub uniFEDF uniFE84 by uniFEF7;
>     sub uniFEDF uniFE82 by uniFEF5;
>     sub uniFEE0 uniFE88 by uniFEFA;
>     sub uniFEE0 uniFE84 by uniFEF8;
>     sub uniFEE0 uniFE82 by uniFEF6;
> } liga33;
> lookup liga35 {
> lookupflag RightToLeft;
>     sub space uni0652 by uniFE7E;
>     sub space uni0651 by uniFE7C;
>     sub space uni0650 by uniFE7A;
>     sub space uni064F by uniFE78;
>     sub space uni064E by uniFE76;
>     sub space uni064D by uniFE74;
>     sub space uni064C by uniFE72;
>     sub space uni064B by uniFE70;
>     sub uni0627 uni0655 by uni0625;
>     sub uni0627 uni0654 by uni0623;
>     sub uni0627 uni0653 by uni0622;
>     sub uni0640 uni0652 by uniFE7F;
>     sub uni0640 uni0651 by uniFE7D;
>     sub uni0640 uni0650 by uniFE7B;
>     sub uni0640 uni064F by uniFE79;
>     sub uni0640 uni064E by uniFE77;
>     sub uni0640 uni064B by uniFE71;
>     sub uni0648 uni0654 by uni0624;
>     sub uni064A uni0654 by uni0626;
> } liga35;
>  language SND ;
>  language URD ;
>  language KUR ;
>  script latn;
>     sub f f l by uniFB04;
>     sub f f i by uniFB03;
>     sub f l by fl;
>     sub f i by fi;
>     sub f f by uniFB00;
>  language MOL ;
>  language ROM ;
>  language ISM ;
>  language KSM ;
>  language LSM ;
>  language NSM ;
>  language SSM ;
>  language SKS ;
> } liga;
> {code}
> This ligature table shows for example, in the {{latn}} section, the {{ffl}} 
> substitution with the ffl ligature {{\uFB04}}.
> However, when viewing a subsetted version of the font (like the one 
> attached), the {{liga}} table is scrambled:
> {code}
> feature liga {
>  script arab;
> lookup liga33 {
> lookupflag IgnoreMarks RightToLeft;
>     sub _5337 _5250 by _5363;
>     sub _5337 _5246 by _5361;
>     sub _5337 _5244 by _5359;
>     sub _5338 _5250 by _5364;
>     sub _5338 _5246 by _5362;
>     sub _5338 _5244 by _5360;
> } liga33;
> lookup liga35 {
> lookupflag RightToLeft;
>     sub numbersign _1403 by _5240;
>     sub numbersign _1402 by _5238;
>     sub numbersign _1401 by _5236;
>     sub numbersign _1400 by _5234;
>     sub numbersign _1399 by _5232;
>     sub numbersign _1398 by _5231;
>     sub numbersign _1397 by _5229;
>     sub numbersign _1396 by _5227;
>     sub _1365 _1406 by _1363;
>     sub _1365 _1405 by _1361;
>     sub _1365 _1404 by _1360;
>     sub _1385 _1403 by _5241;
>     sub _1385 _1402 by _5239;
>     sub _1385 _1401 by _5237;
>     sub _1385 _1400 by _5235;
>     sub _1385 _1399 by _5233;
>     sub _1385 _1396 by _5228;
>     sub _1393 _1405 by _1362;
>     sub _1395 _1405 by _1364;
> } liga35;
>  language SND ;
>  language URD ;
>  language KUR ;
>  script latn;
>     sub o o u by _5045;
>     sub o o r by _5044;
>     sub o u by _5043;
>     sub o r by _5042;
>     sub o o by _5041;
>  language MOL ;
>  language ROM ;
>  language ISM ;
>  language KSM ;
>  language LSM ;
>  language NSM ;
>  language SSM ;
>  language SKS ;
> } liga;
> {code}
> The {{liga}} table of the subsetted font now want's to replace "oou" instead 
> of "ffl".
> The result, for example in InDesign, is devastating:
> !fontbox-2.0.5-ttfsubsetter_scrambled-OpenType-ligatures.png!
> The subsetted font indeed tries to replace "oou" with a non-existing glyph 
> and scrambles the whole text in the rendering. The font subset is unusable.
> I know that it's hard to maintain OpenType features in a font subset, but I 
> would at least expect that the OpenType tables are kept "as-is"...



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: dev-h...@pdfbox.apache.org

Reply via email to