Calculate individual character positions, using fractional scaling
#include <photon/Pf.h>
int PfExtentFractTextCharPositions(
       PhRect_t * ptsExtent,
       PhPoint_t * ptsPos,
       char * psz,
       const char * pckFont,
       int32_t * piIndices,
       int32_t * piPenPositions,
       int32_t iArrayLen,
       uint32_t ulFlags,
       int32_t iBytes,
       uint32_t uiExtentLen,
       PhRect_t const * pktsClip,
       uint32_t uiXscale,
       uint32_t uiYscale );
- ptsExtent
 
- A pointer to a
  PhRect_t
  structure that's used to store
  the extent of the string.
 
- ptsPos
 
- A pointer to a
  PhPoint_t
  structure that's used as an
  offset to apply against the extent. If NULL, no offset is
  added to the extent values.
 
- psz
 
- A pointer to a NUL-terminated character string.
 
- pckFont
 
- A pointer to a NUL-terminated constant character string, containing the
  stem name of the particular font.
  You should use
  PfGenerateFontName()
  to create this.
 
- iArrayLen
 
- The number of integer entries in the piIndices and
  piPenPositions arrays.
 
- piIndices
 
- A pointer to an integer array of length iArrayLen.
  An index corresponds to a location within the string pointed to by
  psz.
  
  For example, index 0 relates to the pen's x position at the
  start of the string, index 1 corresponds to the pen's x position
  after character 1, index 2 corresponds to the pen's x position
  after character 2, and so on.
  
  The indexes must be in numerical order, in order to function as
  expected.
 
- piPositions
 
- A pointer to an integer array of length iArrayLen.
  This array contains the resulting pen x values (in pixels), for each index.
 
- ulFlags
 
- A 32-bit value used for flags.  Values that can be ORed in are:
  
- PF_WIDE_CHARS — the characters pointed to
    by psz
    are an array of wchar_t characters. By default, the
    function assumes the characters are multibyte.
    
    
  | 
    This function assumes each character is represented
    by 2 bytes that conform to the ISO/IEC 10646-1 UCS-2
    double-byte format.
     | 
 
    
   
- PF_CHAR_DRAW_POSITIONS — if turned on, the
    bearing x value of the next symbols aren't applied to the returned pen x
    positions. This is useful when placing cursors:
    
    
    
    
    If this bit isn't set, the bearing x value of the next symbols are applied
    to the pen x positions. This is useful when drawing symbols individually,
    where you need to know where to place the x origin of each symbol:
    
    
  
 
 
- iBytes
 
- The number of bytes in the string.  If this is 0, the function assumes
  that the number of bytes is:
  
strlen( psz ) / wstrlen( psz )
  
 
- uiExtentLen
 
- The number of characters from the beginning of the string to include
  in the extent.
  If 0, the entire string is extented, as permitted by the clipping rectangle.
 
- pktsClip
 
- A clipping rectangle to be used to reduce processing, depending on the
   value of pktsClip->lr.x (in pixels).
   If pktsClip is NULL, no clipping is applied.
 
- uiXscale, uiYscale
 
- Horizontal and vertical scaling factors in 16.16 format.
 
ph
PfExtentFractTextCharPositions()
lets you obtain the pen's x position after every index
specified in the function call.
It's similar to
PfExtentTextCharPositions(),
except that fractional scaling is applied.
- 0
 
- Success.
 
- -1
 
- An error occurred; errno is set.
 
- ERANGE
 
- The font manager couldn't fulfill the request;
  one of the following is true:
  
- The iArrayLen argument is larger than
    strlen(psz).
  
 
- If index 0 is requested, then iArrayLen is larger than
    strlen(psz) + 1.
  
 
- The iArrayLen argument is less than or equal to 0.
  
 
- An index in piIndices references a character greater than
    strlen(psz).
  
 
 
- EFAULT
 
- One of ptsExtent, piIndices,
  piPenPositions, pckFont, or psz
  is NULL.
 
- EINVAL
 
- The font is fixed-width, and an error occurred when trying to
  retrieve the common width of all characters in that particular font.
 
- EMORE
 
- Something unexpected occurred while processing a run of characters.
 
Photon
| Safety: |  | 
| Interrupt handler | 
    No | 
| Signal handler | 
    No | 
| Thread | 
    No | 
PfExtent(),
PfExtentCx(),
PfExtentText(),
PfExtentTextCharPositions(),
PfExtentTextCharPositionsCx(),
PfExtentTextToRect(),
PfFractionalExtentText(),
PfGenerateFontName(),
PhPoint_t,
PhRect_t
Fonts chapter of the
Photon Programmer's Guide