mirror of https://github.com/nothings/stb.git
stb_truetype: Support reading OS/2 vertical metrics
...as present in MS TrueType files. Since this table is optional, the new stbtt_GetFontVMetricsOS2 has a return value and can fail. This is a replacement for pull request #463. Fixes #463.
This commit is contained in:
parent
49c7f1b397
commit
30c7c6b583
|
@ -27,6 +27,7 @@
|
||||||
// Ryan Gordon
|
// Ryan Gordon
|
||||||
// Simon Glass
|
// Simon Glass
|
||||||
// github:IntellectualKitty
|
// github:IntellectualKitty
|
||||||
|
// Imanol Celaya
|
||||||
//
|
//
|
||||||
// Bug/warning reports/fixes:
|
// Bug/warning reports/fixes:
|
||||||
// "Zer" on mollyrocket
|
// "Zer" on mollyrocket
|
||||||
|
@ -112,6 +113,7 @@
|
||||||
// Character advance/positioning
|
// Character advance/positioning
|
||||||
// stbtt_GetCodepointHMetrics()
|
// stbtt_GetCodepointHMetrics()
|
||||||
// stbtt_GetFontVMetrics()
|
// stbtt_GetFontVMetrics()
|
||||||
|
// stbtt_GetFontVMetricsOS2()
|
||||||
// stbtt_GetCodepointKernAdvance()
|
// stbtt_GetCodepointKernAdvance()
|
||||||
//
|
//
|
||||||
// Starting with version 1.06, the rasterizer was replaced with a new,
|
// Starting with version 1.06, the rasterizer was replaced with a new,
|
||||||
|
@ -729,6 +731,12 @@ STBTT_DEF void stbtt_GetFontVMetrics(const stbtt_fontinfo *info, int *ascent, in
|
||||||
// these are expressed in unscaled coordinates, so you must multiply by
|
// these are expressed in unscaled coordinates, so you must multiply by
|
||||||
// the scale factor for a given size
|
// the scale factor for a given size
|
||||||
|
|
||||||
|
STBTT_DEF int stbtt_GetFontVMetricsOS2(const stbtt_fontinfo *info, int *typoAscent, int *typoDescent, int *typoLineGap);
|
||||||
|
// analogous to GetFontVMetrics, but returns the "typographic" values from the OS/2
|
||||||
|
// table (specific to MS/Windows TTF files).
|
||||||
|
//
|
||||||
|
// Returns 1 on success (table present), 0 on failure.
|
||||||
|
|
||||||
STBTT_DEF void stbtt_GetFontBoundingBox(const stbtt_fontinfo *info, int *x0, int *y0, int *x1, int *y1);
|
STBTT_DEF void stbtt_GetFontBoundingBox(const stbtt_fontinfo *info, int *x0, int *y0, int *x1, int *y1);
|
||||||
// the bounding box around all possible characters
|
// the bounding box around all possible characters
|
||||||
|
|
||||||
|
@ -2278,6 +2286,17 @@ STBTT_DEF void stbtt_GetFontVMetrics(const stbtt_fontinfo *info, int *ascent, in
|
||||||
if (lineGap) *lineGap = ttSHORT(info->data+info->hhea + 8);
|
if (lineGap) *lineGap = ttSHORT(info->data+info->hhea + 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
STBTT_DEF int stbtt_GetFontVMetricsOS2(const stbtt_fontinfo *info, int *typoAscent, int *typoDescent, int *typoLineGap)
|
||||||
|
{
|
||||||
|
int tab = stbtt__find_table(info->data, info->fontstart, "OS/2");
|
||||||
|
if (!tab)
|
||||||
|
return 0;
|
||||||
|
if (typoAscent ) *typoAscent = ttSHORT(info->data+tab + 68);
|
||||||
|
if (typoDescent) *typoDescent = ttSHORT(info->data+tab + 70);
|
||||||
|
if (typoLineGap) *typoLineGap = ttSHORT(info->data+tab + 72);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
STBTT_DEF void stbtt_GetFontBoundingBox(const stbtt_fontinfo *info, int *x0, int *y0, int *x1, int *y1)
|
STBTT_DEF void stbtt_GetFontBoundingBox(const stbtt_fontinfo *info, int *x0, int *y0, int *x1, int *y1)
|
||||||
{
|
{
|
||||||
*x0 = ttSHORT(info->data + info->head + 36);
|
*x0 = ttSHORT(info->data + info->head + 36);
|
||||||
|
|
Loading…
Reference in New Issue