freetype-devel
[Top][All Lists]
Advanced

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

Re: FreeType INSTCTRL behavior (Po Lu) (Re: Freetype-devel Digest, Vol 2


From: Po Lu
Subject: Re: FreeType INSTCTRL behavior (Po Lu) (Re: Freetype-devel Digest, Vol 217, Issue 8)
Date: Mon, 13 Feb 2023 10:29:45 +0800
User-agent: Gnus/5.13 (Gnus v5.13)

Hin-Tak Leung <htl10@users.sourceforge.net> writes:

> Perhaps let me ask the opposite question: do you really expect setting
> projection vector and rp1 in prep to have global effects on every
> glyph, and/or setting those in one glyph to have effect on another
> glyph?

Only for setting the graphics state (including the projection vector and
rp1) in the preprogram to have effect on subsequently instructed glyphs.

Here is what the TrueType reference manual says:

  The graphics state variables all have default values established at
  the start of interpretation of any font. The default value for a given
  graphics state variable is reestablished at the start of
  interpretation of any glyph. In other words, the graphics state has no
  inter-glyph memory. Changing the value of a graphics state variable
  while processing an individual glyph will produce a change that
  remains in effect only for that glyph.

  To establish a new default value for a graphics state variable, it is
  necessary to change the value of that variable in the control value
  program. Changes made in the control value program will apply to all
  subsequently processed glyphs unless INSTCTRL[] is used to inhibit
  these new values.

followed by a table which lists both the projection and freedom vectors,
and all of the reference point registers, as graphics state variables:

Graphics state variable         Mnemonic        Instruction      
freedom & projection vector     Set Vectors To Coordinate Axis  SVTCA[a]        
 
projection vector               Set Projection Vector To Coordinate Axis        
SPVTCA[a]        
freedom vector                  Set Freedom Vector To Coordinate Axis   
SFVTCA[a]        
projection vector               Set Projection Vector To Line   SPVTL[a]        
 
freedom vector                  Set Freedom Vector To Line      SFVTL[a]        
 
freedom vector                  Set Freedom Vector To Projection Vector         
SFVTPV[]         
dual projection vector          Set Dual Projection Vector To Line      
SDPVTL[]         
projection vector               Set Projection Vector To Line   SVPTL[]         
 
projection vector               Set Projection Vector From Stack        SPVFS[] 
         
freedom vector                  Set Freedom Vector From Stack   SFVFS[]         
 
rp0                             Set Reference Point 0   SRP0[]   
rp1                             Set Reference Point 1   SRP1[]   
rp2                             Set Reference Point 2   SRP2[]   
zp0                             Set Zone Pointer 0      SZP0[]   
zp1                             Set Zone Pointer 1      SZP1[]   
zp2                             Set Zone Pointer 2      SZP2[]   
zp0, zp1, zp2                   Set Zone PointerS       SZPS[]   
round state                     Round To Half Grid      RTHG[]  
round state                     Round To Grid   RTG[]    
round state                     Round To Double Grid    RTDG[]   
round state                     Round Up To Grid        RUTG[]   
round state                     Round Down To Grid      RDTG[]   
round state                     set Rounding Off        ROFF[]   
round state                     Super ROUND     SROUND[]         
round state                     Super 45 ROUND  S45ROUND[]       
loop                            Set LOOP        SLOOP[]          
single width cut-in             Set Single Width Cut-In         SSWCI[]         
 
control value cut-in            Set Control Value Table Cut-In  SCVTCI[]        
 
minimum distance                Set Minimum Distance    SMD[]


reply via email to

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