>> 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
_______________________________________________
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel

Reply via email to