freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft-devel] [GSoC] CID font support, and others


From: Ewald Hew
Subject: Re: [ft-devel] [GSoC] CID font support, and others
Date: Mon, 7 Aug 2017 12:41:39 +0800

>> The only other solution that comes to mind is doing an extra pass
>> just to build the initial hintmap, after which hint moves should
>> presumably work right.
>
> I like your first suggestion better.

I would prefer changing the logic too, but that doesn't seem feasible. 
Look at this output from another font (ztm-Reg):

T1_Load_Glyph: glyph index 86      | cff_glyph_load: glyph index 86
Initial hintmap                      Initial hintmap
  csCoord  dsCoord  scale  flags       csCoord  dsCoord  scale  flags
     0.00     0.00    655  gbLS    |    -10.00     0.00    655  pbL
                                   >     48.00    58.00    655  ptL
   436.00   486.27    655  pbL          436.00   486.27    655  pbL
   450.00   500.27    655  ptL          450.00   500.27    655  ptL
(adjusted)                           (adjusted)
  csCoord  dsCoord  scale  flags       csCoord  dsCoord  scale  flags
     0.00     0.00    731  gbLS    |    -10.00     0.00    655  pbL
                                   >     48.00    52.54    723  ptL
   436.00   486.27    655  pbL          436.00   486.27    655  pbL
   450.00   500.27    655  ptL          450.00   500.27    655  ptL
Hints:                               Hints:
  csCoord  dsCoord  scale  flags       csCoord  dsCoord  scale  flags
    36.00    40.99    655  pb      |     36.00    46.00    655  pb
    50.00    54.99    655  pt      |     50.00    60.00    655  pt
   436.00   486.27    655  pbL          436.00   486.27    655  pbL
   450.00   500.27    655  ptL          450.00   500.27    655  ptL
(adjusted)                           (adjusted)
  csCoord  dsCoord  scale  flags       csCoord  dsCoord  scale  flags
    36.00     0.00    655  pb      |     36.00    86.05    655  pb
    50.00    11.45    801  pt      |     50.00   100.05    655  pt
   436.00   486.27    655  pbL          436.00   486.27    655  pbL
   450.00   500.27    655  ptL          450.00   500.27    655  ptL
Hints:                               Hints:
  csCoord  dsCoord  scale  flags       csCoord  dsCoord  scale  flags
   -10.00     0.00    655  pbL          -10.00     0.00    655  pbL
    48.00    58.00    655  ptL           48.00    58.00    655  ptL
   436.00   486.27    655  pbL          436.00   486.27    655  pbL
   450.00   500.27    655  ptL          450.00   500.27    655  ptL
(adjusted)                           (adjusted)
  csCoord  dsCoord  scale  flags       csCoord  dsCoord  scale  flags
   -10.00     0.00    655  pbL          -10.00     0.00    655  pbL
    48.00    52.54    723  ptL           48.00    52.54    723  ptL
   436.00   486.27    655  pbL          436.00   486.27    655  pbL
   450.00   500.27    655  ptL          450.00   500.27    655  ptL
Hints:                               Hints:
  csCoord  dsCoord  scale  flags       csCoord  dsCoord  scale  flags
    36.00    40.99    655  pb      |     36.00    86.05    655  pbL
    50.00    54.99    655  pt      |     50.00   100.05    655  ptL
   436.00   486.27    655  pbL          436.00   486.27    655  pbL
   450.00   500.27    655  ptL          450.00   500.27    655  ptL
(adjusted)                           (adjusted)
  csCoord  dsCoord  scale  flags       csCoord  dsCoord  scale  flags
    36.00     0.00    655  pb      |     36.00    86.05    655  pbL
    50.00    11.45    801  pt      |     50.00   100.05    655  ptL
   436.00   486.27    655  pbL          436.00   486.27    655  pbL
   450.00   500.27    655  ptL          450.00   500.27    655  ptL
ptsize =10                           ptsize =10
Execution completed successfully.    Execution completed successfully.

The initial hintmap is wrong, affecting the first set of hints. Because the 
(-10,48) pair is not in the first hint group, but is in a blue zone (hence 
locked and in the initial map). For Type 1, the interpreter cannot know this 
until later in the charstring when that pair is actually inserted, and hence 
cannot possibly build the correct initial hintmap unless a preliminary pass 
is made to collate all the hints.

Ewald

reply via email to

[Prev in Thread] Current Thread [Next in Thread]