[
https://issues.apache.org/jira/browse/PDFBOX-3759?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15975329#comment-15975329
]
Tilman Hausherr commented on PDFBOX-3759:
-----------------------------------------
I had a look at fonts with DTL OTMaster Light 3.7. This is really good, much
better than FontForge which has a GUI from hell and doesn't show the raw data.
I wish I had seen this one long ago, when I was fixing bugs in the truetype
rendering that we got from Apache BATIK.
So IMO we should skip the advanced tables (GPOS, GSUB and GDEF) and of course
the kern table.
Subsetting the kern table shouldn't be too much work, it is not as complex as
the three other tables. Do you want to do it? Would it be useful at all for you
if you get a subsetted font but lose the three advanced tables?
> 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: [email protected]
For additional commands, e-mail: [email protected]