Package org.lwjgl.stb

Class STBTruetype

java.lang.Object
org.lwjgl.stb.STBTruetype

public class STBTruetype extends Object
Native bindings to stb_truetype.h from the stb library.

This library processes TrueType files:

  • parse files
  • extract glyph metrics
  • extract glyph shapes
  • render glyphs to one-channel bitmaps with antialiasing (box filter)

ADDITIONAL DOCUMENTATION

Some important concepts to understand to use this library:

Codepoint

Characters are defined by unicode codepoints, e.g. 65 is uppercase A, 231 is lowercase c with a cedilla, 0x7e30 is the hiragana for "ma".

Glyph

A visual character shape (every codepoint is rendered as some glyph)

Glyph index

A font-specific integer ID representing a glyph

Baseline

Glyph shapes are defined relative to a baseline, which is the bottom of uppercase characters. Characters extend both above and below the baseline.

Current Point

As you draw text to the screen, you keep track of a "current point" which is the origin of each character. The current point's vertical position is the baseline. Even "baked fonts" use this model.

Vertical Font Metrics

The vertical qualities of the font, used to vertically position and space the characters. See docs for GetFontVMetrics.

Font Size in Pixels or Points

The preferred interface for specifying font sizes in stb_truetype is to specify how tall the font's vertical extent should be in pixels. If that sounds good enough, skip the next paragraph.

Most font APIs instead use "points", which are a common typographic measurement for describing font size, defined as 72 points per inch. stb_truetype provides a point API for compatibility. However, true "per inch" conventions don't make much sense on computer displays since different monitors have different number of pixels per inch. For example, Windows traditionally uses a convention that there are 96 pixels per inch, thus making 'inch' measurements have nothing to do with inches, and thus effectively defining a point to be 1.333 pixels. Additionally, the TrueType font data provides an explicit scale factor to scale a given font's glyphs to points, but the author has observed that this scale factor is often wrong for non-commercial fonts, thus making fonts scaled in points according to the TrueType spec incoherently sized in practice.

DETAILED USAGE

Scale:

Select how high you want the font to be, in points or pixels. Call #()ScaleForPixelHeight or ScaleForMappingEmToPixels to compute a scale factor SF that will be used by all other functions.

Baseline:

You need to select a y-coordinate that is the baseline of where your text will appear. Call GetFontBoundingBox to get the baseline-relative bounding box for all characters. SF*-y0 will be the distance in pixels that the worst-case character could extend above the baseline, so if you want the top edge of characters to appear at the top of the screen where y=0, then you would set the baseline to SF*-y0.

Current point:

Set the current point where the first character will appear. The first character could extend left of the current point; this is font dependent. You can either choose a current point that is the leftmost point and hope, or add some padding, or check the bounding box or left-side-bearing of the first character to be displayed and set the current point based on that.

Displaying a character:

Compute the bounding box of the character. It will contain signed values relative to <current_point, baseline>. I.e. if it returns x0,y0,x1,y1, then the character should be displayed in the rectangle from <current_point+SF*x0, baseline+SF*y0> to <current_point+SF*x1,baseline+SF*y1).

Advancing for the next character:

Call GetGlyphHMetrics, and compute current_point += SF * advance.

ADVANCED USAGE

Quality:

  • Use the functions with Subpixel at the end to allow your characters to have subpixel positioning. Since the font is anti-aliased, not hinted, this is very important for quality. (This is not possible with baked fonts.)
  • Kerning is now supported, and if you're supporting subpixel rendering then kerning is worth using to give your text a polished look.

Performance:

  • Convert Unicode codepoints to glyph indexes and operate on the glyphs; if you don't do this, stb_truetype is forced to do the conversion on every call.
  • There are a lot of memory allocations. We should modify it to take a temp buffer and allocate from the temp buffer (without freeing), should help performance a lot.

NOTES

The system uses the raw data found in the .ttf file without changing it and without building auxiliary data structures. This is a bit inefficient on little-endian systems (the data is big-endian), but assuming you're caching the bitmaps or glyph shapes this shouldn't be a big deal.

It appears to be very hard to programmatically determine what font a given file is in a general way. I provide an API for this, but I don't recommend it.

SAMPLE PROGRAMS

Incomplete text-in-3d-api example, which draws quads properly aligned to be lossless:


 unsigned char ttf_buffer[1<<20];
 unsigned char temp_bitmap[512*512];
 
 stbtt_bakedchar cdata[96]; // ASCII 32..126 is 95 glyphs
 GLuint ftex;
 
 void my_stbtt_initfont(void)
 {
    fread(ttf_buffer, 1, 1<<20, fopen("c:/windows/fonts/times.ttf", "rb"));
    stbtt_BakeFontBitmap(ttf_buffer,0, 32.0, temp_bitmap,512,512, 32,96, cdata); // no guarantee this fits!
    // can free ttf_buffer at this point
    glGenTextures(1, &ftex);
    glBindTexture(GL_TEXTURE_2D, ftex);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 512,512, 0, GL_ALPHA, GL_UNSIGNED_BYTE, temp_bitmap);
    // can free temp_bitmap at this point
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
 }
 
 void my_stbtt_print(float x, float y, char *text)
 {
    // assume orthographic projection with units = screen pixels, origin at top left
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, ftex);
    glBegin(GL_QUADS);
    while (*text) {
       if (*text ≥ 32 && *text < 128) {
          stbtt_aligned_quad q;
          stbtt_GetBakedQuad(cdata, 512,512, *text-32, &x,&y,&q,1);//1=opengl & d3d10+,0=d3d9
          glTexCoord2f(q.s0,q.t1); glVertex2f(q.x0,q.y0);
          glTexCoord2f(q.s1,q.t1); glVertex2f(q.x1,q.y0);
          glTexCoord2f(q.s1,q.t0); glVertex2f(q.x1,q.y1);
          glTexCoord2f(q.s0,q.t0); glVertex2f(q.x0,q.y1);
       }
       ++text;
    }
    glEnd();
 }

Complete program (this compiles): get a single bitmap, print as ASCII art:


 char ttf_buffer[1<<25];
 
 int main(int argc, char **argv)
 {
    stbtt_fontinfo font;
    unsigned char *bitmap;
    int w,h,i,j,c = (argc > 1 ? atoi(argv[1]) : 'a'), s = (argc > 2 ? atoi(argv[2]) : 20);
 
    fread(ttf_buffer, 1, 1<<25, fopen(argc > 3 ? argv[3] : "c:/windows/fonts/arialbd.ttf", "rb"));
 
    stbtt_InitFont(&font, ttf_buffer, stbtt_GetFontOffsetForIndex(ttf_buffer,0));
    bitmap = stbtt_GetCodepointBitmap(&font, 0,stbtt_ScaleForPixelHeight(&font, s), c, &w, &h, 0,0);
 
    for (j=0; j < h; ++j) {
       for (i=0; i < w; ++i)
          putchar(" .:ioVM@"[bitmap[j*w+i]>>5]);
       putchar('\n');
    }
    return 0;
 }

Complete program: print "Hello World!" banner, with bugs:


 char buffer[24<<20];
 unsigned char screen[20][79];
 
 int main(int arg, char **argv)
 {
    stbtt_fontinfo font;
    int i,j,ascent,baseline,ch=0;
    float scale, xpos=2; // leave a little padding in case the character extends left
    char *text = "Heljo World!";
 
    fread(buffer, 1, 1000000, fopen("c:/windows/fonts/arialbd.ttf", "rb"));
    stbtt_InitFont(&font, buffer, 0);
 
    scale = stbtt_ScaleForPixelHeight(&font, 15);
    stbtt_GetFontVMetrics(&font, &ascent,0,0);
    baseline = (int) (ascent*scale);
 
    while (text[ch]) {
       int advance,lsb,x0,y0,x1,y1;
       float x_shift = xpos - (float) floor(xpos);
       stbtt_GetCodepointHMetrics(&font, text[ch], &advance, &lsb);
       stbtt_GetCodepointBitmapBoxSubpixel(&font, text[ch], scale,scale,x_shift,0, &x0,&y0,&x1,&y1);
       stbtt_MakeCodepointBitmapSubpixel(&font, &screen[baseline + y0][(int) xpos + x0], x1-x0,y1-y0, 79, scale,scale,x_shift,0, text[ch]);
       // note that this stomps the old data, so where character boxes overlap (e.g. 'lj') it's wrong
       // because this API is really for baking character bitmaps into textures. if you want to render
       // a sequence of characters, you really need to render each bitmap to a temp buffer, then
       // "alpha blend" that into the working buffer
       xpos += (advance * scale);
       if (text[ch+1])
          xpos += scale*stbtt_GetCodepointKernAdvance(&font, text[ch],text[ch+1]);
       ++ch;
    }
 
    for (j=0; j < 20; ++j) {
       for (i=0; i < 78; ++i)
          putchar(" .:ioVM@"[screen[j][i]>>5]);
       putchar('\n');
    }
 
    return 0;
 }

Finding the right font...

You should really just solve this offline, keep your own tables of what font is what, and don't try to get it out of the .ttf file. That's because getting it out of the .ttf file is really hard, because the names in the file can appear in many possible encodings, in many possible languages, and e.g. if you need a case-insensitive comparison, the details of that depend on the encoding & language in a complex way (actually underspecified in truetype, but also gigantic).

But you can use the provided functions in two possible ways:

  • FindMatchingFont will use *case-sensitive* comparisons on unicode-encoded names to try to find the font you want; you can run this before calling InitFont
  • GetFontNameString lets you get any of the various strings from the file yourself and do your own comparisons on them. You have to have called InitFont first.
  • Field Details

  • Method Details

    • nstbtt_BakeFontBitmap

      public static int nstbtt_BakeFontBitmap(long data, int offset, float pixel_height, long pixels, int pw, int ph, int first_char, int num_chars, long chardata)
      Unsafe version of: BakeFontBitmap
      Parameters:
      num_chars - the number of characters to bake, starting at first_char
    • stbtt_BakeFontBitmap

      public static int stbtt_BakeFontBitmap(ByteBuffer data, float pixel_height, ByteBuffer pixels, int pw, int ph, int first_char, STBTTBakedChar.Buffer chardata)
      Bakes a font to a bitmap for use as texture.

      This uses a very simply packing, use with GetBakedQuad.

      Parameters:
      data - the font data
      pixel_height - the font height, in pixels
      pixels - a buffer in which to write the font bitmap
      pw - the bitmap width, in pixels
      ph - the bitmap height, in pixels
      first_char - the first character to bake
      chardata - an array of STBTTBakedChar structs, it's num_chars long
      Returns:
      if positive, the first unused row of the bitmap. If negative, returns the negative of the number of characters that fit. If 0, no characters fit and no rows were used.
    • nstbtt_GetBakedQuad

      public static void nstbtt_GetBakedQuad(long chardata, int pw, int ph, int char_index, long xpos, long ypos, long q, int opengl_fillrule)
      Unsafe version of: GetBakedQuad
    • stbtt_GetBakedQuad

      public static void stbtt_GetBakedQuad(STBTTBakedChar.Buffer chardata, int pw, int ph, int char_index, FloatBuffer xpos, FloatBuffer ypos, STBTTAlignedQuad q, boolean opengl_fillrule)
      Computes quad to draw for a given char and advances the current position.

      The coordinate system used assumes y increases downwards. Characters will extend both above and below the current position; see discussion of "BASELINE" above.

      Parameters:
      chardata - an array of STBTTBakedChar structs
      pw - the bitmap width, in pixels
      ph - the bitmap height, in pixels
      char_index - the character index in the chardata array
      xpos - the current x position, in screen pixel space
      ypos - the current y position, in screen pixel space
      q - an STBTTAlignedQuad struct in which to return the quad to draw
      opengl_fillrule - 1 if opengl fill rule; 0 if DX9 or earlier
    • nstbtt_GetScaledFontVMetrics

      public static void nstbtt_GetScaledFontVMetrics(long fontdata, int index, float size, long ascent, long descent, long lineGap)
      Unsafe version of: GetScaledFontVMetrics
    • stbtt_GetScaledFontVMetrics

      public static void stbtt_GetScaledFontVMetrics(ByteBuffer fontdata, int index, float size, FloatBuffer ascent, FloatBuffer descent, FloatBuffer lineGap)
      Query the font vertical metrics without having to create a font first.
      Parameters:
      index - the font index (use 0 if you don't know what that is)
      size - the font height, in pixels
      ascent - returns the coordinate above the baseline the font extends
      descent - returns the coordinate below the baseline the font extends (i.e. it is typically negative)
      lineGap - returns the spacing between one row's descent and the next row's ascent
    • nstbtt_PackBegin

      public static int nstbtt_PackBegin(long spc, long pixels, int width, int height, int stride_in_bytes, int padding, long alloc_context)
      Unsafe version of: PackBegin
    • stbtt_PackBegin

      public static boolean stbtt_PackBegin(STBTTPackContext spc, @Nullable ByteBuffer pixels, int width, int height, int stride_in_bytes, int padding, long alloc_context)
      Initializes a packing context stored in the passed-in stbtt_pack_context. Future calls using this context will pack characters into the bitmap passed in here: a 1-channel bitmap that is width x height.
      Parameters:
      spc - an STBTTPackContext struct
      pixels - a buffer in which to store the bitmap data
      width - the bitmap width, in pixels
      height - the bitmap height, in pixels
      stride_in_bytes - the distance from one row to the next (or 0 to mean they are packed tightly together)
      padding - the amount of padding to leave between each character (normally you want '1' for bitmaps you'll use as textures with bilinear filtering)
      alloc_context - a pointer to an allocation context
      Returns:
      1 on success, 0 on failure
    • stbtt_PackBegin

      public static boolean stbtt_PackBegin(STBTTPackContext spc, @Nullable ByteBuffer pixels, int width, int height, int stride_in_bytes, int padding)
      Initializes a packing context stored in the passed-in stbtt_pack_context. Future calls using this context will pack characters into the bitmap passed in here: a 1-channel bitmap that is width x height.
      Parameters:
      spc - an STBTTPackContext struct
      pixels - a buffer in which to store the bitmap data
      width - the bitmap width, in pixels
      height - the bitmap height, in pixels
      stride_in_bytes - the distance from one row to the next (or 0 to mean they are packed tightly together)
      padding - the amount of padding to leave between each character (normally you want '1' for bitmaps you'll use as textures with bilinear filtering)
      Returns:
      1 on success, 0 on failure
    • nstbtt_PackEnd

      public static void nstbtt_PackEnd(long spc)
      Unsafe version of: PackEnd
    • stbtt_PackEnd

      public static void stbtt_PackEnd(STBTTPackContext spc)
      Cleans up the packing context and frees all memory.
      Parameters:
      spc - an STBTTPackContext struct
    • STBTT_POINT_SIZE

      public static int STBTT_POINT_SIZE(int font_size)
      Converts the full height of a character from ascender to descender, as computed by ScaleForPixelHeight, to a point size as computed by ScaleForMappingEmToPixels.
      Parameters:
      font_size - the full height of a character
      Returns:
      the point size of the character
    • nstbtt_PackFontRange

      public static int nstbtt_PackFontRange(long spc, long fontdata, int font_index, float font_size, int first_unicode_char_in_range, int num_chars_in_range, long chardata_for_range)
      Unsafe version of: PackFontRange
      Parameters:
      num_chars_in_range - the number of unicode code points in the range
    • stbtt_PackFontRange

      public static boolean stbtt_PackFontRange(STBTTPackContext spc, ByteBuffer fontdata, int font_index, float font_size, int first_unicode_char_in_range, STBTTPackedchar.Buffer chardata_for_range)
      Creates character bitmaps from the font_index'th font found in fontdata (use font_index=0 if you don't know what that is). It creates num_chars_in_range bitmaps for characters with unicode values starting at first_unicode_char_in_range and increasing. Data for how to render them is stored in chardata_for_range; pass these to GetPackedQuad to get back renderable quads.
      Parameters:
      spc - an STBTTPackContext struct
      fontdata - the font data
      font_index - the font index (use 0 if you don't know what that is
      font_size - the full height of the character from ascender to descender, as computed by ScaleForPixelHeight. To use a point size as computed by ScaleForMappingEmToPixels, wrap the font size in STBTT_POINT_SIZE(int) and pass the result, i.e.:
      
                                          ...,                  20 , ... // font max minus min y is 20 pixels tall
                                          ..., STBTT_POINT_SIZE(20), ... // 'M' is 20 pixels tall
      first_unicode_char_in_range - the first unicode code point in the range
      chardata_for_range - an array of STBTTPackedchar structs
      Returns:
      1 on success, 0 on failure
    • nstbtt_PackFontRanges

      public static int nstbtt_PackFontRanges(long spc, long fontdata, int font_index, long ranges, int num_ranges)
      Unsafe version of: PackFontRanges
      Parameters:
      num_ranges - the number of STBTTPackRange structs in ranges
    • stbtt_PackFontRanges

      public static boolean stbtt_PackFontRanges(STBTTPackContext spc, ByteBuffer fontdata, int font_index, STBTTPackRange.Buffer ranges)
      Creates character bitmaps from multiple ranges of characters stored in ranges. This will usually create a better-packed bitmap than multiple calls to PackFontRange. Note that you can call this multiple times within a single PackBegin/PackEnd.
      Parameters:
      spc - an STBTTPackContext struct
      fontdata - the font data
      font_index - the font index (use 0 if you don't know what that is)
      ranges - an array of STBTTPackRange structs
      Returns:
      1 on success, 0 on failure
    • nstbtt_PackSetOversampling

      public static void nstbtt_PackSetOversampling(long spc, int h_oversample, int v_oversample)
      Unsafe version of: PackSetOversampling
    • stbtt_PackSetOversampling

      public static void stbtt_PackSetOversampling(STBTTPackContext spc, int h_oversample, int v_oversample)
      Oversampling a font increases the quality by allowing higher-quality subpixel positioning, and is especially valuable at smaller text sizes.

      This function sets the amount of oversampling for all following calls to PackFontRange or PackFontRangesGatherRects for a given pack context. The default (no oversampling) is achieved by h_oversample=1, v_oversample=1. The total number of pixels required is h_oversample*v_oversample larger than the default; for example, 2x2 oversampling requires 4x the storage of 1x1. For best results, render oversampled textures with bilinear filtering. Look at the readme in stb/tests/oversample for information about oversampled fonts.

      To use with PackFontRangesGather etc., you must set it before calls to PackFontRangesGatherRects.

      Parameters:
      spc - an STBTTPackContext struct
      h_oversample - the horizontal oversampling amount
      v_oversample - the vertical oversampling amount
    • nstbtt_PackSetSkipMissingCodepoints

      public static void nstbtt_PackSetSkipMissingCodepoints(long spc, int skip)
      Unsafe version of: PackSetSkipMissingCodepoints
    • stbtt_PackSetSkipMissingCodepoints

      public static void stbtt_PackSetSkipMissingCodepoints(STBTTPackContext spc, boolean skip)
      If skip != 0, this tells stb_truetype to skip any codepoints for which there is no corresponding glyph. If skip=0, which is the default, then codepoints without a glyph recived the font's "missing character" glyph, typically an empty box by convention.
      Parameters:
      spc - an STBTTPackContext struct
      skip - the skip flag
    • nstbtt_GetPackedQuad

      public static void nstbtt_GetPackedQuad(long chardata, int pw, int ph, int char_index, long xpos, long ypos, long q, int align_to_integer)
      Unsafe version of: GetPackedQuad
    • stbtt_GetPackedQuad

      public static void stbtt_GetPackedQuad(STBTTPackedchar.Buffer chardata, int pw, int ph, int char_index, FloatBuffer xpos, FloatBuffer ypos, STBTTAlignedQuad q, boolean align_to_integer)
      Computes quad to draw for a given char and advances the current position.

      The coordinate system used assumes y increases downwards. Characters will extend both above and below the current position; see discussion of "BASELINE" above.

      Parameters:
      chardata - an array of STBTTPackedchar structs
      pw - the bitmap width, in pixels
      ph - the bitmap height, in pixels
      char_index - the character index in the chardata array
      xpos - the current x position, in screen pixel space
      ypos - the current y position, in screen pixel space
      q - an STBTTAlignedQuad struct in which to return the quad to draw
      align_to_integer - 1 to align the quad to integer coordinates
    • nstbtt_PackFontRangesGatherRects

      public static int nstbtt_PackFontRangesGatherRects(long spc, long info, long ranges, int num_ranges, long rects)
      Unsafe version of: PackFontRangesGatherRects
      Parameters:
      num_ranges - the number of STBTTPackRange structs in ranges
    • stbtt_PackFontRangesGatherRects

      public static int stbtt_PackFontRangesGatherRects(STBTTPackContext spc, STBTTFontinfo info, STBTTPackRange.Buffer ranges, STBRPRect.Buffer rects)
      Calling these functions in sequence is roughly equivalent to calling PackFontRanges. If you want more control over the packing of multiple fonts, or if you want to pack custom data into a font texture, take a look at the source of PackFontRanges and create a custom version using these functions, e.g. call PackFontRangesGatherRects multiple times, building up a single array of rects, then call PackFontRangesPackRects once, then call PackFontRangesRenderIntoRects repeatedly. This may result in a better packing than calling PackFontRanges multiple times (or it may not).
      Parameters:
      spc - an STBTTPackContext struct
      info - an STBTTFontinfo struct
      ranges - an array of STBTTPackRange structs
      rects - an array of STBRPRect structs. It must be big enough to accommodate all characters in the given ranges.
      Returns:
      the number of structs written in rects
    • nstbtt_PackFontRangesPackRects

      public static void nstbtt_PackFontRangesPackRects(long spc, long rects, int num_rects)
      Unsafe version of: PackFontRangesPackRects
      Parameters:
      num_rects - the number of structs in rects
    • stbtt_PackFontRangesPackRects

      public static void stbtt_PackFontRangesPackRects(STBTTPackContext spc, STBRPRect.Buffer rects)
      Parameters:
      spc - an STBTTPackContext struct
      rects - an array of STBRPRect structs
    • nstbtt_PackFontRangesRenderIntoRects

      public static int nstbtt_PackFontRangesRenderIntoRects(long spc, long info, long ranges, int num_ranges, long rects)
      Parameters:
      num_ranges - the number of STBTTPackRange structs in ranges
    • stbtt_PackFontRangesRenderIntoRects

      public static boolean stbtt_PackFontRangesRenderIntoRects(STBTTPackContext spc, STBTTFontinfo info, STBTTPackRange.Buffer ranges, STBRPRect.Buffer rects)
      Parameters:
      spc - an STBTTPackContext struct
      info - an STBTTFontinfo struct
      ranges - an array of STBTTPackRange structs
      rects - an array of STBRPRect structs. It must be big enough to accommodate all characters in the given ranges.
      Returns:
      1 on success, 0 on failure
    • nstbtt_GetNumberOfFonts

      public static int nstbtt_GetNumberOfFonts(long data)
      Unsafe version of: GetNumberOfFonts
    • stbtt_GetNumberOfFonts

      public static int stbtt_GetNumberOfFonts(ByteBuffer data)
      Determines the number of fonts in a font file.

      TrueType collection (.ttc) files may contain multiple fonts, while TrueType font (.ttf) files only contain one font. The number of fonts can be used for indexing with GetFontOffsetForIndex where the index is between zero and one less than the total fonts. If an error occurs, -1 is returned.

      Parameters:
      data - the font data
    • nstbtt_GetFontOffsetForIndex

      public static int nstbtt_GetFontOffsetForIndex(long data, int index)
      Unsafe version of: GetFontOffsetForIndex
    • stbtt_GetFontOffsetForIndex

      public static int stbtt_GetFontOffsetForIndex(ByteBuffer data, int index)
      Each .ttf/.ttc file may have more than one font. Each font has a sequential index number starting from 0. Call this function to get the font offset for a given index; it returns -1 if the index is out of range. A regular .ttf file will only define one font and it always be at offset 0, so it will return '0' for index 0, and -1 for all other indices.
      Parameters:
      data - the font data
      index - the font index
    • nstbtt_InitFont

      public static int nstbtt_InitFont(long info, long data, int offset)
      Unsafe version of: InitFont
    • stbtt_InitFont

      public static boolean stbtt_InitFont(STBTTFontinfo info, ByteBuffer data, int offset)
      Given an offset into the file that defines a font, this function builds the necessary cached info for the rest of the system. You must allocate the STBTTFontinfo yourself, and stbtt_InitFont will fill it out. You don't need to do anything special to free it, because the contents are pure value data with no additional data structures.
      Parameters:
      info - an STBTTFontinfo struct
      data - the font data
      offset - the font data offset
      Returns:
      1 on success, 0 on failure
    • stbtt_InitFont

      public static boolean stbtt_InitFont(STBTTFontinfo info, ByteBuffer data)
      Given an offset into the file that defines a font, this function builds the necessary cached info for the rest of the system. You must allocate the STBTTFontinfo yourself, and stbtt_InitFont will fill it out. You don't need to do anything special to free it, because the contents are pure value data with no additional data structures.
      Parameters:
      info - an STBTTFontinfo struct
      data - the font data
      Returns:
      1 on success, 0 on failure
    • nstbtt_FindGlyphIndex

      public static int nstbtt_FindGlyphIndex(long info, int unicode_codepoint)
      Unsafe version of: FindGlyphIndex
    • stbtt_FindGlyphIndex

      public static int stbtt_FindGlyphIndex(STBTTFontinfo info, int unicode_codepoint)
      If you're going to perform multiple operations on the same character and you want a speed-up, call this function with the character you're going to process, then use glyph-based functions instead of the codepoint-based functions.
      Parameters:
      info - an STBTTFontinfo struct
      unicode_codepoint - the unicode code point
      Returns:
      the glyph index or 0 if the character codepoint is not defined in the font
    • nstbtt_ScaleForPixelHeight

      public static float nstbtt_ScaleForPixelHeight(long info, float pixels)
      Unsafe version of: ScaleForPixelHeight
    • stbtt_ScaleForPixelHeight

      public static float stbtt_ScaleForPixelHeight(STBTTFontinfo info, float pixels)
      Computes a scale factor to produce a font whose "height" is pixels tall. Height is measured as the distance from the highest ascender to the lowest descender; in other words, it's equivalent to calling GetFontVMetrics and computing:
      
       scale = pixels / (ascent - descent)

      so if you prefer to measure height by the ascent only, use a similar calculation.

      Parameters:
      info - an STBTTFontinfo struct
      pixels - the font height, in pixels
      Returns:
      the scale factor
    • nstbtt_ScaleForMappingEmToPixels

      public static float nstbtt_ScaleForMappingEmToPixels(long info, float pixels)
      Unsafe version of: ScaleForMappingEmToPixels
    • stbtt_ScaleForMappingEmToPixels

      public static float stbtt_ScaleForMappingEmToPixels(STBTTFontinfo info, float pixels)
      Computes a scale factor to produce a font whose EM size is mapped to pixels tall. This is probably what traditional APIs compute, but I'm not positive.
      Parameters:
      info - an STBTTFontinfo struct
      pixels - the font height, in pixels
      Returns:
      the scale factor
    • nstbtt_GetFontVMetrics

      public static void nstbtt_GetFontVMetrics(long info, long ascent, long descent, long lineGap)
      Unsafe version of: GetFontVMetrics
    • stbtt_GetFontVMetrics

      public static void stbtt_GetFontVMetrics(STBTTFontinfo info, @Nullable IntBuffer ascent, @Nullable IntBuffer descent, @Nullable IntBuffer lineGap)
      Returns vertical metrics for the specified font. You should advance the vertical position by *ascent - *descent + *lineGap

      The returned values are expressed in unscaled coordinates, so you must multiply by the scale factor for a given size.

      Parameters:
      info - an STBTTFontinfo struct
      ascent - returns the coordinate above the baseline the font extends
      descent - returns the coordinate below the baseline the font extends (i.e. it is typically negative)
      lineGap - returns the spacing between one row's descent and the next row's ascent
    • nstbtt_GetFontVMetricsOS2

      public static int nstbtt_GetFontVMetricsOS2(long info, long typoAscent, long typoDescent, long typoLineGap)
      Unsafe version of: GetFontVMetricsOS2
    • stbtt_GetFontVMetricsOS2

      public static boolean stbtt_GetFontVMetricsOS2(STBTTFontinfo info, @Nullable IntBuffer typoAscent, @Nullable IntBuffer typoDescent, @Nullable IntBuffer typoLineGap)
      Analogous to GetFontVMetrics, but returns the "typographic" values from the OS/2 table (specific to MS/Windows TTF files).
      Parameters:
      info - an STBTTFontinfo struct
      typoAscent - returns the coordinate above the baseline the font extends
      typoDescent - returns the coordinate below the baseline the font extends (i.e. it is typically negative)
      typoLineGap - returns the spacing between one row's descent and the next row's ascent
      Returns:
      1 on success (table present), 0 on failure
    • nstbtt_GetFontBoundingBox

      public static void nstbtt_GetFontBoundingBox(long info, long x0, long y0, long x1, long y1)
      Unsafe version of: GetFontBoundingBox
    • stbtt_GetFontBoundingBox

      public static void stbtt_GetFontBoundingBox(STBTTFontinfo info, IntBuffer x0, IntBuffer y0, IntBuffer x1, IntBuffer y1)
      Returns the bounding box around all possible characters.
      Parameters:
      info - an STBTTFontinfo struct
      x0 - the left coordinate
      y0 - the bottom coordinate
      x1 - the right coordinate
      y1 - the top coordinate
    • nstbtt_GetCodepointHMetrics

      public static void nstbtt_GetCodepointHMetrics(long info, int codepoint, long advanceWidth, long leftSideBearing)
      Unsafe version of: GetCodepointHMetrics
    • stbtt_GetCodepointHMetrics

      public static void stbtt_GetCodepointHMetrics(STBTTFontinfo info, int codepoint, @Nullable IntBuffer advanceWidth, @Nullable IntBuffer leftSideBearing)
      Returns horizontal metrics for the specified codepoint.

      The returned values are expressed in unscaled coordinates.

      Parameters:
      info - an STBTTFontinfo struct
      codepoint - the unicode codepoint
      advanceWidth - the offset from the current horizontal position to the next horizontal position
      leftSideBearing - the offset from the current horizontal position to the left edge of the character
    • nstbtt_GetCodepointKernAdvance

      public static int nstbtt_GetCodepointKernAdvance(long info, int ch1, int ch2)
      Unsafe version of: GetCodepointKernAdvance
    • stbtt_GetCodepointKernAdvance

      public static int stbtt_GetCodepointKernAdvance(STBTTFontinfo info, int ch1, int ch2)
      Returns the additional amount to add to the advance value between ch1 and ch2.
      Parameters:
      info - an STBTTFontinfo struct
      ch1 - the first unicode codepoint
      ch2 - the second unicode codepoint
    • nstbtt_GetCodepointBox

      public static int nstbtt_GetCodepointBox(long info, int codepoint, long x0, long y0, long x1, long y1)
      Unsafe version of: GetCodepointBox
    • stbtt_GetCodepointBox

      public static boolean stbtt_GetCodepointBox(STBTTFontinfo info, int codepoint, @Nullable IntBuffer x0, @Nullable IntBuffer y0, @Nullable IntBuffer x1, @Nullable IntBuffer y1)
      Gets the bounding box of the visible part of the glyph, in unscaled coordinates.
      Parameters:
      info - an STBTTFontinfo struct
      codepoint - the unicode codepoint
      x0 - returns the left coordinate
      y0 - returns the bottom coordinate
      x1 - returns the right coordinate
      y1 - returns the top coordinate
    • nstbtt_GetGlyphHMetrics

      public static void nstbtt_GetGlyphHMetrics(long info, int glyph_index, long advanceWidth, long leftSideBearing)
      Unsafe version of: GetGlyphHMetrics
    • stbtt_GetGlyphHMetrics

      public static void stbtt_GetGlyphHMetrics(STBTTFontinfo info, int glyph_index, @Nullable IntBuffer advanceWidth, @Nullable IntBuffer leftSideBearing)
      Glyph version of GetCodepointHMetrics, for greater efficiency.
      Parameters:
      info - an STBTTFontinfo struct
      glyph_index - the glyph index
      advanceWidth - the offset from the current horizontal position to the next horizontal position
      leftSideBearing - the offset from the current horizontal position to the left edge of the character
    • nstbtt_GetGlyphKernAdvance

      public static int nstbtt_GetGlyphKernAdvance(long info, int glyph1, int glyph2)
      Unsafe version of: GetGlyphKernAdvance
    • stbtt_GetGlyphKernAdvance

      public static int stbtt_GetGlyphKernAdvance(STBTTFontinfo info, int glyph1, int glyph2)
      Glyph version of GetCodepointKernAdvance, for greater efficiency.
      Parameters:
      info - an STBTTFontinfo struct
      glyph1 - the first glyph index
      glyph2 - the second glyph index
    • nstbtt_GetGlyphBox

      public static int nstbtt_GetGlyphBox(long info, int glyph_index, long x0, long y0, long x1, long y1)
      Unsafe version of: GetGlyphBox
    • stbtt_GetGlyphBox

      public static boolean stbtt_GetGlyphBox(STBTTFontinfo info, int glyph_index, @Nullable IntBuffer x0, @Nullable IntBuffer y0, @Nullable IntBuffer x1, @Nullable IntBuffer y1)
      Glyph version of GetCodepointBox, for greater efficiency.
      Parameters:
      info - an STBTTFontinfo struct
      glyph_index - the glyph index
      x0 - returns the left coordinate
      y0 - returns the bottom coordinate
      x1 - returns the right coordinate
      y1 - returns the top coordinate
    • nstbtt_GetKerningTableLength

      public static int nstbtt_GetKerningTableLength(long info)
    • stbtt_GetKerningTableLength

      public static int stbtt_GetKerningTableLength(STBTTFontinfo info)
    • nstbtt_GetKerningTable

      public static int nstbtt_GetKerningTable(long info, long table, int table_length)
      Unsafe version of: GetKerningTable
    • stbtt_GetKerningTable

      public static int stbtt_GetKerningTable(STBTTFontinfo info, STBTTKerningentry.Buffer table)
      Retrieves a complete list of all of the kerning pairs provided by the font.

      stbtt_GetKerningTable never writes more than table_length entries and returns how many entries it did write. The table will be sorted by (a.glyph1 == b.glyph1)?(a.glyph2 < b.glyph2):(a.glyph1 < b.glyph1)

    • nstbtt_IsGlyphEmpty

      public static int nstbtt_IsGlyphEmpty(long info, int glyph_index)
      Unsafe version of: IsGlyphEmpty
    • stbtt_IsGlyphEmpty

      public static boolean stbtt_IsGlyphEmpty(STBTTFontinfo info, int glyph_index)
      Returns non-zero if nothing is drawn for this glyph.
      Parameters:
      info - an STBTTFontinfo struct
      glyph_index - the glyph index
    • nstbtt_GetCodepointShape

      public static int nstbtt_GetCodepointShape(long info, int unicode_codepoint, long vertices)
      Unsafe version of: GetCodepointShape
    • stbtt_GetCodepointShape

      public static int stbtt_GetCodepointShape(STBTTFontinfo info, int unicode_codepoint, PointerBuffer vertices)
      Returns number of vertices and fills *vertices with the pointer to them

      The shape is a series of contours. Each one starts with a vmove, then consists of a series of mixed vline and vcurve segments. A vline draws a line from previous endpoint to its x,y; a vcurve draws a quadratic bezier from previous endpoint to its x,y, using cx,cy as the bezier control point.

      The STBTTVertex values are expressed in "unscaled" coordinates.

      Parameters:
      info - an STBTTFontinfo struct
      unicode_codepoint - the unicode codepoint
      vertices - returns a pointer to an array of STBTTVertex structs
    • stbtt_GetCodepointShape

      @Nullable public static STBTTVertex.Buffer stbtt_GetCodepointShape(STBTTFontinfo info, int unicode_codepoint)
      Returns number of vertices and fills *vertices with the pointer to them

      The shape is a series of contours. Each one starts with a vmove, then consists of a series of mixed vline and vcurve segments. A vline draws a line from previous endpoint to its x,y; a vcurve draws a quadratic bezier from previous endpoint to its x,y, using cx,cy as the bezier control point.

      The STBTTVertex values are expressed in "unscaled" coordinates.

      Parameters:
      info - an STBTTFontinfo struct
      unicode_codepoint - the unicode codepoint
    • nstbtt_GetGlyphShape

      public static int nstbtt_GetGlyphShape(long info, int glyph_index, long vertices)
      Unsafe version of: GetGlyphShape
    • stbtt_GetGlyphShape

      public static int stbtt_GetGlyphShape(STBTTFontinfo info, int glyph_index, PointerBuffer vertices)
      Glyph version of GetCodepointShape, for greater efficiency.
      Parameters:
      info - an STBTTFontinfo struct
      glyph_index - the unicode codepoint
      vertices - returns a pointer to an array of STBTTVertex structs
    • stbtt_GetGlyphShape

      @Nullable public static STBTTVertex.Buffer stbtt_GetGlyphShape(STBTTFontinfo info, int glyph_index)
      Glyph version of GetCodepointShape, for greater efficiency.
      Parameters:
      info - an STBTTFontinfo struct
      glyph_index - the unicode codepoint
    • nstbtt_FreeShape

      public static void nstbtt_FreeShape(long info, long vertices)
      Unsafe version of: FreeShape
    • stbtt_FreeShape

      public static void stbtt_FreeShape(STBTTFontinfo info, STBTTVertex.Buffer vertices)
      Frees the data allocated by GetCodepointShape and GetGlyphShape.
      Parameters:
      info - an STBTTFontinfo struct
      vertices - the array of STBTTVertex structs to free
    • nstbtt_FindSVGDoc

      public static long nstbtt_FindSVGDoc(long info, int gl)
    • stbtt_FindSVGDoc

      public static long stbtt_FindSVGDoc(STBTTFontinfo info, int gl)
    • nstbtt_GetCodepointSVG

      public static int nstbtt_GetCodepointSVG(long info, int unicode_codepoint, long svg)
      Unsafe version of: GetCodepointSVG
    • stbtt_GetCodepointSVG

      public static int stbtt_GetCodepointSVG(STBTTFontinfo info, int unicode_codepoint, PointerBuffer svg)
      Fills svg with the character's SVG data.
      Returns:
      data size or 0 if SVG not found
    • nstbtt_GetGlyphSVG

      public static int nstbtt_GetGlyphSVG(long info, int gl, long svg)
      Unsafe version of: GetGlyphSVG
    • stbtt_GetGlyphSVG

      public static int stbtt_GetGlyphSVG(STBTTFontinfo info, int gl, PointerBuffer svg)
      Fills svg with the character's SVG data.
      Returns:
      data size or 0 if SVG not found
    • nstbtt_FreeBitmap

      public static void nstbtt_FreeBitmap(long bitmap, long userdata)
      Unsafe version of: FreeBitmap
    • stbtt_FreeBitmap

      public static void stbtt_FreeBitmap(ByteBuffer bitmap, long userdata)
      Parameters:
      bitmap - the bitmap to free
      userdata - a pointer to an allocation context
    • stbtt_FreeBitmap

      public static void stbtt_FreeBitmap(ByteBuffer bitmap)
      Parameters:
      bitmap - the bitmap to free
    • nstbtt_GetCodepointBitmap

      public static long nstbtt_GetCodepointBitmap(long info, float scale_x, float scale_y, int codepoint, long width, long height, long xoff, long yoff)
      Unsafe version of: GetCodepointBitmap
    • stbtt_GetCodepointBitmap

      @Nullable public static ByteBuffer stbtt_GetCodepointBitmap(STBTTFontinfo info, float scale_x, float scale_y, int codepoint, IntBuffer width, IntBuffer height, @Nullable IntBuffer xoff, @Nullable IntBuffer yoff)
      Allocates a large-enough single-channel 8bpp bitmap and renders the specified character/glyph at the specified scale into it, with antialiasing.
      Parameters:
      info - an STBTTFontinfo struct
      scale_x - the horizontal scale
      scale_y - the vertical scale
      codepoint - the unicode codepoint to render
      width - returns the bitmap width
      height - returns the bitmap height
      xoff - returns the horizontal offset in pixel space from the glyph origin to the left of the bitmap
      yoff - returns the vertical offset in pixel space from the glyph origin to the top of the bitmap
    • nstbtt_GetCodepointBitmapSubpixel

      public static long nstbtt_GetCodepointBitmapSubpixel(long info, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint, long width, long height, long xoff, long yoff)
      Unsafe version of: GetCodepointBitmapSubpixel
    • stbtt_GetCodepointBitmapSubpixel

      @Nullable public static ByteBuffer stbtt_GetCodepointBitmapSubpixel(STBTTFontinfo info, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint, IntBuffer width, IntBuffer height, @Nullable IntBuffer xoff, @Nullable IntBuffer yoff)
      Same as GetCodepointBitmap, but you can specify a subpixel shift for the character.
      Parameters:
      info - an STBTTFontinfo struct
      scale_x - the horizontal scale
      scale_y - the vertical scale
      shift_x - the horizontal subpixel shift
      shift_y - the vertical subpixel shift
      codepoint - the unicode codepoint to render
      width - returns the bitmap width
      height - returns the bitmap height
      xoff - returns the horizontal offset in pixel space from the glyph origin to the left of the bitmap
      yoff - returns the vertical offset in pixel space from the glyph origin to the top of the bitmap
    • nstbtt_MakeCodepointBitmap

      public static void nstbtt_MakeCodepointBitmap(long info, long output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int codepoint)
      Unsafe version of: MakeCodepointBitmap
    • stbtt_MakeCodepointBitmap

      public static void stbtt_MakeCodepointBitmap(STBTTFontinfo info, ByteBuffer output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int codepoint)
      Same as GetCodepointBitmap, but you pass in storage for the bitmap in the form of output, with row spacing of out_stride bytes. The bitmap is clipped to out_w/out_h bytes. Call GetCodepointBitmapBox to get the width and height and positioning info for it first.
      Parameters:
      info - an STBTTFontinfo struct
      output - the bitmap storage
      out_w - the bitmap width
      out_h - the bitmap height
      out_stride - the row stride, in bytes
      scale_x - the horizontal scale
      scale_y - the vertical scale
      codepoint - the unicode codepoint to render
    • nstbtt_MakeCodepointBitmapSubpixel

      public static void nstbtt_MakeCodepointBitmapSubpixel(long info, long output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint)
      Unsafe version of: MakeCodepointBitmapSubpixel
    • stbtt_MakeCodepointBitmapSubpixel

      public static void stbtt_MakeCodepointBitmapSubpixel(STBTTFontinfo info, ByteBuffer output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint)
      Same as MakeCodepointBitmap, but you can specify a subpixel shift for the character.
      Parameters:
      info - an STBTTFontinfo struct
      output - the bitmap storage
      out_w - the bitmap width
      out_h - the bitmap height
      out_stride - the row stride, in bytes
      scale_x - the horizontal scale
      scale_y - the vertical scale
      shift_x - the horizontal subpixel shift
      shift_y - the vertical subpixel shift
      codepoint - the unicode codepoint to render
    • nstbtt_MakeCodepointBitmapSubpixelPrefilter

      public static void nstbtt_MakeCodepointBitmapSubpixelPrefilter(long info, long output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, long sub_x, long sub_y, int codepoint)
    • stbtt_MakeCodepointBitmapSubpixelPrefilter

      public static void stbtt_MakeCodepointBitmapSubpixelPrefilter(STBTTFontinfo info, ByteBuffer output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, FloatBuffer sub_x, FloatBuffer sub_y, int codepoint)
      Same as MakeCodepointBitmapSubpixel, but prefiltering is performed (see PackSetOversampling).
      Parameters:
      info - an STBTTFontinfo struct
      output - the bitmap storage
      out_w - the bitmap width
      out_h - the bitmap height
      out_stride - the row stride, in bytes
      scale_x - the horizontal scale
      scale_y - the vertical scale
      shift_x - the horizontal subpixel shift
      shift_y - the vertical subpixel shift
      oversample_x - the horizontal oversampling amount
      oversample_y - the vertical oversampling amount
      sub_x - returns the horizontal oversample shift
      sub_y - returns the vertical oversample shift
      codepoint - the unicode codepoint to render
    • nstbtt_GetCodepointBitmapBox

      public static void nstbtt_GetCodepointBitmapBox(long font, int codepoint, float scale_x, float scale_y, long ix0, long iy0, long ix1, long iy1)
      Unsafe version of: GetCodepointBitmapBox
    • stbtt_GetCodepointBitmapBox

      public static void stbtt_GetCodepointBitmapBox(STBTTFontinfo font, int codepoint, float scale_x, float scale_y, @Nullable IntBuffer ix0, @Nullable IntBuffer iy0, @Nullable IntBuffer ix1, @Nullable IntBuffer iy1)
      Get the bbox of the bitmap centered around the glyph origin; so the bitmap width is ix1-ix0, height is iy1-iy0, and location to place the bitmap top left is (leftSideBearing*scale,iy0).

      Note that the bitmap uses y-increases-down, but the shape uses y-increases-up, so CodepointBitmapBox and CodepointBox are inverted.

      Parameters:
      font - an STBTTFontinfo struct
      codepoint - the unicode codepoint
      scale_x - the horizontal scale
      scale_y - the vertical scale
      ix0 - returns the left coordinate
      iy0 - returns the bottom coordinate
      ix1 - returns the right coordinate
      iy1 - returns the top coordinate
    • nstbtt_GetCodepointBitmapBoxSubpixel

      public static void nstbtt_GetCodepointBitmapBoxSubpixel(long font, int codepoint, float scale_x, float scale_y, float shift_x, float shift_y, long ix0, long iy0, long ix1, long iy1)
    • stbtt_GetCodepointBitmapBoxSubpixel

      public static void stbtt_GetCodepointBitmapBoxSubpixel(STBTTFontinfo font, int codepoint, float scale_x, float scale_y, float shift_x, float shift_y, @Nullable IntBuffer ix0, @Nullable IntBuffer iy0, @Nullable IntBuffer ix1, @Nullable IntBuffer iy1)
      Same as GetCodepointBitmapBox, but you can specify a subpixel shift for the character.
      Parameters:
      font - an STBTTFontinfo struct
      codepoint - the unicode codepoint
      scale_x - the horizontal scale
      scale_y - the vertical scale
      shift_x - the horizontal subpixel shift
      shift_y - the vertical subpixel shift
      ix0 - returns the left coordinate
      iy0 - returns the bottom coordinate
      ix1 - returns the right coordinate
      iy1 - returns the top coordinate
    • nstbtt_GetGlyphBitmap

      public static long nstbtt_GetGlyphBitmap(long info, float scale_x, float scale_y, int glyph, long width, long height, long xoff, long yoff)
      Unsafe version of: GetGlyphBitmap
    • stbtt_GetGlyphBitmap

      @Nullable public static ByteBuffer stbtt_GetGlyphBitmap(STBTTFontinfo info, float scale_x, float scale_y, int glyph, IntBuffer width, IntBuffer height, @Nullable IntBuffer xoff, @Nullable IntBuffer yoff)
      Allocates a large-enough single-channel 8bpp bitmap and renders the specified character/glyph at the specified scale into it, with antialiasing.
      Parameters:
      info - an STBTTFontinfo struct
      scale_x - the horizontal scale
      scale_y - the vertical scale
      glyph - the glyph index to render
      width - returns the bitmap width
      height - returns the bitmap height
      xoff - returns the horizontal offset in pixel space from the glyph origin to the left of the bitmap
      yoff - returns the vertical offset in pixel space from the glyph origin to the top of the bitmap
    • nstbtt_GetGlyphBitmapSubpixel

      public static long nstbtt_GetGlyphBitmapSubpixel(long info, float scale_x, float scale_y, float shift_x, float shift_y, int glyph, long width, long height, long xoff, long yoff)
      Unsafe version of: GetGlyphBitmapSubpixel
    • stbtt_GetGlyphBitmapSubpixel

      @Nullable public static ByteBuffer stbtt_GetGlyphBitmapSubpixel(STBTTFontinfo info, float scale_x, float scale_y, float shift_x, float shift_y, int glyph, IntBuffer width, IntBuffer height, @Nullable IntBuffer xoff, @Nullable IntBuffer yoff)
      Same as GetGlyphBitmap, but you can specify a subpixel shift for the character.
      Parameters:
      info - an STBTTFontinfo struct
      scale_x - the horizontal scale
      scale_y - the vertical scale
      shift_x - the horizontal subpixel shift
      shift_y - the vertical subpixel shift
      glyph - the glyph index to render
      width - returns the bitmap width
      height - returns the bitmap height
      xoff - returns the horizontal offset in pixel space from the glyph origin to the left of the bitmap
      yoff - returns the vertical offset in pixel space from the glyph origin to the top of the bitmap
    • nstbtt_MakeGlyphBitmap

      public static void nstbtt_MakeGlyphBitmap(long info, long output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int glyph)
      Unsafe version of: MakeGlyphBitmap
    • stbtt_MakeGlyphBitmap

      public static void stbtt_MakeGlyphBitmap(STBTTFontinfo info, ByteBuffer output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int glyph)
      Same as GetGlyphBitmap, but you pass in storage for the bitmap in the form of output, with row spacing of out_stride bytes. The bitmap is clipped to out_w/out_h bytes. Call GetGlyphBitmapBox to get the width and height and positioning info for it first.
      Parameters:
      info - an STBTTFontinfo struct
      output - the bitmap storage
      out_w - the bitmap width
      out_h - the bitmap height
      out_stride - the row stride, in bytes
      scale_x - the horizontal scale
      scale_y - the vertical scale
      glyph - the glyph index to render
    • nstbtt_MakeGlyphBitmapSubpixel

      public static void nstbtt_MakeGlyphBitmapSubpixel(long info, long output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int glyph)
      Unsafe version of: MakeGlyphBitmapSubpixel
    • stbtt_MakeGlyphBitmapSubpixel

      public static void stbtt_MakeGlyphBitmapSubpixel(STBTTFontinfo info, ByteBuffer output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int glyph)
      Same as MakeGlyphBitmap, but you can specify a subpixel shift for the character.
      Parameters:
      info - an STBTTFontinfo struct
      output - the bitmap storage
      out_w - the bitmap width
      out_h - the bitmap height
      out_stride - the row stride, in bytes
      scale_x - the horizontal scale
      scale_y - the vertical scale
      shift_x - the horizontal subpixel shift
      shift_y - the vertical subpixel shift
      glyph - the glyph index to render
    • nstbtt_MakeGlyphBitmapSubpixelPrefilter

      public static void nstbtt_MakeGlyphBitmapSubpixelPrefilter(long info, long output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, long sub_x, long sub_y, int glyph)
    • stbtt_MakeGlyphBitmapSubpixelPrefilter

      public static void stbtt_MakeGlyphBitmapSubpixelPrefilter(STBTTFontinfo info, ByteBuffer output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, FloatBuffer sub_x, FloatBuffer sub_y, int glyph)
      Same as MakeGlyphBitmapSubpixel, but prefiltering is performed (see PackSetOversampling).
      Parameters:
      info - an STBTTFontinfo struct
      output - the bitmap storage
      out_w - the bitmap width
      out_h - the bitmap height
      out_stride - the row stride, in bytes
      scale_x - the horizontal scale
      scale_y - the vertical scale
      shift_x - the horizontal subpixel shift
      shift_y - the vertical subpixel shift
      oversample_x - the horizontal oversampling amount
      oversample_y - the vertical oversampling amount
      sub_x - returns the horizontal oversample shift
      sub_y - returns the vertical oversample shift
      glyph - the glyph index to render
    • nstbtt_GetGlyphBitmapBox

      public static void nstbtt_GetGlyphBitmapBox(long font, int glyph, float scale_x, float scale_y, long ix0, long iy0, long ix1, long iy1)
      Unsafe version of: GetGlyphBitmapBox
    • stbtt_GetGlyphBitmapBox

      public static void stbtt_GetGlyphBitmapBox(STBTTFontinfo font, int glyph, float scale_x, float scale_y, @Nullable IntBuffer ix0, @Nullable IntBuffer iy0, @Nullable IntBuffer ix1, @Nullable IntBuffer iy1)
      Get the bbox of the bitmap centered around the glyph origin; so the bitmap width is ix1-ix0, height is iy1-iy0, and location to place the bitmap top left is (leftSideBearing*scale,iy0).

      Note that the bitmap uses y-increases-down, but the shape uses y-increases-up, so GlyphBitmapBox and GlyphBox are inverted.

      Parameters:
      font - an STBTTFontinfo struct
      glyph - the glyph index
      scale_x - the horizontal scale
      scale_y - the vertical scale
      ix0 - returns the left coordinate
      iy0 - returns the bottom coordinate
      ix1 - returns the right coordinate
      iy1 - returns the top coordinate
    • nstbtt_GetGlyphBitmapBoxSubpixel

      public static void nstbtt_GetGlyphBitmapBoxSubpixel(long font, int glyph, float scale_x, float scale_y, float shift_x, float shift_y, long ix0, long iy0, long ix1, long iy1)
      Unsafe version of: GetGlyphBitmapBoxSubpixel
    • stbtt_GetGlyphBitmapBoxSubpixel

      public static void stbtt_GetGlyphBitmapBoxSubpixel(STBTTFontinfo font, int glyph, float scale_x, float scale_y, float shift_x, float shift_y, @Nullable IntBuffer ix0, @Nullable IntBuffer iy0, @Nullable IntBuffer ix1, @Nullable IntBuffer iy1)
      Same as GetGlyphBitmapBox, but you can specify a subpixel shift for the character.
      Parameters:
      font - an STBTTFontinfo struct
      glyph - the glyph index
      scale_x - the horizontal scale
      scale_y - the vertical scale
      shift_x - the horizontal subpixel shift
      shift_y - the vertical subpixel shift
      ix0 - returns the left coordinate
      iy0 - returns the bottom coordinate
      ix1 - returns the right coordinate
      iy1 - returns the top coordinate
    • nstbtt_Rasterize

      public static void nstbtt_Rasterize(long result, float flatness_in_pixels, long vertices, int num_verts, float scale_x, float scale_y, float shift_x, float shift_y, int x_off, int y_off, int invert, long alloc_context)
      Unsafe version of: Rasterize
      Parameters:
      num_verts - number of vertices in above array
    • stbtt_Rasterize

      public static void stbtt_Rasterize(STBTTBitmap result, float flatness_in_pixels, STBTTVertex.Buffer vertices, float scale_x, float scale_y, float shift_x, float shift_y, int x_off, int y_off, boolean invert)
      Rasterize a shape with quadratic beziers into a bitmap.
      Parameters:
      result - 1-channel bitmap to draw into
      flatness_in_pixels - allowable error of curve in pixels
      vertices - array of vertices defining shape
      scale_x - horizontal scale applied to input vertices
      scale_y - vertical scale applied to input vertices
      shift_x - horizontal translation applied to input vertices
      shift_y - vertical translation applied to input vertices
      x_off - another horizontal translation applied to input
      y_off - another vertical translation applied to input
      invert - if non-zero, vertically flip shape
    • nstbtt_FreeSDF

      public static void nstbtt_FreeSDF(long bitmap, long userdata)
      Unsafe version of: FreeSDF
    • stbtt_FreeSDF

      public static void stbtt_FreeSDF(ByteBuffer bitmap, long userdata)
      Frees an SDF bitmap.
      Parameters:
      bitmap - the SDF bitmap to free
      userdata - a pointer to an allocation context
    • stbtt_FreeSDF

      public static void stbtt_FreeSDF(ByteBuffer bitmap)
      Frees an SDF bitmap.
      Parameters:
      bitmap - the SDF bitmap to free
    • nstbtt_GetGlyphSDF

      public static long nstbtt_GetGlyphSDF(long font, float scale, int glyph, int padding, byte onedge_value, float pixel_dist_scale, long width, long height, long xoff, long yoff)
      Unsafe version of: GetGlyphSDF
    • stbtt_GetGlyphSDF

      @Nullable public static ByteBuffer stbtt_GetGlyphSDF(STBTTFontinfo font, float scale, int glyph, int padding, byte onedge_value, float pixel_dist_scale, IntBuffer width, IntBuffer height, IntBuffer xoff, IntBuffer yoff)
      Computes a discretized SDF field for a single character, suitable for storing in a single-channel texture, sampling with bilinear filtering, and testing against larger than some threshold to produce scalable fonts.

      pixel_dist_scale & onedge_value are a scale & bias that allows you to make optimal use of the limited 0..255 for your application, trading off precision and special effects. SDF values outside the range 0..255 are clamped to 0..255.

      Example:

      
       scale = stbtt_ScaleForPixelHeight(22)
       padding = 5
       onedge_value = 180
       pixel_dist_scale = 180/5.0 = 36.0

      This will create an SDF bitmap in which the character is about 22 pixels high but the whole bitmap is about 22+5+5=32 pixels high. To produce a filled shape, sample the SDF at each pixel and fill the pixel if the SDF value is greater than or equal to 180/255. (You'll actually want to antialias, which is beyond the scope of this example.) Additionally, you can compute offset outlines (e.g. to stroke the character border inside & outside, or only outside). For example, to fill outside the character up to 3 SDF pixels, you would compare against (180-36.0*3)/255 = 72/255. The above choice of variables maps a range from 5 pixels outside the shape to 2 pixels inside the shape to 0..255; this is intended primarily for apply outside effects only (the interior range is needed to allow proper antialiasing of the font at smaller sizes).

      The function computes the SDF analytically at each SDF pixel, not by e.g. building a higher-res bitmap and approximating it. In theory the quality should be as high as possible for an SDF of this size & representation, but unclear if this is true in practice (perhaps building a higher-res bitmap and computing from that can allow drop-out prevention).

      The algorithm has not been optimized at all, so expect it to be slow if computing lots of characters or very large sizes.

      Parameters:
      font - an STBTTFontinfo struct
      scale - controls the size of the resulting SDF bitmap, same as it would be creating a regular bitmap
      glyph - the glyph to generate the SDF for
      padding - extra "pixels" around the character which are filled with the distance to the character (not 0), which allows effects like bit outlines
      onedge_value - value 0-255 to test the SDF against to reconstruct the character (i.e. the isocontour of the character)
      pixel_dist_scale - what value the SDF should increase by when moving one SDF "pixel" away from the edge (on the 0..255 scale). If positive, > onedge_value is inside; if negative, < onedge_value is inside.
      width - output width of the SDF bitmap (including padding)
      height - output height of the SDF bitmap (including padding)
      xoff - output horizontal origin of the character
      yoff - output vertical origin of the character
    • nstbtt_GetCodepointSDF

      public static long nstbtt_GetCodepointSDF(long font, float scale, int codepoint, int padding, byte onedge_value, float pixel_dist_scale, long width, long height, long xoff, long yoff)
      Unsafe version of: GetCodepointSDF
    • stbtt_GetCodepointSDF

      @Nullable public static ByteBuffer stbtt_GetCodepointSDF(STBTTFontinfo font, float scale, int codepoint, int padding, byte onedge_value, float pixel_dist_scale, IntBuffer width, IntBuffer height, IntBuffer xoff, IntBuffer yoff)
      Codepoint version of GetGlyphSDF.
      Parameters:
      font - an STBTTFontinfo struct
      scale - controls the size of the resulting SDF bitmap, same as it would be creating a regular bitmap
      codepoint - the codepoint to generate the SDF for
      padding - extra "pixels" around the character which are filled with the distance to the character (not 0), which allows effects like bit outlines
      onedge_value - value 0-255 to test the SDF against to reconstruct the character (i.e. the isocontour of the character)
      pixel_dist_scale - what value the SDF should increase by when moving one SDF "pixel" away from the edge (on the 0..255 scale). If positive, > onedge_value is inside; if negative, < onedge_value is inside.
      width - output width of the SDF bitmap (including padding)
      height - output height of the SDF bitmap (including padding)
      xoff - output horizontal origin of the character
      yoff - output vertical origin of the character
    • nstbtt_FindMatchingFont

      public static int nstbtt_FindMatchingFont(long fontdata, long name, int flags)
      Unsafe version of: FindMatchingFont
    • stbtt_FindMatchingFont

      public static int stbtt_FindMatchingFont(ByteBuffer fontdata, ByteBuffer name, int flags)
      Returns the offset (not index) of the font that matches, or -1 if none.

      If you use STBTT_MACSTYLE_DONTCARE, use a font name like "Arial Bold". If you use any other flag, use a font name like "Arial"; this checks the macStyle header field; I don't know if fonts set this consistently.

      Parameters:
      fontdata - the font data
      name - the font name
      flags - the style flags. One of:
      MACSTYLE_DONTCAREMACSTYLE_BOLDMACSTYLE_ITALICMACSTYLE_UNDERSCOREMACSTYLE_NONE
    • stbtt_FindMatchingFont

      public static int stbtt_FindMatchingFont(ByteBuffer fontdata, CharSequence name, int flags)
      Returns the offset (not index) of the font that matches, or -1 if none.

      If you use STBTT_MACSTYLE_DONTCARE, use a font name like "Arial Bold". If you use any other flag, use a font name like "Arial"; this checks the macStyle header field; I don't know if fonts set this consistently.

      Parameters:
      fontdata - the font data
      name - the font name
      flags - the style flags. One of:
      MACSTYLE_DONTCAREMACSTYLE_BOLDMACSTYLE_ITALICMACSTYLE_UNDERSCOREMACSTYLE_NONE
    • nstbtt_CompareUTF8toUTF16_bigendian

      public static int nstbtt_CompareUTF8toUTF16_bigendian(long s1, int len1, long s2, int len2)
      Unsafe version of: CompareUTF8toUTF16_bigendian
      Parameters:
      len1 - the length of the first string, in bytes
      len2 - the length of the second string, in bytes
    • stbtt_CompareUTF8toUTF16_bigendian

      public static boolean stbtt_CompareUTF8toUTF16_bigendian(ByteBuffer s1, ByteBuffer s2)
      Returns 1/0 whether the first string interpreted as utf8 is identical to the second string interpreted as big-endian utf16... useful for strings returned from GetFontNameString.
      Parameters:
      s1 - the first string
      s2 - the second string
    • nstbtt_GetFontNameString

      public static long nstbtt_GetFontNameString(long font, long length, int platformID, int encodingID, int languageID, int nameID)
      Unsafe version of: GetFontNameString
      Parameters:
      length - returns the string length, in bytes
    • stbtt_GetFontNameString

      @Nullable public static ByteBuffer stbtt_GetFontNameString(STBTTFontinfo font, int platformID, int encodingID, int languageID, int nameID)
      Returns the string (which may be big-endian double byte, e.g. for unicode) and puts the length in bytes in *length.

      See the truetype spec:

      Parameters:
      font - an STBTTFontinfo struct
      platformID - the platform ID. One of:
      PLATFORM_ID_UNICODEPLATFORM_ID_MACPLATFORM_ID_ISOPLATFORM_ID_MICROSOFT
      encodingID - the encoding ID. One of:
      UNICODE_EID_UNICODE_1_0UNICODE_EID_UNICODE_1_1UNICODE_EID_ISO_10646UNICODE_EID_UNICODE_2_0_BMP
      UNICODE_EID_UNICODE_2_0_FULLMS_EID_SYMBOLMS_EID_UNICODE_BMPMS_EID_SHIFTJIS
      MS_EID_UNICODE_FULLMAC_EID_ROMANMAC_EID_JAPANESEMAC_EID_CHINESE_TRAD
      MAC_EID_KOREANMAC_EID_ARABICMAC_EID_HEBREWMAC_EID_GREEK
      MAC_EID_RUSSIAN
      languageID - the language ID. One of:
      MS_LANG_ENGLISHMS_LANG_CHINESEMS_LANG_DUTCHMS_LANG_FRENCHMS_LANG_GERMAN
      MS_LANG_HEBREWMS_LANG_ITALIANMS_LANG_JAPANESEMS_LANG_KOREANMS_LANG_RUSSIAN
      MS_LANG_SPANISHMS_LANG_SWEDISHMAC_LANG_ENGLISHMAC_LANG_ARABICMAC_LANG_DUTCH
      MAC_LANG_FRENCHMAC_LANG_GERMANMAC_LANG_HEBREWMAC_LANG_ITALIANMAC_LANG_JAPANESE
      MAC_LANG_KOREANMAC_LANG_RUSSIANMAC_LANG_SPANISHMAC_LANG_SWEDISHMAC_LANG_CHINESE_SIMPLIFIED
      MAC_LANG_CHINESE_TRAD
      nameID - the name ID
    • nstbtt_GetBakedQuad

      public static void nstbtt_GetBakedQuad(long chardata, int pw, int ph, int char_index, float[] xpos, float[] ypos, long q, int opengl_fillrule)
    • stbtt_GetBakedQuad

      public static void stbtt_GetBakedQuad(STBTTBakedChar.Buffer chardata, int pw, int ph, int char_index, float[] xpos, float[] ypos, STBTTAlignedQuad q, boolean opengl_fillrule)
      Array version of: GetBakedQuad
    • nstbtt_GetScaledFontVMetrics

      public static void nstbtt_GetScaledFontVMetrics(long fontdata, int index, float size, float[] ascent, float[] descent, float[] lineGap)
    • stbtt_GetScaledFontVMetrics

      public static void stbtt_GetScaledFontVMetrics(ByteBuffer fontdata, int index, float size, float[] ascent, float[] descent, float[] lineGap)
      Array version of: GetScaledFontVMetrics
    • nstbtt_GetPackedQuad

      public static void nstbtt_GetPackedQuad(long chardata, int pw, int ph, int char_index, float[] xpos, float[] ypos, long q, int align_to_integer)
    • stbtt_GetPackedQuad

      public static void stbtt_GetPackedQuad(STBTTPackedchar.Buffer chardata, int pw, int ph, int char_index, float[] xpos, float[] ypos, STBTTAlignedQuad q, boolean align_to_integer)
      Array version of: GetPackedQuad
    • nstbtt_GetFontVMetrics

      public static void nstbtt_GetFontVMetrics(long info, int[] ascent, int[] descent, int[] lineGap)
    • stbtt_GetFontVMetrics

      public static void stbtt_GetFontVMetrics(STBTTFontinfo info, @Nullable int[] ascent, @Nullable int[] descent, @Nullable int[] lineGap)
      Array version of: GetFontVMetrics
    • nstbtt_GetFontVMetricsOS2

      public static int nstbtt_GetFontVMetricsOS2(long info, int[] typoAscent, int[] typoDescent, int[] typoLineGap)
    • stbtt_GetFontVMetricsOS2

      public static boolean stbtt_GetFontVMetricsOS2(STBTTFontinfo info, @Nullable int[] typoAscent, @Nullable int[] typoDescent, @Nullable int[] typoLineGap)
      Array version of: GetFontVMetricsOS2
    • nstbtt_GetFontBoundingBox

      public static void nstbtt_GetFontBoundingBox(long info, int[] x0, int[] y0, int[] x1, int[] y1)
    • stbtt_GetFontBoundingBox

      public static void stbtt_GetFontBoundingBox(STBTTFontinfo info, int[] x0, int[] y0, int[] x1, int[] y1)
      Array version of: GetFontBoundingBox
    • nstbtt_GetCodepointHMetrics

      public static void nstbtt_GetCodepointHMetrics(long info, int codepoint, int[] advanceWidth, int[] leftSideBearing)
    • stbtt_GetCodepointHMetrics

      public static void stbtt_GetCodepointHMetrics(STBTTFontinfo info, int codepoint, @Nullable int[] advanceWidth, @Nullable int[] leftSideBearing)
      Array version of: GetCodepointHMetrics
    • nstbtt_GetCodepointBox

      public static int nstbtt_GetCodepointBox(long info, int codepoint, int[] x0, int[] y0, int[] x1, int[] y1)
    • stbtt_GetCodepointBox

      public static boolean stbtt_GetCodepointBox(STBTTFontinfo info, int codepoint, @Nullable int[] x0, @Nullable int[] y0, @Nullable int[] x1, @Nullable int[] y1)
      Array version of: GetCodepointBox
    • nstbtt_GetGlyphHMetrics

      public static void nstbtt_GetGlyphHMetrics(long info, int glyph_index, int[] advanceWidth, int[] leftSideBearing)
    • stbtt_GetGlyphHMetrics

      public static void stbtt_GetGlyphHMetrics(STBTTFontinfo info, int glyph_index, @Nullable int[] advanceWidth, @Nullable int[] leftSideBearing)
      Array version of: GetGlyphHMetrics
    • nstbtt_GetGlyphBox

      public static int nstbtt_GetGlyphBox(long info, int glyph_index, int[] x0, int[] y0, int[] x1, int[] y1)
    • stbtt_GetGlyphBox

      public static boolean stbtt_GetGlyphBox(STBTTFontinfo info, int glyph_index, @Nullable int[] x0, @Nullable int[] y0, @Nullable int[] x1, @Nullable int[] y1)
      Array version of: GetGlyphBox
    • nstbtt_GetCodepointBitmap

      public static long nstbtt_GetCodepointBitmap(long info, float scale_x, float scale_y, int codepoint, int[] width, int[] height, int[] xoff, int[] yoff)
    • stbtt_GetCodepointBitmap

      @Nullable public static ByteBuffer stbtt_GetCodepointBitmap(STBTTFontinfo info, float scale_x, float scale_y, int codepoint, int[] width, int[] height, @Nullable int[] xoff, @Nullable int[] yoff)
      Array version of: GetCodepointBitmap
    • nstbtt_GetCodepointBitmapSubpixel

      public static long nstbtt_GetCodepointBitmapSubpixel(long info, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint, int[] width, int[] height, int[] xoff, int[] yoff)
    • stbtt_GetCodepointBitmapSubpixel

      @Nullable public static ByteBuffer stbtt_GetCodepointBitmapSubpixel(STBTTFontinfo info, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint, int[] width, int[] height, @Nullable int[] xoff, @Nullable int[] yoff)
      Array version of: GetCodepointBitmapSubpixel
    • nstbtt_MakeCodepointBitmapSubpixelPrefilter

      public static void nstbtt_MakeCodepointBitmapSubpixelPrefilter(long info, long output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float[] sub_x, float[] sub_y, int codepoint)
    • stbtt_MakeCodepointBitmapSubpixelPrefilter

      public static void stbtt_MakeCodepointBitmapSubpixelPrefilter(STBTTFontinfo info, ByteBuffer output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float[] sub_x, float[] sub_y, int codepoint)
    • nstbtt_GetCodepointBitmapBox

      public static void nstbtt_GetCodepointBitmapBox(long font, int codepoint, float scale_x, float scale_y, int[] ix0, int[] iy0, int[] ix1, int[] iy1)
    • stbtt_GetCodepointBitmapBox

      public static void stbtt_GetCodepointBitmapBox(STBTTFontinfo font, int codepoint, float scale_x, float scale_y, @Nullable int[] ix0, @Nullable int[] iy0, @Nullable int[] ix1, @Nullable int[] iy1)
      Array version of: GetCodepointBitmapBox
    • nstbtt_GetCodepointBitmapBoxSubpixel

      public static void nstbtt_GetCodepointBitmapBoxSubpixel(long font, int codepoint, float scale_x, float scale_y, float shift_x, float shift_y, int[] ix0, int[] iy0, int[] ix1, int[] iy1)
    • stbtt_GetCodepointBitmapBoxSubpixel

      public static void stbtt_GetCodepointBitmapBoxSubpixel(STBTTFontinfo font, int codepoint, float scale_x, float scale_y, float shift_x, float shift_y, @Nullable int[] ix0, @Nullable int[] iy0, @Nullable int[] ix1, @Nullable int[] iy1)
    • nstbtt_GetGlyphBitmap

      public static long nstbtt_GetGlyphBitmap(long info, float scale_x, float scale_y, int glyph, int[] width, int[] height, int[] xoff, int[] yoff)
    • stbtt_GetGlyphBitmap

      @Nullable public static ByteBuffer stbtt_GetGlyphBitmap(STBTTFontinfo info, float scale_x, float scale_y, int glyph, int[] width, int[] height, @Nullable int[] xoff, @Nullable int[] yoff)
      Array version of: GetGlyphBitmap
    • nstbtt_GetGlyphBitmapSubpixel

      public static long nstbtt_GetGlyphBitmapSubpixel(long info, float scale_x, float scale_y, float shift_x, float shift_y, int glyph, int[] width, int[] height, int[] xoff, int[] yoff)
    • stbtt_GetGlyphBitmapSubpixel

      @Nullable public static ByteBuffer stbtt_GetGlyphBitmapSubpixel(STBTTFontinfo info, float scale_x, float scale_y, float shift_x, float shift_y, int glyph, int[] width, int[] height, @Nullable int[] xoff, @Nullable int[] yoff)
      Array version of: GetGlyphBitmapSubpixel
    • nstbtt_MakeGlyphBitmapSubpixelPrefilter

      public static void nstbtt_MakeGlyphBitmapSubpixelPrefilter(long info, long output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float[] sub_x, float[] sub_y, int glyph)
    • stbtt_MakeGlyphBitmapSubpixelPrefilter

      public static void stbtt_MakeGlyphBitmapSubpixelPrefilter(STBTTFontinfo info, ByteBuffer output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float[] sub_x, float[] sub_y, int glyph)
    • nstbtt_GetGlyphBitmapBox

      public static void nstbtt_GetGlyphBitmapBox(long font, int glyph, float scale_x, float scale_y, int[] ix0, int[] iy0, int[] ix1, int[] iy1)
    • stbtt_GetGlyphBitmapBox

      public static void stbtt_GetGlyphBitmapBox(STBTTFontinfo font, int glyph, float scale_x, float scale_y, @Nullable int[] ix0, @Nullable int[] iy0, @Nullable int[] ix1, @Nullable int[] iy1)
      Array version of: GetGlyphBitmapBox
    • nstbtt_GetGlyphBitmapBoxSubpixel

      public static void nstbtt_GetGlyphBitmapBoxSubpixel(long font, int glyph, float scale_x, float scale_y, float shift_x, float shift_y, int[] ix0, int[] iy0, int[] ix1, int[] iy1)
    • stbtt_GetGlyphBitmapBoxSubpixel

      public static void stbtt_GetGlyphBitmapBoxSubpixel(STBTTFontinfo font, int glyph, float scale_x, float scale_y, float shift_x, float shift_y, @Nullable int[] ix0, @Nullable int[] iy0, @Nullable int[] ix1, @Nullable int[] iy1)
      Array version of: GetGlyphBitmapBoxSubpixel
    • nstbtt_GetGlyphSDF

      public static long nstbtt_GetGlyphSDF(long font, float scale, int glyph, int padding, byte onedge_value, float pixel_dist_scale, int[] width, int[] height, int[] xoff, int[] yoff)
    • stbtt_GetGlyphSDF

      @Nullable public static ByteBuffer stbtt_GetGlyphSDF(STBTTFontinfo font, float scale, int glyph, int padding, byte onedge_value, float pixel_dist_scale, int[] width, int[] height, int[] xoff, int[] yoff)
      Array version of: GetGlyphSDF
    • nstbtt_GetCodepointSDF

      public static long nstbtt_GetCodepointSDF(long font, float scale, int codepoint, int padding, byte onedge_value, float pixel_dist_scale, int[] width, int[] height, int[] xoff, int[] yoff)
    • stbtt_GetCodepointSDF

      @Nullable public static ByteBuffer stbtt_GetCodepointSDF(STBTTFontinfo font, float scale, int codepoint, int padding, byte onedge_value, float pixel_dist_scale, int[] width, int[] height, int[] xoff, int[] yoff)
      Array version of: GetCodepointSDF